content-brief
Skill1 starsChanged 7 months agoMITView on GitHub
Use when the user wants a content brief, SEO outline, SERP analysis, or blog post plan for a target keyword. Produces a full brief (outline, entities, PAA, competitor summary, unique angle) ready for a writer or the blog-post skill.
- Reads credentials
19 other projects use a version of this.
Adopted by
Most recently taken up by
- agiea-brain/agency-skillstheir own version, first seen Nov 8, 2026
- winsley-jeune/harborrank-skillstheir own version, first seen Nov 1, 2026
- akii-technologies-ltd/akii-seo-ai-search-optimizertheir own version, first seen Nov 1, 2026
- Ryze-AI-Adgent/open-seo-mcp-skillstheir own version, first seen Oct 27, 2026
- tidycatc132/claude-skillstheir own version, first seen Oct 25, 2026
- langchain-ai/design-agenttheir own version, first seen Oct 25, 2026
Used with
Projects with it also use competitor-gap, serp-analysis and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
DarynaRodriguezSkillcompetitor-gap
Finds the terms rivals rank for and the site does not, confirms who the real organic competitors are, and returns a gap table split into terms to win, terms underperforming, and terms to concede.
Also in 4 projects that use this
opencueSkillserp-analysis
Use when the user asks to "analyze SERPs"; reviews ranking factors, features, intent, AI Overviews, and snippets. SERP分析/搜索结果
Also in 3 projects that use this
indranilbanerjeeSkillclient-proposal
Draft a client proposal or RFP response: scope, deliverables, KPIs, pricing tiers. \"respond to this RFP\"
Also in 3 projects that use this
akii-technologies-ltdSkillinternal-linking
Analyze and improve internal linking strategy. Use when the user asks about "internal links", "link structure", "site architecture", "link strategy", "orphan pages", "link equity", "page authority distribution", "anchor text", "topical clusters", "siloing", or wants to improve how pages connect.
Also in 3 projects that use this
akii-technologies-ltdSkillkeyword-clustering
Cluster and organize keywords into topical groups for SEO. Use when the user asks to "cluster keywords", "group keywords", "organize keywords", "keyword mapping", "topic clusters", "keyword grouping", "build a content plan", "pillar pages", "topical authority", "semantic clustering", or pastes a list of keywords.
Also in 3 projects that use this
silvainfmSkillschema-markup
When the user wants to add, fix, or optimize schema markup and structured data on their site. Also use when the user mentions "schema markup," "structured data," "JSON-LD," "rich snippets," "schema.org," "FAQ schema," "product schema," "review schema," or "breadcrumb schema." For broader SEO issues, see seo-audit.
Also in 5 projects that use this
Other versions19 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 19
- Ryze-AI-Adgent/open-seo-mcp-skills★ 8.4ksame name
- indranilbanerjee/digital-marketing-pro★ 934same name
- langchain-ai/design-agent★ 596same name
- akii-technologies-ltd/akii-seo-ai-search-optimizer★ 79same name
- semrush/skills★ 13same name
- calven-ai/marketing-as-code★ 10same name
- searchfit/searchfit-seo★ 9same name
- winsley-jeune/harborrank-skills★ 2same name
- agiea-brain/agency-skills★ 1same name
- DarynaRodriguez/seo-skills★ 1same name
9 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository14 other files it gives its agents.
- blog-postSkill
- competitor-analysisSkill
- content-calendarSkill
- content-marketingSkill
- editorial-guidelinesSkill
- email-copySkill
- landing-page-copySkill
- proofreading-style-checkSkill
- publish-webflowSkill
- publish-wordpressSkill
- repurpose-linkedin-carouselSkill
- repurpose-threads-xSkill
- seo-auditSkill
- social-postSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 3 are distinctive, and 8 are very specific to this project.
0
Common
Most of the 17 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
Ask the user for:
- Very specific: line 37
Use AskUserQuestion for intent override (Informational / Commercial / Comparison / Transactional) and for refresh-vs-new.
- Very specific: line 43
Read editorial-guidelines.md at project root if present.
- Very specific: line 44
Read {SKILL_BASE}/../_shared/seo-best-practices.md to remind yourself of the rules this brief must enforce.
- Distinctive: line 48
If the Ahrefs MCP server is connected, call its tools in this order:
- Very specific: line 56
If Ahrefs MCP isn't connected, use Firecrawl's /v1/search endpoint with the keyword to get the top 10 URLs and note that volume/KD are …
- Very specific: line 87
If TAVILY_API_KEY or EXA_API_KEY is set, run a research query like "{keyword} site:*.edu OR site:*.gov OR recent studies" to surface fresh …
- Very specific: line 89
If a YouTube video appears in the top 10 and YOUTUBE_API_KEY is set, fetch the transcript and extract 3–5 unique points from it.
- Distinctive: line 93
If the user provided a sitemap URL:
- Very specific: line 112
Write to briefs/<kw-slug>.md using the template below.
- Very specific: line 202
No Ahrefs MCP: use Firecrawl /search for SERP.
“Common” is measured: kept by at least 6 in 10 of the 17 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Content Brief
Turn a target keyword into a full SEO content brief. Output is a single markdown file under briefs/ that the blog-post skill or a human writer can execute directly.
Setup
Required (at least one search data source):
- Ahrefs MCP (strongly preferred) — the official remote MCP server at
https://api.ahrefs.com/mcp/mcp(Streamable HTTP). Connect via Claude Code's MCP settings, not via an env var — authentication is an OAuth flow that mints an MCP-scoped key. Requires a paid Ahrefs plan (Lite or higher). Exposes ~42 tools grouped under Keywords Explorer, Site Explorer, Rank Tracker, and Batch Analysis. The old local npm server (github.com/ahrefs/ahrefs-mcp-server) is archived — don't use it. FIRECRAWL_API_KEY— SERP scraping and competitor content extraction. Required if Ahrefs MCP isn't connected.
Optional:
TAVILY_API_KEYorEXA_API_KEY— fresh research layer for angles Ahrefs doesn't surface.YOUTUBE_API_KEY— pull transcripts from YouTube results ranking in the SERP.JINA_API_KEY— higher free-tier for the Jina Reader fallback.
See {SKILL_BASE}/../_shared/firecrawl-jina-playwright-helpers.md for the scraping fallback chain.
Inputs
Ask the user for:
- Target keyword (required).
- Search intent override (optional — auto-detected from SERP otherwise).
- Target audience / ICP — inherited from
editorial-guidelines.mdif present; otherwise ask. - Word-count target — default: median of top 10 SERP results ±20%.
- Refresh an existing URL? — if yes, load the current page and diff against the brief so the user sees what to add vs. what to keep.
- Own-site sitemap URL (optional) — enables internal-link suggestions.
Use AskUserQuestion for intent override (Informational / Commercial / Comparison / Transactional) and for refresh-vs-new.
Process
1. Load context
- Read
editorial-guidelines.mdat project root if present. - Read
{SKILL_BASE}/../_shared/seo-best-practices.mdto remind yourself of the rules this brief must enforce.
2. Keyword data (Ahrefs MCP)
If the Ahrefs MCP server is connected, call its tools in this order:
- Keywords Explorer → overview — volume, KD, global volume, parent topic, SERP features.
- Keywords Explorer → matching terms / related terms / search suggestions — top 50 related keywords and candidate PAA questions (Ahrefs doesn't expose a dedicated PAA tool; matching/related terms is the closest equivalent).
- Rank Tracker → SERP overview (or the equivalent SERP tool exposed by the MCP) — top 10 ranking URLs with DR, traffic, and top keyword per URL.
Exact tool names may vary by MCP server version. Enumerate the available tools once at session start and map them to these roles; cache the mapping.
If Ahrefs MCP isn't connected, use Firecrawl's /v1/search endpoint with the keyword to get the top 10 URLs and note that volume/KD are unavailable.
3. Scrape top 10 SERP results
For each of the top 10 URLs, use the Firecrawl → Jina → Playwright chain to fetch clean markdown. For each page, extract:
- Full H1 and H2/H3 outline
- Word count
- Publish date and last-updated date
- Author (if present)
- Top 20 content words excluding stopwords (for entity extraction)
- Outbound link count
- Schema type (Article, HowTo, FAQPage, etc.)
4. Classify search intent
Auto-classify based on SERP composition:
- ≥6 listicles or how-to articles → Informational
- ≥4 comparison/review pages → Commercial investigation
- ≥4 product/category pages → Transactional
- Mixed → Informational with commercial sub-intent
Respect the user's override if they provided one.
5. Entity and PAA consolidation
- Entities to cover: take the union of top-20 content words across all 10 competitors, filter to terms appearing in ≥4 competitors, rank by frequency. Present top 15.
- PAA: from Ahrefs questions if available; otherwise infer from competitor H2s that are phrased as questions.
6. Optional research layer
If TAVILY_API_KEY or EXA_API_KEY is set, run a research query like "{keyword} site:*.edu OR site:*.gov OR recent studies" to surface fresh data points, original research, or contrarian views the Ahrefs SERP doesn't include. List any findings as "Unique angle candidates".
If a YouTube video appears in the top 10 and YOUTUBE_API_KEY is set, fetch the transcript and extract 3–5 unique points from it.
7. Internal link candidates
If the user provided a sitemap URL:
- Fetch and parse the sitemap.
- Score each URL by overlap of its slug/title against the target keyword's semantic field.
- Return top 5 internal link candidates with suggested anchor text.
8. Synthesize the outline
Propose:
- 3 H1 options (one descriptive, one listicle, one contrarian).
- TL;DR draft (5 bullets).
- Section outline: H2s with sub-H3s where appropriate, each tagged with a target word count that sums to the overall target.
- Entities section (must-cover list).
- PAA section (must-answer list).
- Unique angle: one thing none of the top 10 competitors cover, based on the research layer or your own analysis.
- Internal link targets (if sitemap provided).
- Meta: title tag and meta description drafts following
seo-best-practices.mdrules.
9. Write the file
Write to briefs/<kw-slug>.md using the template below. Slug = kebab-case of the keyword.
Output template
---
keyword: "{target keyword}"
intent: "{informational|commercial|comparison|transactional}"
volume: {n}
kd: {n}
target_word_count: {n}
created: {YYYY-MM-DD}
refresh_of: "{url or null}"
---
# Brief: {target keyword}
## Meta
- **Volume:** {n}/mo
- **KD:** {n}
- **Intent:** {classified intent} ({1-line rationale})
- **Target length:** {n} words (median of top 10: {m})
- **Top SERP features:** {PAA, video, featured snippet, …}
## Title options
1. {descriptive}
2. {listicle}
3. {contrarian}
**Meta description:** {140–160 chars}
## TL;DR
- {bullet 1}
- {bullet 2}
- {bullet 3}
- {bullet 4}
- {bullet 5}
## Outline
### H2: {section 1} — {word count}
- {sub-point or H3}
- {sub-point}
### H2: {section 2} — {word count}
- …
{…}
**Total:** {sum} words
## Entities to cover
| Entity | Frequency across top 10 | Notes |
|---|---|---|
| {entity} | {n}/10 | |
## PAA — must answer
1. {question}
2. {question}
## Internal link targets
- [{anchor}]({url}) — {why}
## Unique angle
{One thing no competitor covers, with source.}
## Competitor summary
| # | URL | DR | Words | Format | Published | Gap we can exploit |
|---|---|---|---|---|---|---|
| 1 | {url} | {n} | {n} | {listicle/how-to/…} | {date} | {gap} |
## Sources used
- Ahrefs keyword data: {Y/N}
- Firecrawl SERP: {Y/N}
- Tavily/Exa research: {Y/N}
- YouTube transcripts: {Y/N}
- Own sitemap: {Y/N}Fallbacks
- No Ahrefs MCP: use Firecrawl
/searchfor SERP; mark volume/KD as "unavailable"; skip related-keyword block. - No Firecrawl: fall through to Jina, then Playwright per the shared helper.
- No scraper at all: refuse and tell the user to set
FIRECRAWL_API_KEYor install Playwright. - YouTube transcript unavailable: skip; don't block the brief.
- Sitemap fetch fails: skip internal link section; note in output.
Verification
briefs/<slug>.mdexists.- Outline contains ≥5 H2s summing to within ±20% of the target word count.
- Entities table has ≥10 rows.
- PAA section has ≥3 questions.
- Competitor table has N rows where N = min(10, available SERP results).
- Unique-angle section is non-empty.
- A Sources-used block at the bottom reports which data sources actually fired.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

