FS-DOC-03Operations
Process Runbook / SOP
SEO Content Production Workflow
[YourCompany.com] · Marketing Department · Prepared by FullSpec · [Today's Date]
This runbook is the day-to-day operating guide for the SEO Content Production Workflow. It tells your content team exactly what the automation handles, where human judgement is still required, and what to do when something goes wrong. FullSpec has built and tested every automated step described here. Your team's responsibility is the editorial decisions: topic approval, reviewing drafts, and marking articles ready to publish. Keep this document accessible to everyone who touches the content pipeline.
01Process overview
This workflow moves a keyword from approval to a live WordPress post without your team manually creating briefs, chasing drafts, running SEO checks, or entering metadata into the CMS. Three agents handle the mechanical steps around your editorial review. The content manager approves topics, reviews drafts, and gives the final publish signal. Everything else runs automatically in the background, keeping every article moving and giving you a live view of each article's status inside Notion at all times.
Process name
SEO Content Production Workflow
Trigger
A topic row in Notion is moved to 'Approved' status by the content manager or marketing lead
Final output
A scheduled or live WordPress post with all metadata populated, and the canonical URL written back to the Notion content calendar
Agents running
Brief Generation Agent, SEO Audit Agent, CMS Publishing Agent
Tools involved
Notion, Ahrefs, Google Docs, Surfer SEO, Slack, WordPress
Weekly volume
12 to 20 articles per month (approximately 3 to 5 per week)
Human checkpoint
Editorial review and draft approval (Content Manager marks row 'Approved for Publish' in Notion)
Process owner
[Your name] — Content Manager
Process Runbook / SOPPage 1 of 4
FS-DOC-03Operations
02Step-by-step: what happens and who acts
What you actually need to do: There is one human step in this workflow. After the SEO Audit Agent sends you the Surfer SEO scorecard via Slack, you open the Google Docs draft, read the article, leave any editorial comments, and either mark the Notion row 'Approved for Publish' or send it back to the writer for revisions. Every other step runs automatically. You do not need to create briefs, run SEO tools, or enter anything into WordPress.
Step
What happens
Who acts
Type
1
The content manager or marketing lead moves a topic row in Notion to 'Approved' status. This single action starts the entire production workflow for that article.
Content Manager
Human
2
The automation platform detects the Notion status change and triggers the Brief Generation Agent. The agent calls the Ahrefs API to pull keyword volume, difficulty, SERP data, and competitor URLs for the target keyword.
Brief Generation Agent
Automated
3
The agent assembles a fully structured content brief inside a standardised Google Docs template, populating the target keyword, secondary keywords, recommended headings, intent summary, suggested word count, and competitor reference URLs without any manual input.
Brief Generation Agent
Automated
4
The completed brief link is written back to the Notion article row and the row status is updated to 'Brief Ready', giving everyone a single source of truth for where that article sits.
Automation platform
Automated
5
A Slack direct message or channel post is sent to the assigned writer with the brief link, target word count, due date, and a prompt to confirm receipt. The writer works from the brief in Google Docs.
Automation platform
Automated
6
The writer completes the draft in Google Docs and moves the Notion row to 'Draft Ready'. This status change triggers the SEO Audit Agent.
Writer
Human
7
The SEO Audit Agent sends the Google Docs draft content to the Surfer SEO API, retrieves the content score and section-level recommendations, and logs the score against the Notion article row.
SEO Audit Agent
Automated
8
A Slack notification is sent to the content manager containing the draft link, the overall Surfer SEO score, and a list of any headings or paragraphs flagged as falling below the target threshold. No manual SEO check is needed.
SEO Audit Agent
Automated
9
The content manager reads the draft in Google Docs, reviews the SEO scorecard flags, leaves editorial comments, and decides whether the article is ready to publish. If revisions are needed, the writer is notified and resubmits. Once satisfied, the content manager marks the Notion row 'Approved for Publish'.
Content Manager
Human
10
The CMS Publishing Agent detects the 'Approved for Publish' status change and pushes the formatted content to WordPress via the REST API, populating meta title, meta description, slug, categories, tags, featured image URL, and scheduled publish date from the Notion record fields.
CMS Publishing Agent
Automated
11
After WordPress confirms the post is scheduled or live, the automation writes the canonical URL and actual publish date back to the Notion content calendar row and updates the status to 'Published'. The pipeline for that article is complete.
Automation platform
Automated
Process Runbook / SOPPage 2 of 4
FS-DOC-03Operations
03Handling exceptions
Situation
What the system does
What you do
A Notion article row is missing required fields (e.g. target keyword, assigned writer, or publish date) when it is moved to 'Approved'
The Brief Generation Agent cannot run without a target keyword. The automation halts and sends a Slack alert to the content manager naming the specific missing fields on the row.
Open the Notion row, fill in the missing fields, then move the status back to 'Approved' to restart the workflow. The agent will pick it up within a few minutes.
A duplicate topic row exists in Notion with the same keyword already in progress
The automation detects a matching keyword in a row that is already active (status between 'Brief Ready' and 'In Review') and sends a Slack alert flagging the possible duplicate before creating a second brief.
Check both rows. Archive or delete the duplicate, or update the keyword on one of the rows to differentiate the two articles. Re-approve the row you want to proceed if it was paused.
The Ahrefs API returns no data for the target keyword (keyword not found or quota exceeded)
The Brief Generation Agent logs the failure, updates the Notion row status to 'Brief Error', and sends a Slack alert with the error reason. No partial brief is created.
Check whether the keyword is valid in Ahrefs directly. If the monthly API quota is exhausted, wait until the next billing cycle resets it or contact FullSpec at support@gofullspec.com to review the quota cap setting. Re-approve the row when resolved.
The writer marks the draft 'Draft Ready' but the content manager does not review or act within 48 hours
The automation sends a reminder Slack message to the content manager at the 48-hour mark referencing the article title and draft link. A second reminder fires at 72 hours if still no action is taken.
Review the draft and either approve it or leave revision notes for the writer. If you are away, assign a delegate to handle approvals and update the process owner field in the contacts table in Section 04.
The CMS Publishing Agent fails to post to WordPress (e.g. the WordPress site is unavailable, REST API credentials have expired, or a plugin conflict blocks the API call)
The agent retries the publish action three times over 15 minutes. If all retries fail, it sends a Slack alert to the content manager with the article title and the specific error message, and updates the Notion row status to 'Publish Error'.
Check whether the WordPress site is reachable. If it is a credential issue, contact FullSpec at support@gofullspec.com with the error message from Slack. As a manual fallback, copy the approved Google Docs draft into WordPress directly, enter the meta fields from the Notion row, and publish. Update the Notion row to 'Published' manually and add the live URL.
Surfer SEO is unavailable or returns an error during the SEO audit step
The SEO Audit Agent retries the API call twice over 10 minutes. If the service remains unavailable, it sends a Slack alert to the content manager noting that the SEO score could not be retrieved, and passes the draft link through anyway so the review step is not blocked.
Review the draft without the automated scorecard. You can run Surfer SEO manually on the draft if you want the score before approving, or proceed to approval based on your editorial judgement. Log any recurring Surfer SEO outages with FullSpec so the retry window can be adjusted.
04Who to contact and when
Fill in the rows marked with placeholders once your team is confirmed. Update this table any time a team member changes role or leaves. FullSpec rows are fixed and do not change.
Role
Name
How to reach them
Content Manager (process owner)
[Your name]
[Your email or Slack handle]
SEO Lead
[Rep name]
[Rep email or Slack handle]
Marketing Director (escalation)
[Rep name]
[Rep email]
Freelance writer coordinator (if applicable)
[Rep name]
[Rep email or Slack handle]
FullSpec build team
FullSpec
support@gofullspec.com
FullSpec support (errors, outages, changes)
FullSpec Support
support@gofullspec.com
Process Runbook / SOPPage 3 of 4
FS-DOC-03Operations
05Ongoing maintenance
The automation runs without daily attention, but a small number of regular checks keep it accurate and reliable. The table below sets out who does what and when. Most of these tasks take less than 15 minutes.
Any time a Notion field name changes
Do not rename Notion fields that the agents read from (keyword, publish date, assigned writer, meta title, meta description, slug, categories, tags, featured image URL, status). If a field name must change, contact FullSpec at support@gofullspec.com before making the change so the agent configuration can be updated at the same time. Changing a field name without updating the agent will break the relevant step silently.
Content Manager + FullSpec
Any time the Google Docs brief template is updated
Notify FullSpec before changing the structure or field labels in the brief template. The Brief Generation Agent writes into specific named sections of that template. Adding or removing sections without updating the agent mapping will cause incomplete briefs.
Content Manager + FullSpec
Monthly (first week of each month)
Spot-check three to five recently published articles. Confirm the brief was generated correctly, the SEO score was logged in Notion, the WordPress metadata (meta title, meta description, slug, categories) is accurate, and the live URL is recorded in Notion. Flag any discrepancies to FullSpec.
Content Manager
Monthly (first week of each month)
Review the error log in Notion or the automation platform dashboard. Look for repeated failures on the same step, API quota warnings from Ahrefs, or recurring Surfer SEO timeouts. Share any patterns with FullSpec so the retry logic or quota caps can be adjusted.
Content Manager + FullSpec
Any time a team member joins, leaves, or changes role
Update the Slack channel or DM configuration for writer and editor notifications. If the assigned content manager changes, update the process owner contact in Section 04 and notify FullSpec so approval-reminder messages are routed to the correct person.
Content Manager
Quarterly (every three months)
Review monthly article volume against the Ahrefs API quota and the Surfer SEO plan limit. If volume has grown beyond the current plan thresholds, upgrade the relevant tool plan or contact FullSpec to adjust the monthly automation cap before it causes quota-exceeded errors.
Marketing Director + Content Manager
The single most common maintenance issue for this workflow is a broken Notion field name. When a field is renamed in Notion without updating the agent configuration, the CMS Publishing Agent silently maps an empty value to WordPress, resulting in posts published with missing meta titles, blank slugs, or no category. Always contact FullSpec at support@gofullspec.com before renaming any Notion field that appears in the process overview fields block above.
Process Runbook / SOPPage 4 of 4