Automated SEO reports assembled in one run
Once a month someone has to pull the same tables for every client: which keywords and pages earned clicks, how organic reach moved, which articles went live, and whether the links you placed on other sites are still there. This n8n workflow pulls all of it in one run and writes it into the client's report spreadsheet.
It is 38 nodes, run by hand when the report is due. The strategist still writes the commentary, and the setup for each run takes a few minutes of editing dates and links.
Why the monthly SEO report eats a week
The data behind a monthly SEO report lives in several places: Search Console for keywords and pages, Google Analytics for reach, a tracking sheet for the articles you published, and the pages where your links were placed. Each one means an export, a paste and a round of reformatting.
Across several retainers that adds up to days every month spent moving numbers rather than reading them. Most of it is identical from month to month, which is what makes it worth automating.
What each run produces
The workflow fills six sections of the report sheet:
Section | Where the data comes from |
|---|---|
Keyword ranking | Search Console queries, up to 1,000 rows, with clicks, impressions, CTR and position |
Page ranking | Search Console pages, in the same shape |
Organic reach | Google Analytics organic search clicks and impressions by day, with totals and averages |
Internal articles | Each published article fetched live for its title, date and main keyword |
External articles | Each article carrying your link fetched live, with every link, its anchor text and its rel attribute |
Position changes | The largest gains and drops, copied from the data sheet |
Numbers are converted to the decimal comma format the client's sheet expects before they are written, so the tables paste cleanly into the rest of the report.
Checking the links you placed
The external articles section is the one that saves the most judgement. For each article that should link to the client, the workflow fetches the live page, lists every link on it with its anchor text and whether it is nofollow, and has GPT-4o arrange that into rows for the report.
That shows at a glance whether a link still exists and whether it passes value. For links that need watching every day rather than once a month, backlink monitoring runs continuously and alerts when one changes.
The manual part, stated plainly
This is a semi-automated SEO client report, and the manual steps are part of the design. Before each run, someone:
- Sets the date range in the Search Console and Analytics steps
- Points the workflow at that client's report spreadsheet
- Adds the month's article URLs and external placements to the data sheet
- Adds monthly search volume for the internal articles by hand
- Adds the position gains and drops to the data sheet
Those inputs change every month and are quicker to set than to automate. Once they are in, the run itself takes minutes, and commentary on what the numbers mean is written by a person afterwards.
When a spreadsheet report is the right shape
It fits a practice that reports monthly to several clients from a stable SEO report template in Google Sheets, and tracks both published articles and placed links. The template stays the same between clients; only the data sheet and the dates change.
It is the wrong tool if the client wants AI search reporting, or a weekly read on what changed and why. That is what the AI Overview tracking report was built for. And it doesn't write commentary, on purpose.
SEO reporting automation costs
The Google APIs are free at this volume, and the only paid step is one GPT-4o call per external article, plus n8n hosting.
Reporting is covered by execution capacity at a flat $2,000 a month for the agents route, as an add-on to a fractional Head of Content retainer. Setting it up for a new client takes a day or two: connecting their properties and mapping their sheet.
Start with last month's report
Send a recent monthly report you've sent a client. We'll map its tables to the six sections on a call and show you which parts the run would fill.
Case studies built on this
Strada
How Strada grew from 10 to 70 daily visitors in 6 months – in one of the narrowest B2B niches online
Read case study →
Reply.io
How Reply.io grew from 15,000 to 50,000 monthly organic sessions in 9 months
Read case study →
busyless
How we built busyless.space with Claude Code – in 4 weeks of evening sessions
Read case study →
Related automations
SEO competitor research
For every keyword in the plan, pull who ranks, how long their articles run, the search intent, secondary keywords and Reddit quotes, then hold the row for approval.
Read the build →
SEO content automation
An n8n + GPT workflow that takes a keyword + product, analyzes the SERP, builds the article structure from what's ranking, and ships a full draft into a Google Doc.
Read the build →
SEO content refresh
An n8n + GPT workflow that takes an old blog post, checks the current SERP, and rewrites only the sections that fell behind what now ranks.
Read the build →