Skip to content

Automated SEO reports for client retainers

A monthly n8n run that pulls Search Console tables, GA4 organic reach, and live checks of published articles and placed links into the client's report sheet.

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:

  1. Sets the date range in the Search Console and Analytics steps
  2. Points the workflow at that client's report spreadsheet
  3. Adds the month's article URLs and external placements to the data sheet
  4. Adds monthly search volume for the internal articles by hand
  5. 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.

Want this built for your team?

Book a call and walk through what we'd adapt for your stack.