Agencies · SEO content
MixedMarketing agenciesAn SEO content pipeline from keyword gap to ranking, per client
Most agency SEO work stalls between the keyword spreadsheet and the published page. This setup keeps one table from gap to ranking, with an editor approving every draft and a dashboard that shows output and positions together.
Valnora & Elric team6 min read
Pipeline, latest keywords
| Keyword | Volume | Stage | Position | Status |
|---|---|---|---|---|
| cold brew concentrate ratio | 2,900 | Published | 7 | Ranking |
| best coffee for moka pot | 1,600 | Published | 14 | Climbing |
| single origin vs blend | 880 | Draft | – | With editor |
| how to store coffee beans | 4,400 | Brief | – | In progress |
| decaf process explained | 720 | Published | 23 | Dropped |
1 table
From keyword gap to ranking
Every stage is a status on the same row. Illustrative setup.
100%
Drafts approved by an editor
Nothing reaches the CMS without a person’s approval.
3 days
Example editor turnaround target
Illustrative; the tile turns amber after it.
Illustrative example. Figures show how the workflow is measured; they are not customer results.
Agency SEO work usually lives in four places. Keyword research in a spreadsheet, briefs in documents, drafts in someone’s editor, rankings in a tool the client never opens. Each hand-off loses something: the reason a keyword was chosen, the product fact the writer needed, the date the page went live.
This post walks through a setup in Agent Serve that keeps one row per keyword from the gap to the ranking, with an editor approving every draft and a dashboard that shows output and positions side by side. The client, keywords and figures are illustrative.
Keyword gaps go into a table
Workflow 1 runs every Monday on a schedule. It uses the Semrush or Ahrefs block, both read-only, to pull organic keywords for the client’s domain and for three competitors the client agreed on. An Agent block compares the lists and keeps keywords where competitors rank in the top 20 and the client does not rank at all.
Each gap becomes a row in a keyword table in Tables: keyword, monthly volume, difficulty, which competitor ranks and at what position, a topic cluster, and a stage that starts at New. Rows already in the table are updated rather than duplicated, so the table grows into a running list instead of a weekly dump.
The strategist reviews the new rows in the table, sets the stage of the ones worth writing to Brief, and leaves the rest. That choice stays with a person: volume alone does not tell you whether a keyword fits the client’s products.
Briefs and drafts come from the client’s own facts
From keyword gap to tracked ranking
Workflow 1 · Find gaps
- 01Weekly scheduleRuns each Monday for every client workspace.
- 02Semrush or AhrefsOrganic keywords for the client and three competitors, from read-only reports.
- 03Keyword tableKeywords competitors rank for and the client does not, with volume and difficulty.
Workflow 2 · Brief, draft, approve
- 04Client knowledge baseBrand guide, product facts, banned claims and existing pages.
- 05Brief then draftWrites a brief for the chosen keyword, then a draft that cites product facts.
- 06Editor approvalA Human in the loop step: approve, return with notes, or reject.
- 07WordPress or WebflowApproved drafts are created in the client’s CMS for a final look.
Dashboard · Output and rankings
- 08Rankings tableA weekly pull of positions for every published keyword.
- 09SEO dashboardPipeline counts, positions over time and pages that moved.
- 10Ranking drop monitorAlerts the strategist when a tracked page falls out of the top 10.
Workflow 2 starts when a row moves to Brief. It searches the client’s Knowledge Base for the brand guide, product facts, banned claims and the pages the client already has. Then an Agent block writes a brief: the search intent, what the top pages cover, the angle for this client, what must and must not be said, and which existing pages to link.
What the solution produces
Brief for one keyword (illustrative)
Record- Keyword
- how to store coffee beans · 4,400 searches a month · difficulty 38
- Who ranks
- Two competitors in the top 5 with 1,200 to 1,600 word guides.
- Angle
- Storage by roast date and grind, using Northleaf’s valve bags as the example.
- Must include
- Roast date on every bag; no claim that beans "stay fresh for a year".
- Internal links
- Grinder guide, subscription page, moka pot guide
- Source
- Brand guide v3 and product sheet, client knowledge base
When the strategist approves the brief, the same workflow writes a draft against it. The draft cites product facts from the knowledge base rather than inventing them, and it uses the client’s tone of voice notes. If the knowledge base has no answer for something the draft needs, such as a shelf-life figure, the draft marks a gap for the editor instead of filling it with a guess.
The editor approves before the CMS
A Human in the loop block pauses the run and sends the editor the brief, the draft and the banned-claims list. The editor can approve, return it with notes, or reject it. Returned drafts go back to the writer step with the notes attached; rejected ones move the row to Dropped with a reason.
Only an approved draft continues. The WordPress block creates a post, or the Webflow block creates a CMS item, on the client’s site. Most agencies create it as a draft or unpublished item, so the client can see it in their own CMS before it goes live. The row moves to Published with the URL and date.
Rankings close the loop
A second scheduled workflow pulls positions each week for every published keyword from Semrush or Ahrefs and writes them into a rankings table, one row per keyword per week. The dashboard panels read both tables, and update as new rows land:
- Tiles for open gaps, drafts waiting for the editor, pages published this quarter, and pages in the top 10.
- A trend line of published pages against pages in the top 10, by week. The gap between the lines is the lag between publishing and ranking.
- A pipeline table with each keyword’s stage and latest position, so the client can see what is in progress, not only what ranked.
How to measure it
1 table
From keyword gap to ranking
Every stage is a status on the same row. Illustrative setup.
100%
Drafts approved by an editor
Nothing reaches the CMS without a person’s approval.
3 days
Example editor turnaround target
Illustrative; the tile turns amber after it.
Illustrative example. Figures show how the workflow is measured; they are not customer results.
Alerts and a weekly note
A monitor watches the rankings and alerts the strategist by email, in the app or in Slack when a tracked page falls out of the top 10. Monitors re-check as often as every 5 minutes, but rankings only change when the weekly pull lands.
For commentary, a Relay runs each Friday on a schedule. It reads the keyword and rankings tables, writes three or four lines on what moved and why it might have moved, and leaves them in the strategist’s chat. Relays read tables but do not write rows, and any email they draft needs approval, so the note reaches the client only after the strategist edits it into the scheduled report.
Per-client setup
Run each client in their own workspace, with their own Semrush or Ahrefs connection, knowledge base and CMS access. Workflows run from a deployed version, so a change to the brief template is reviewed before it reaches every client. For the wider reporting rhythm, see client reporting dashboards.
Controls and governance
Run logs
Every workflow run records each block’s inputs, outputs and errors, so a reviewer can trace how a result was reached.
Deployed versions
Workflows run from a deployed version, so a change is reviewed before it reaches production runs.
Roles and permission groups
Admin, write and read roles per workspace, plus permission groups that limit which models, blocks and integrations a team can use.
Row-level access
Row-level policies narrow what each person sees in tables, dashboards, exports and scheduled reports.
Audit trail
Proposals, approvals, declines and executed actions are written to the workspace audit log, which admins can export.
Bring your own keys
Use your organisation’s own model provider keys at organisation or workspace level.
More on how Agent Serve handles access, data and audit on the security page.
What you need
- A Semrush or Ahrefs account with API access, connected in each client’s workspace
- A list of three competitors per client, agreed with the client
- A client knowledge base with the brand guide, product facts and a banned-claims page
- WordPress or Webflow access for the client site, with a role that can create posts or CMS items
- A named editor per client who approves every draft
Questions teams ask
Does the pipeline publish straight to the live site?
Only after an editor approves the draft in the Human in the loop step. Many agencies then create the post as a draft in WordPress or an unpublished CMS item in Webflow, so the client sees it in their own CMS before it goes live.
Can Semrush or Ahrefs change anything in the client’s accounts?
No. Both blocks read reports only: organic and paid keywords, competitors, backlinks and top pages.
How do clients see the dashboard?
Through a scheduled report sent weekly or monthly as a PDF, PNG or link. Row-level access keeps each client to their own rows if you run one dashboard across clients.