Track SEO performance after automating content

I automate parts of my content workflow with n8n so I can publish more without turning it into a mess. The setup starts in a Google Sheet, runs research, drafts posts, creates images and writes the result back to the sheet ready for review. The point is repeatable output I can actually test.

Start with one Google Sheet as the control panel. I use columns for topic, seedkeyword, intentnote, title, slug, draft, imageurl, publishurl, status and lastchecked. Keep the sheet tidy. Start with five topics, not fifty. In n8n I trigger the workflow on a schedule or from a webhook that reads one row at a time. The first nodes run SERP research. I call a search API or a scraping node to pull top results, headings and common questions. I save those raw snippets back to the sheet under intentnote. Then I run keyword extraction. I pass the topic, seed keyword and intent_note into a prompt template that asks the model for an outline with H2 headings, a meta description and a target word count, usually 1,200 to 1,800 words for organic content. For content generation I use an LLM node, either OpenAI-compatible or OpenRouter for Claude Sonnet 4.5, with direct instructions: neutral tone, include the target keyword a set number of times, use natural language, produce at least 1,200 words. I keep the temperature low, around 0.2 to 0.4, so the output stays consistent. The raw draft goes into the draft column.

After that I run a human check and a bit of quality control. I use a second pass to enforce structure: intro under 60 words, at least three H2s, a conclusion that restates the intent without repeating itself, and a reading grade check. A grammar node clears up the obvious mistakes. I also run an AI-detection node or a human-readability filter to catch anything that reads too robotic. If it fails, I set status to needsedit and stop there. If it passes, I call an image generator or an image prompt node and upload to ImgBB or another host. The returned image URL goes in imageurl. Then I build the slug and SEO meta fields. A slugify node handles the title. A small function node checks title length and meta description length against the usual limits: title 50 to 60 characters, meta 120 to 155 characters. The final draft goes to an output row. I keep publishing separate until I have done a quick human spot-check.

Track the results in the sheet. I add fields for impressions, clicks, avgposition, pageviews and published_date. The workflow pulls those numbers daily from Google Search Console and GA4 APIs. I keep the change over time visible in the sheet so I can see which pages are moving and which ones are just sitting there. The first four weeks are the test window. Look for CTR and ranking movement. If average position improves and clicks grow, the draft is doing its job. If a page gets impressions but low CTR, rewrite the title and meta description, then republish. If a page gets clicks but no time on page, fix the structure and add internal links.

Make small changes and keep track of them. I run batches of five to ten posts per run, then check results for one to four weeks. For title tests, I create two candidates in the sheet and run one for two weeks before swapping to the other. The data columns show which version had better CTR. For prompts, I keep version history so I can see which one produced the best performance. Small prompt changes do make a difference over time. When a change clearly improves the numbers, I copy that prompt into the template for future runs.

Automation is for the grunt work, not the judgement. I automate research, first drafts, image creation, basic SEO fields and metric collection. I do not automate final editorial sign-off until the draft passes the structure and readability checks. That part matters for accuracy and tone. If you publish blindly, you save time and waste traffic. If you keep a tight loop, you cut the waste and keep the useful bits.

Useful settings that save time: keep temperature low for drafting, set a minimum word count for long-form pieces, and use clear prompt instructions for the terms you want covered and the common search questions you expect to answer. Keep one publishstatus column with values like draft, needsedit, ready, scheduled and live. Use that field as the gate between automation and publishing. Run the workflow daily for new rows and weekly for metric pulls. Start small and measure.

The end result is a repeatable pipeline where Google Sheets stays the source of truth, n8n does the repetitive work, and I spend my time on the edits that matter. I track impressions, clicks and average position for the first month, adjust titles and prompts, and keep the formats that show clear gains. Once the pipeline is stable, the human work per article drops to under an hour.

Related posts

Agentic AI still needs domain judgement

Agentic AI can write the thing, but it still cannot tell you whether the thing is right. That is where domain expertise matters, because a clean config or neat bit of glue logic can still be wrong in...

Weekly Tech Digest | 06 Jul 2026

Stay updated with the latest in tech! This digest covers AI ethics, auto industry shifts, and the impact of politics on technology, exploring today's pressing issues.

wolfCOSE zero-allocation parsing in embedded C

wolfCOSE looks sensible only if you care about what your firmware actually has to carry. I like that, because on small targets the wrong crypto feature can cost more than the message itself, and there...