Content Brief Generator
Content Intelligence First
Before generating a brief, run scripts/analyze-keywords.ts (local-first, no API key) on the target or a top competitor URL. Use the result to shape target keywords, semantic variants, heading coverage, local modifiers, and stuffing warnings.
bun run scripts/analyze-keywords.ts <url-or-path> --keyword "<primary keyword>" --synonyms "<syn1,syn2>" --locations "<city1,city2>" --format markdown
Metadata and Heading Rules
- Meta title must be 60 characters or less.
- Meta description must be 150 characters or less.
- Do not include the company or brand name in the meta title unless the client explicitly asks. If useful, provide a branded variant as an option or exception.
- Meta title and H1 should be semantically similar, but not necessarily identical.
- Meta title and H1 need the primary keyword or a strong variant.
- H2/H3 headings should distribute synonyms, long-tail phrases, questions, and sub-intents.
- Avoid repeating the exact keyword across every heading.
Long-Tail by Buyer State (2026)
Layer keywords by buyer state, not by surface similarity:
| Layer |
State |
Intent signal |
Example phrasing |
| L1 |
Awareness |
"what is", "why", symptoms, problems |
broad informational, conversational |
| L2 |
Comparison |
"vs", "alternatives", "best for" |
options weighing |
| L3 |
Evaluation |
"pricing", "reviews", "is X worth it" |
scrutiny, objections |
| L4 |
Decision |
"buy", "near me", "demo", "signup" |
transactional/local |
One brief targets one buyer state per URL. Cluster by buyer state + intent, never by lexical surface similarity.
Citation eligibility
AI Overviews capture ~30-60% of the informational CTR. Optimize for verbatim LLM extraction, not raw traffic alone: every section must yield a self-contained, quotable answer. A brief that ranks but is not extractable loses the AI Overview slot.
Brief Structure
# Content Brief: <topic>
## Target Keywords
- Primary: <kw> (vol, KD, intent)
- Secondary: <kw1>, <kw2>, <kw3>
- Long-tail: <lt1>, <lt2>, <lt3>
## Search Intent
- Type: informational | navigational | commercial | transactional
- User question: "<exact question>"
- Expected format: guide | listicle | comparison | tutorial
## Outline
- Meta title: <primary keyword or strong variant, <=60 chars, no brand unless requested>
- Meta description: <benefit + intent match, <=150 chars>
- H1: <semantic match to title, primary keyword or strong variant>
- H2: <synonym, long-tail phrase, question, or sub-intent>
- H3: <supporting sub-intent>
- H2: <section 2>
- H2: FAQ
- H2: Conclusion
## Answer Capsules (per H2)
<40-60 word self-contained answer opening EACH H2, not only the first 100 words — citation-eligible for AI Overviews>
## Word Count Target
<based on top 10 SERP average>
## Internal Links (5-10)
- → <pillar page>
- → <related cluster pages>
## Schema
- Article + BreadcrumbList (always)
- FAQPage (if FAQ section)
- VideoObject (if video embed)
## GEO Requirements
- Answer capsule (40-60 words) opening every H2
- One hyperlinked statistic to its primary source every 150-200 words
- Name key entities explicitly (no pronouns for the primary entity)
- Cite 3-5 authoritative sources
- Use tables/lists for comparison data
References
seo-geo — AI Overviews / LLM readiness
seo-content — copywriting 2026 (answer capsules, named entities)
seo-entity — entity salience and knowledge graph
skills/seo/04-geo-2026/content-structure.md
skills/seo/06-content-strategy/keyword-research.md
1---2name: seo-content-brief3description: Use when generating a detailed SEO content brief for a single page or topic before writing.4---56<objective>7Generates a full content brief for one target page: runs local keyword-density analysis first (`scripts/analyze-keywords.ts`, no API key), then produces target keywords (primary/secondary/long-tail layered by buyer state L1-L4), search intent classification, meta title/description constraints, a full H2/H3 outline with a self-contained answer capsule (40-60 words, citation-eligible) opening every H2, a word-count target, 5-10 internal link suggestions, required schema types, and a GEO readiness checklist. One brief targets one buyer state per URL. Does not build the keyword cluster itself (seo-cluster) or score already-published content quality (seo-content).8</objective>910# Content Brief Generator1112## Content Intelligence First1314Before generating a brief, run `scripts/analyze-keywords.ts` (local-first, no API key) on the target or a top competitor URL. Use the result to shape target keywords, semantic variants, heading coverage, local modifiers, and stuffing warnings.1516```bash17bun run scripts/analyze-keywords.ts <url-or-path> --keyword "<primary keyword>" --synonyms "<syn1,syn2>" --locations "<city1,city2>" --format markdown18```1920## Metadata and Heading Rules2122- Meta title must be 60 characters or less.23- Meta description must be 150 characters or less.24- Do not include the company or brand name in the meta title unless the client explicitly asks. If useful, provide a branded variant as an option or exception.25- Meta title and H1 should be semantically similar, but not necessarily identical.26- Meta title and H1 need the primary keyword or a strong variant.27- H2/H3 headings should distribute synonyms, long-tail phrases, questions, and sub-intents.28- Avoid repeating the exact keyword across every heading.2930## Long-Tail by Buyer State (2026)3132Layer keywords by buyer state, not by surface similarity:3334| Layer | State | Intent signal | Example phrasing |35|-------|-------|---------------|------------------|36| **L1** | Awareness | "what is", "why", symptoms, problems | broad informational, conversational |37| **L2** | Comparison | "vs", "alternatives", "best for" | options weighing |38| **L3** | Evaluation | "pricing", "reviews", "is X worth it" | scrutiny, objections |39| **L4** | Decision | "buy", "near me", "demo", "signup" | transactional/local |4041One brief targets one buyer state per URL. Cluster by buyer state + intent, never by lexical surface similarity.4243### Citation eligibility4445AI Overviews capture ~30-60% of the informational CTR. Optimize for **verbatim LLM extraction**, not raw traffic alone: every section must yield a self-contained, quotable answer. A brief that ranks but is not extractable loses the AI Overview slot.4647## Brief Structure4849```markdown50# Content Brief: <topic>5152## Target Keywords53- Primary: <kw> (vol, KD, intent)54- Secondary: <kw1>, <kw2>, <kw3>55- Long-tail: <lt1>, <lt2>, <lt3>5657## Search Intent58- Type: informational | navigational | commercial | transactional59- User question: "<exact question>"60- Expected format: guide | listicle | comparison | tutorial6162## Outline63- Meta title: <primary keyword or strong variant, <=60 chars, no brand unless requested>64- Meta description: <benefit + intent match, <=150 chars>65- H1: <semantic match to title, primary keyword or strong variant>66- H2: <synonym, long-tail phrase, question, or sub-intent>67 - H3: <supporting sub-intent>68- H2: <section 2>69- H2: FAQ70- H2: Conclusion7172## Answer Capsules (per H2)73<40-60 word self-contained answer opening EACH H2, not only the first 100 words — citation-eligible for AI Overviews>7475## Word Count Target76<based on top 10 SERP average>7778## Internal Links (5-10)79- → <pillar page>80- → <related cluster pages>8182## Schema83- Article + BreadcrumbList (always)84- FAQPage (if FAQ section)85- VideoObject (if video embed)8687## GEO Requirements88- Answer capsule (40-60 words) opening every H289- One hyperlinked statistic to its primary source every 150-200 words90- Name key entities explicitly (no pronouns for the primary entity)91- Cite 3-5 authoritative sources92- Use tables/lists for comparison data93```9495## References9697- `seo-geo` — AI Overviews / LLM readiness98- `seo-content` — copywriting 2026 (answer capsules, named entities)99- `seo-entity` — entity salience and knowledge graph100- `skills/seo/04-geo-2026/content-structure.md`101- `skills/seo/06-content-strategy/keyword-research.md`