Claude Code SEO Content Briefs from the Live Google Top 10
Give Claude Code a keyword and one Apify Actor run, the Google Search Scraper with its Full website content add-on, returns the live top 10 with the full text of every ranking page, plus People Also Ask and related searches. Claude then pulls out each page's H2s and word count and writes a brief in your template: what every ranking page covers, which questions the SERP asks, and what the top pages miss. Our test run for one keyword took about two minutes and cost $0.048.
Most "AI content brief" tools work from the same raw material: the current top results for a keyword. You can get that raw material yourself, hand it to Claude Code, and keep the output in your own template and your own repo. This post shows the whole loop, including a real run for the keyword "content brief template" and what it turned up.
Let Claude Code set it up for you
Paste this into Claude Code, from the folder where you keep your content work. Claude asks for the keyword, the country and your brief template, connects Apify if it is not connected yet, shows you the cost before it runs anything, and saves the brief as a Markdown file.
Claude interviews you, checks the Apify connection, confirms the cost, runs one SERP fetch and writes the brief to a file.
- Asks for the keyword, the country and language, and your brief template, one question at a time
- Checks the Apify MCP server is connected, and adds it at project scope if you agree
- Shows the expected cost and waits for your go-ahead
- Runs one Google Search Scraper call with full page content and writes briefs/<keyword>.md
Help me build an SEO content brief from the live Google top 10, using the
Apify MCP server. Work through these steps in order and do not skip ahead.
1. Interview me, one question at a time:
- the target keyword
- the Google country code (for example "us", "gb", "de") and language
- my brief template: I will paste it, or say "use yours" and you will use
the default sections listed in step 5
- anything the brief must respect (brand, product, audience, banned claims)
2. Check whether an MCP server named "apify" is connected (run `claude mcp list`).
If it is not, propose adding it at project scope with:
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch-actor-details,call-actor" --scope project
Then tell me to run /mcp to sign in to Apify with OAuth, and wait until I
confirm.
3. Use fetch-actor-details on apify/google-search-scraper and confirm the input
fields queries, countryCode, searchLanguage, maxPagesPerQuery and
websiteContentScraper.enable exist. Tell me the expected cost: one
"search-page-scraped" event plus one "website-content-scraped" event per
ranking page fetched (about 10), at the prices for my plan shown on the
Actor's pricing tab. Wait for my go-ahead.
4. Run call-actor on apify/google-search-scraper with:
{"queries": "<keyword>", "countryCode": "<country>", "searchLanguage": "<lang>",
"maxPagesPerQuery": 1, "websiteContentScraper": {"enable": true}}
and callOptions.maxTotalChargeUsd set to 0.25. Read the results with
get-dataset-items. The item is large, so read it in pieces if needed.
Then check the real cost with get-actor-run and tell me.
5. Analyse the data and write the brief:
- For each organic result: position, domain, page type (article, template
gallery, tool page, forum, video), word count of websiteContent.text, and
the H2s from websiteContent.markdown.
- Mark any page with under 300 words of text as "thin fetch, not comparable"
instead of treating it as a short page.
- Dominant intent, and whether the SERP is mixed.
- People Also Ask questions and related searches, each mapped to a section
of the brief.
- Table stakes: subtopics covered by 3 or more ranking pages.
- Gaps: subtopics, questions or formats that 0 or 1 ranking pages cover.
For every gap, name the evidence (which pages you checked, which terms).
- Suggested H2 outline, target length range based on the comparable pages,
and 3 internal-link opportunities if I tell you my site's URL.
If I said "use yours", use these sections: Keyword and intent, Reader,
SERP snapshot table, Questions to answer, Table stakes, Gaps to own,
Outline, Length, Sources.
6. Show me the brief, ask before writing, then save it to
briefs/<keyword-with-hyphens>.md. Never copy sentences from the ranking
pages into the brief; summarise and link.
Claude asks before each change it makes. Read each step before you approve it.
The rest of this post explains what each step does, so you can change it with confidence.
What one Actor run gives you
The Google Search Scraper returns one dataset item per results page. With the Full website content add-on switched on, it also runs the Website Content Crawler on every organic result and attaches the page to the result as websiteContent.text, plus websiteContent.markdown when the page converts cleanly. So one call gives Claude everything a brief needs:
| Field | What the brief uses it for |
|---|---|
organicResults[].title, .url, .position | The SERP snapshot table |
organicResults[].websiteContent.markdown | H2 and H3 outline of each ranking page |
organicResults[].websiteContent.text | Word count, and the term checks behind each "gap" |
peopleAlsoAsk[].question | Questions the brief must answer |
relatedQueries[].title | Secondary topics and variants |
aiOverview.content | What Google's own summary already says |
The input is five fields:
{
"queries": "content brief template",
"countryCode": "us",
"searchLanguage": "en",
"maxPagesPerQuery": 1,
"websiteContentScraper": { "enable": true }
}
maxPagesPerQuery: 1 keeps the run to the first results page, which is all a brief needs. Results depend on country and language, so always set both.
The manual walkthrough
1. Connect Apify to Claude Code
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch-actor-details,call-actor" --scope project
Then run /mcp inside Claude Code and sign in to Apify. The hosted server uses OAuth, so no token lands in your project files. Passing tools= loads only the tools you list, and the server adds get-dataset-items and get-actor-run automatically whenever call-actor is present, so Claude can read results and check costs. The web research setup post adds a hook that refuses any Actor run without a spend cap, which is worth having if you run briefs often.
2. Run the SERP fetch
Ask Claude to call apify/google-search-scraper with the input above. The run takes a couple of minutes, because it fetches every ranking page after the search itself. Ours logged "organicResults: 9", then "Scraping website content with Website Content Crawler" for 9 URLs, and finished in 1 minute 45 seconds on one run and 2 minutes 17 seconds on the next.
3. Turn the data into a brief
This is where Claude earns its place. The analysis prompt matters more than the scraping, and three rules make the output trustworthy:
- Thin fetches are not short pages. Some sites return almost no text to a crawler. Claude must flag these rather than conclude "the #6 result is only 92 words long".
- Every gap needs evidence. "No ranking page covers X" should come with the pages checked and the terms searched, so you can verify it in a minute.
- Summarise, never copy. A brief tells a writer what to cover. Lifting competitors' sentences into it is how copied content starts.
Use this once the connection exists. Change the keyword and country on the first line.
Keyword: "<keyword>", country "us", language "en". Run apify/google-search-scraper
with maxPagesPerQuery 1 and websiteContentScraper.enable true, capped at $0.25.
Then write the brief in the same format as the newest file in briefs/: SERP
snapshot table (position, domain, page type, words, H2 count), PAA questions
mapped to sections, table stakes (3+ pages), gaps (0-1 pages, with evidence),
outline and length range. Flag fetches under 300 words as not comparable.
Show me before saving.
A real run: "content brief template" (21 October 2026)
We ran the workflow for the keyword content brief template, Google US, English. Everything in this section comes from that one test run on 2026-10-21. The figures are real; the layout is ours, trimmed for length.
SERP snapshot
| # | Domain | Page type | Words fetched | H2s |
|---|---|---|---|---|
| 1 | notion.com | Template gallery | 1,057 | 8 |
| 2 | pinterest.com | Image board | 91 | 1 |
| 3 | jasper.ai | How-to article | 1,637 | 14 |
| 4 | pandadoc.com | Template page | 725 | 7 |
| 5 | blog.marketmuse.com | Template roundup | 2,002 | 18 |
| 6 | asana.com | Article | 92 (thin fetch) | 0 |
| 7 | canny-creative.com | How-to article | 3,694 | 10 |
| 8 | contentharmony.com | Template roundup | 2,702 | 7 |
| 9 | rightsideup.com | How-to article | 1,998 | 5 |
Word counts are for all fetched text, including navigation and footers, so read them as rough size, not as article length. Google returned 9 organic results on the first page, not 10, which is common when a SERP carries extra features.
Intent. Mixed. Five results are template galleries or roundups, three are how-to articles, and one is a Pinterest board. A page that wins here probably needs both: a usable template near the top and a short explanation of how to fill it in.
Questions to answer (People Also Ask).
- How to write a content brief?
- What is a content brief?
- What are the 5 parts of a design brief?
- What is the typical format for a creative brief?
Related searches add the format angle: "content brief template word", "content brief template ppt", "social media content brief template", "website content brief template" and "content brief generator".
Table stakes. A definition ("What is a content brief?" is an H2 on jasper.ai, canny-creative.com and rightsideup.com), the key components of a brief (jasper.ai, rightsideup.com and the "Key Elements" section on blog.marketmuse.com), and worked examples (jasper.ai, blog.marketmuse.com, canny-creative.com).
Gaps worth owning.
- AI search. Google showed an AI Overview for this keyword, yet the phrase "AI Overview" appears in none of the nine fetched pages, and "AI search" appears only on jasper.ai. A template with a section on writing for AI answers has no direct competition in this top 10.
- People Also Ask as a brief input. Only canny-creative.com mentions "People Also Ask" at all. A template that builds PAA questions into the brief would stand out.
- Automation. Only contentharmony.com has a section on automating briefs ("How To Automate Your Content Brief Templates"). A how-to on generating briefs from live SERP data fits the "content brief generator" related search.
What this run cost. One search-page-scraped event and nine website-content-scraped events, $0.048 in total on our plan. The run also returned Google's AI Overview text without the paid AI Overview add-on, but with an empty source list.
Cost per brief
The Actor charges per event, and the price depends on your Apify plan. These are the two events a brief uses:
| Event | Free plan | Starter plan |
|---|---|---|
Search results page (search-page-scraped) | $0.0045 subject to change · verified 2026-10-21 | $0.0025 subject to change · verified 2026-10-21 |
Full page content (website-content-scraped), per page | $0.008 subject to change · verified 2026-10-21 | $0.005 subject to change · verified 2026-10-21 |
| One brief (1 SERP page + about 10 pages) | about $0.085 | about $0.053 |
Our nine-page run cost $0.048, which matches the Starter column: $0.0025 + 9 × $0.005. Higher Apify plans pay less per event. The Claude side of the cost depends on your Claude plan, and the fetched pages are long, so a brief uses a fair share of the context window.
Limits to know before you rely on it
- One snapshot. A brief reflects the SERP on the day you run it, for one country and language. Re-run before a big refresh.
- Some pages will not fetch. In our run, asana.com returned 92 words and Pinterest 91. Treat those as unknown, not as competitors with short content.
- Word counts include boilerplate. Navigation, cookie banners and footers count. Compare pages with each other, and do not set a target length from a single number.
- Gaps are claims to check. "No page mentions X" is only as good as the terms Claude searched for. The prompt asks for evidence so you can check it fast.
- Respect the pages you analyse. The brief is for planning original content. Do not republish what you fetched.
When a dedicated content-brief tool is the better choice
Tools such as Surfer, Frase, Clearscope, MarketMuse and Content Harmony (two of which rank in the very SERP above) do more than this workflow: term scoring against the top results, SERP history, editor plug-ins, and shared brief libraries with approval flows. If a team of writers works from briefs every day, one of them will likely save more time than it costs.
This workflow wins when you want briefs in your own format, stored next to your content in a repo, for a few cents each, with the raw data available to question. It also slots into the rest of a Claude Code content setup, which a separate tool does not. For the wider picture of SERP data in SEO work, from rank tracking to backlink discovery, see the web scraping for SEO guide and the scheduled SERP monitoring in Apify for SEO. For more SEO prompts, see Claude prompts that use live web data.
Partly. Claude Code's built-in web search and fetch tools can find and read pages one at a time, but they do not return Google's ranking order for a chosen country, People Also Ask or related searches. A SERP scraper with full page content returns all of that in one call, which is the raw material dedicated brief tools work from.
With the Google Search Scraper and its Full website content add-on, one brief is one search-page event plus one page-content event per ranking page. On 21 October 2026 that came to $0.048 for a nine-page SERP on a Starter plan, and roughly $0.085 for ten pages on the free plan.
Yes. The Apify MCP server works in Claude Desktop and Cowork as a connector too. Claude Code is the better fit here because it can save each brief as a Markdown file in your content repository and reuse your template from the folder.
Some sites return very little text to a crawler, often because the page is rendered by JavaScript or the site blocks automated access. A 90-word fetch says nothing about the real article, so the brief marks it as not comparable instead of treating it as a short page.
