Set up an AI employee for SEO research in nine steps: sort tasks, connect Search Console, add review gates, test the output and schedule the run.
Setting up AI for SEO research takes nine steps: sort the weekly research into hand-off and keep, pick one recurring job and a build path, connect the data sources, split the job into stages, add brand context, gate review, test the numbers against Keyword Planner and schedule the run.
- Sort the weekly research into hand-off and keep, pick one recurring job, and choose a build path.
- Connect Search Console, Google Ads Keyword Planner and a SERP source, split the job into stages, and add brand context.
- Gate review, test the numbers against Keyword Planner, and schedule the run. The finished handover is one recurring deliverable, such as a Monday keyword cluster sheet, plus a written keep list of the calls your team never delegates.
If you hire an AI employee for the job instead of building a pipeline, nobody on the team has to maintain code. Viktor is the AI employee who lives in Slack and Microsoft Teams, connects to 9,800+ tools, and does the work, and he waits for approval before he changes an account. Readers new to the category can start with what an AI employee is.
If you first want the definition and how an AI SEO agent differs from a classic SEO tool, read what an AI agent for SEO is. This guide covers the build.
What to have in place before the handover
A first run produces usable numbers only when the data access, written context and reviewer below exist before anyone assigns the job:
- Search Console access: The Search Console API overview requires the connecting account to have owner, full or read access to each property. The read-only scope
https://www.googleapis.com/auth/webmasters.readonlyis accepted by the Search Analytics query method, sites.list and URL Inspection. - Google Ads Keyword Planner: The Google Ads Help Center says billing information must be entered to use basic features like “Get ideas for new keywords.” For API access, the Google Ads access levels page says Explorer Access restricts KeywordPlanIdeaService, so the Cloud project needs Basic or Standard Access.
- A SERP data source: DataForSEO, SerpApi, Ahrefs and Semrush each run an official MCP server. DataForSEO and SerpApi return live SERP results. Ahrefs and Semrush return ranking data from their own keyword databases, and Ahrefs SERP Overview needs a Rank Tracker project.
- A brand style guide: A written document, not a set of habits in one editor’s head, so it can be loaded as context in Step 6.
- 3 to 5 example briefs: Past briefs your team approved and published, which show the expected depth and format.
- A named reviewer: One person who receives the deliverable each week and owns the topic decision.
Check your Ads account’s spend before Step 8. A Diamond Product Expert on the Google Ads Community wrote in November 2026 that accounts with no ad spend usually see wide ranges such as 1K to 10K instead of exact numbers, and Google publishes no spend threshold. If your account is low-spend, treat Keyword Planner figures as bands when you test.
How to set up an AI agent for SEO research: step by step
The setup runs from sorting tasks to scheduling the first run, and each step settles one decision before the next starts. Sort the tasks, pick one job, connect the data, add context, gate review, test, then schedule.
Step 1: Sort your weekly SEO research into hand off and keep
Keyword pulls, index audits, rank checks and competitor gap tables go to the AI employee; positioning, topic picks and publish decisions stay with your team.
Many marketers already hand off part of this: in a Content Marketing Institute study, 43% of technology marketers using AI for content said they use generative AI to research headlines and keywords. Accuracy is the limit: over half of professionals in Search Engine Journal’s PPC Trends 2026 report named inaccurate, unreliable or inconsistent output as the biggest limitation.
Use this split for a typical week:
Task | Hand off or keep | Why |
|---|---|---|
Search Console query and page pull | Hand off | Each Search Analytics row returns clicks, impressions, CTR and position, so the output is checkable line by line. |
Keyword volume and competition pull | Hand off | GenerateKeywordHistoricalMetrics returns volume, competition and bid metrics for up to 10,000 keywords. |
Rank and SERP feature snapshot | Hand off | The DataForSEO SERP API returns organic results, ads and SERP features as parsed JSON. |
Index status audit | Hand off | URL Inspection reports the indexed version of each URL. |
Competitor gap table | Hand off, review the output | Semrush keyword reports list domains in Google’s top 100 for a keyword; the response to a gap is a strategy call. |
Entity check on ranking pages | Hand off | The Natural Language API returns entities with salience scores. |
Brief drafts | Hand off the draft, keep approval | Drafts follow your examples; approval stays with the reviewer. |
Positioning and topic priority | Keep | Search Engine Land notes AI “can’t make strategic decisions.” |
Ambiguous intent calls and publishing | Keep | These need customer knowledge and a person’s sign-off. |
Apply one rule to anything not on the list. Search Engine Land’s automation guide advises picking tasks where the final output is easy to verify, so hand off a task when its output can be checked against an API response, and keep it when checking requires knowing your customer.
Step 2: Pick one job and define the deliverable
The Monday keyword cluster sheet is a good first job: one spreadsheet, one cadence, one recipient. Write the spec before the first run:
- Format: An Excel or Google Sheets file with columns for query, page, clicks, impressions, CTR, position, average monthly searches, competition, cluster and a gap flag.
- Date window: End the window three days before the run date, because Google’s performance data guide says data is typically available after 2 to 3 days.
- Cadence and delivery: Every Monday morning, posted in the SEO channel thread.
- Recipient: The named reviewer from the prerequisites.
Scoping too broad is the common failure here. A request such as “handle our SEO research” gives no format to check against and no single owner for the result. Start with one sheet, run it for a few weeks, and add the audit or the gap table as a second job once the first one holds.
Step 3: Choose the build path
Viktor, custom code, n8n, Gumloop and Obot differ mostly in who writes and maintains the logic. Compare them on setup, upkeep and ownership:
Path | Setup | Upkeep | Who maintains the logic |
|---|---|---|---|
Viktor, the AI employee | Describe the job in a DM, an @Viktor mention, or the web app at app.viktor.com; Discord teams can run him in their server. No workflow to build or deploy. | Viktor runs on his own cloud computer; your team edits his skills when the job changes. | Viktor, following written skills your team can inspect and edit. |
Custom code with function calling | Define each tool as a name, description and JSON schema, then run the request, tool call and tool result loop described in Claude’s tool use docs or OpenAI’s function calling guide. | Your team handles OAuth tokens and API versions; Google released Google Ads API v26 on 2026-10-14, and earlier major versions are marked deprecated when a new one ships. | Your developers. |
n8n | n8n’s node docs list no standalone Search Console node; its template connects through Google OAuth 2.0 credentials, and the HTTP Request node covers missing operations. | Self-hosted Community edition or n8n Cloud. | Whoever builds the workflow. |
Gumloop | Visual canvas with Search Console and Google Ads MCP connectors. | Hosted by Gumloop; Gumloop’s pricing page lists no self-hosted option. | Whoever builds the workflow. |
Obot (obot.ai) | Open-source, MIT-licensed MCP gateway that controls which servers the logic can reach and audits calls. | Obot’s enterprise guide documents self-hosting on Kubernetes and managed cloud. | Obot’s framework guide assigns building and running the logic to a separate agent framework. |
Choose Viktor when nobody on the marketing team should own pipeline code and the deliverable needs to arrive in Slack or Teams. Choose custom code when an engineer will own the build long term, and n8n or Gumloop when you want a fixed, rule-based workflow with every step drawn on a canvas.
Step 4: Connect the data sources
The Monday job needs four connections: Search Console, the Google Ads API, the Natural Language API and a SERP source. Viktor connects to 9,800+ tools, most in one click, and Google Ads is among them. If a tool you need isn’t listed but has an API or MCP server, he can usually build the connection himself.
Each connection can be shared with the workspace or kept private to the person who connected it. A gateway adds API keys and tokens at run time, so the model never reads them.
Read-only scopes are the gotcha here:
- Google’s authorization docs list Search Console’s
webmasters.readonlyscope for read-only access andwebmastersfor read/write; research needs only the first. - Ad connectors carry write access too: Gumloop’s Google Ads connector can update campaigns and budgets.
- In Viktor, an admin can set Google Ads tools to “needs approval” or “forbidden” so a research job never edits a campaign.
Connect Search Console with the read-only scope first, then add Ads with write tools gated before the first run.
Step 5: Split the job into stages
The Monday sheet comes from three stages, each with its own input and output, so a bad number traces back to one stage:
Stage | What happens | Data source | Output |
|---|---|---|---|
Search | Pull last week’s queries and pages, keyword volumes and the top SERP results | Search Console, Keyword Planner API, SERP API | Raw tables saved before any analysis |
Analysis | Cluster queries, flag gaps against competitors, check entity salience on ranking pages | Raw tables, Natural Language API | Cluster sheet with gap flags |
Outline | Draft a brief for each cluster the reviewer approves | Cluster sheet, style guide, example briefs | Brief drafts for review |
A custom build needs three layers to run those stages:
- Orchestrator: Anthropic’s docs describe the loop that sends a request, receives tool calls and returns results, repeating while Claude’s
stop_reasonis"tool_use". - Tool layer: Function definitions or MCP servers for each data source; Claude’s MCP connector and OpenAI’s
mcptool type both call remote MCP servers. - Data store: A sheet or database holding each week’s raw pulls, so analysis compares against last week instead of re-querying. Google’s usage limits page advises against re-querying the same data and says queries grouped by both page and query string are the most expensive.
With Viktor, write the three stages into the skill for the job. He plans the run, writes and runs code on his own cloud computer, and returns the sheet in the thread. Keep the raw tables as a separate tab either way so Step 8 has something to check against.
Step 6: Give him your brand context and examples
The style guide, the 3 to 5 approved briefs and your ICP notes become the job’s reference material. Viktor keeps team context, decisions and preferences in workspace memory across conversations in Slack and Teams, and he follows skills: written procedures your team can browse, edit, share and run with “/” in the chat composer.
The fastest way to write the skill is to show him once.
- Screen-record yourself building last Monday’s sheet and briefing one cluster, narrating why you dropped certain queries.
- Viktor turns the recording into a written skill you can open and correct, so the reasoning lives in a document instead of one editor’s head.
Open the generated skill and correct any step he got wrong before the first live run. Follow the Viktor Academy guides to set up a first skill →
Step 7: Set review gates before anything ships
Admins decide which actions can leave the thread without a person’s click. Before sensitive actions, Viktor posts approval cards in Slack or Microsoft Teams with Approve and Reject buttons, and a rejected action never runs. Money moves, code pushes and customer emails wait for explicit approval in Slack, and admins can require approval for any other integration tool.
Apply that to SEO publishing:
- CMS and publishing tools: Set them to “needs approval,” or “forbidden” if briefs should never reach the CMS from this job.
- Revert path: Keep the deliverable as a file or doc in the thread, so nothing publishes from this job while CMS tools are set to “needs approval” or “forbidden”. Site changes go through a pull request on GitHub or Bitbucket, which the team reviews and can close.
- Topic pick: The named reviewer chooses which clusters get briefs. Viktor drafts only the approved ones.
Write the reviewer’s name into the skill so the sheet always lands with the person who decides.
Step 8: Test the output against ground truth
Ground truth for volumes is the API response, never a number the model writes. Google’s guidance on generative AI content says “generative models don’t retrieve facts, but predict a likely sequence of words based on their training data.” Keyword Planner is itself an estimate: an Ahrefs study of 72k keywords (vendor-run, November 2021) reported that 54.28% of Keyword Planner volumes overestimated Search Console impressions.
Run these checks on the first few weeks of output:
- Volume match: Every volume in the sheet matches the raw API row for that keyword.
- SERP claims: Spot-check a sample of “competitor ranks for X” claims against a live SERP pull.
- Error rate: Divide mismatched rows by total rows each run and log the result.
For custom builds, W and B Weave runs evaluations with scorers; the documented example scorer compares model output with the expected value in a dataset row. Weave also traces inputs, outputs, latency and token usage per call. Compute the rate from scorer output. With Viktor, the Activity view shows credit use by person and task, and Enterprise audit logs include integration tool calls.
Move to a schedule only after the error rate holds steady across several runs.
Step 9: Turn it into a scheduled task
The tested job becomes a scheduled task written in plain English, for example: “Every Monday at 9am, pull last week’s Search Console queries for our site, add Keyword Planner volumes, cluster them, flag gaps against our three main competitors, and post the sheet in the SEO channel thread.” Viktor runs it on that schedule in Slack or Microsoft Teams and posts the sheet in the thread.
If the job started from a screen recording, Viktor proposes the scheduled task and it stays paused until someone approves it. Each scheduled task shows the time it saved and its credit cost, which gives the reviewer a weekly read on whether the job pays for itself.
Hand Viktor the Monday keyword pull with up to $100 in credits, no credit card →
What SEO research to keep in human hands
Positioning, ambiguous intent calls, first-hand expertise, final prioritization and publish decisions stay with your team, because each depends on knowledge or accountability an API response does not contain:
- Positioning: Which topics the brand should own depends on product strategy and customer insight. Search Engine Land’s competitor analysis guide says AI can organize and summarize data quickly but cannot make the strategic decision.
- Ambiguous intent calls: A query that could mean a product search or a how-to needs someone who talks to customers. The sheet can flag the ambiguity; a person decides which page serves it.
- First-hand expertise: Google’s helpful content guidance asks whether content demonstrates first-hand expertise, such as having used a product or visited a place, and treats fabricated creator profiles as deception.
- Final prioritization: Gartner says the most effective organizations “will resist the temptation to automate every task and delegate every decision to AI.”
- Publish decisions: Google’s generative AI guidance says “It is critical to manually factcheck and review all AI-generated content for accuracy and trustworthiness before publishing,” including titles, meta descriptions and structured data.
Write these five items into the skill as the keep list, so Viktor stops at the draft and the gap flag and hands the decision to the reviewer.
What it costs to build versus hire
A custom build costs LLM tokens, data API fees and the upkeep hours your team spends on it, while hiring Viktor costs shared workspace credits. Data fees apply on both paths whenever a paid SERP source is connected.
Building it yourself
Data and model costs come from each vendor’s own page (pricing checked November 2026):
- Search Console API: Google’s pricing page lists free use, subject to usage limits.
- Natural Language API: The Cloud Natural Language pricing page lists Entity Analysis as free for the first 5,000 units a month, then $1.00 per 1,000-character unit up to 1,000,000 units.
- DataForSEO: The DataForSEO pricing page lists Google Organic SERPs at $0.0006 per SERP in the standard queue and $0.002 per SERP in live mode.
- SerpApi: The SerpApi pricing page lists the Starter plan at $25 per month for 1,000 searches.
- LLM tokens: Billed per million input and output tokens; OpenAI and Anthropic both list a 50% discount for batch processing.
Include upkeep hours: OAuth refreshes, API version changes and fixes when a run fails. As an illustration, not a benchmark, estimate a weekly cost from your own numbers: (SERPs pulled per week × your provider’s per-SERP rate) + (tokens per run × your model’s rate) + (upkeep hours per week × your loaded hourly cost).
Hiring Viktor
Viktor’s pricing is usage-based, with shared workspace credits and no per-seat fee.
He’s free to start with up to $100 in credits and no credit card, and the Team plan is $100 a month for 40,000 credits for the whole workspace, with unused credits rolling over to the next month (pricing checked November 2026).
Confirm current plans on the pricing page before budgeting. Spend limits and auto top-ups with a monthly cap keep the SEO job inside a budget.
Hampton avoided $440K in planned hires, and in 44 days Viktor connected 24 tools, took over reporting, produced 12 dashboards and took on 26 recurring jobs per week. That is Hampton’s result, not a typical saving. Read Hampton’s story to see how Viktor took on 26 recurring jobs a week in 44 days →
Agencies rolling the job out across client accounts can talk to the Viktor team about onboarding, security review and spend controls →
Troubleshooting
Stale or invented volumes, off-brand briefs, cost spikes and broken API auth are the failures to expect in this job. Each has one fix:
Problem | Cause | Fix |
|---|---|---|
Stale or invented search volumes | The model wrote a number instead of copying it; Search Engine Land notes ChatGPT “can only guess at numbers like monthly search volume and keyword difficulty.” | Require every volume to come from the raw API tab, and fail the run when a sheet value has no matching row. |
Off-brand briefs | The skill lacks examples or the style guide. | Edit the skill to load the approved example briefs and the style guide before the outline stage. |
Token or credit cost spikes | Wide date ranges and repeated pulls send more rows through each run; Google’s usage limits page says queries grouped by both page and query string carry the heaviest load. | Query one day at a time and store results, as Google’s performance data guide recommends; in Viktor, set a spend limit with a monthly cap. |
Refresh token expires after a week | Google Ads API common errors identifies an external OAuth consent screen in “Testing” status as a cause of refresh tokens expiring in 7 days. | Change the publishing status to “In production” on the OAuth consent screen. |
CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION | The developer token page documents this error for Cloud projects with only Test access after developer tokens were sunset on September 9, 2026. | Apply for Basic or Standard Access from the project’s Google Ads API Overview page. |
Check the auth rows first when a scheduled run that worked last week returns nothing.
FAQ
The Monday keyword sheet needs connected data, brand context and a named reviewer before it runs on a schedule.
How is this different from prompting ChatGPT?
Without a data connection, ChatGPT guesses keyword volumes. ChatGPT works for you. Viktor works for your company. He pulls the numbers from Search Console and Keyword Planner, keeps the team’s context in workspace memory, runs the job on a schedule, and posts the finished sheet where the whole team can see it.
Which SEO APIs connect?
The Search Console API, the Google Ads API’s KeywordPlanIdeaService and the Natural Language API provide search performance, keyword planning and text analysis. For SERPs, DataForSEO, SerpApi, Ahrefs and Semrush each publish an official MCP server; Ahrefs MCP requires a Lite plan or higher.
Can you build this in n8n or Gumloop without code?
Yes, for part of it. n8n’s Google Ads node lists only “Get all campaigns” and “Get a campaign,” so Keyword Planner and Search Console calls go through the HTTP Request node with OAuth credentials, which means writing API requests by hand. Gumloop has a Search Console MCP connector, but its Google Ads connector page does not mention Keyword Planner.
How do you add brand voice?
Load the style guide and approved briefs into the skill for the job, then correct the first drafts in the thread. Viktor keeps those corrections in workspace memory, so later briefs start from the edited version.
Can you review or revert what he produces?
Yes, the sheet and briefs arrive as files in the thread, and when admins set CMS and publishing tools to “needs approval,” nothing publishes until someone approves it on an approval card. Changes to a site repository arrive as a pull request the team can review or close.
Should you build or buy?
Hire Viktor when the marketing team wants the Monday sheet without owning code, and check his current plans and shared credits → against the upkeep hours a custom build would take. Build when an engineer will own the pipeline, its OAuth tokens and its API version upgrades for the long term.
Start with the Monday keyword cluster sheet, write the keep list into his skill, and approve the scheduled task once the volumes match. Hire your first AI employee with up to $100 in credits, no credit card →