skills/composites/content-brief-factory/SKILL.md
Generate detailed, differentiated content briefs at scale. Each brief includes SERP analysis, competing page breakdown, unique angles from real customer language (reviews, Reddit), internal linking plan, and SERP feature targets. Batch mode produces 10-50 briefs in one run. Crushes generic "keyword density" briefs from tools like Surfer or Clearscope.
npx skillsauth add athina-ai/goose-skills content-brief-factoryInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Most content briefs are garbage. They tell you "mention these keywords 7 times" and call it a strategy. This skill produces briefs that include competitive analysis, unique angles mined from what real customers say, SERP feature targeting, and a differentiated outline — so your writer knows exactly what to create and why it'll rank.
Core principle: A great brief doesn't just say "write about X." It says "here's what's already ranking, here's why it's winning, here's the gap they missed, here's the customer language that proves the gap matters, and here's exactly how to structure a page that beats them."
Batch mode: Process 10-50 keywords in a single run. Each brief takes ~30 seconds in enhanced mode, ~60 seconds in baseline.
Briefs are significantly better with real SERP data (what's actually ranking, what SERP features appear) rather than inferred analysis.
"I can create strong content briefs using competitive research and customer language mining. For the best results — especially accurate SERP analysis and keyword metrics — I'd recommend connecting a SERP data API."
Recommended: SerpAPI (100 free searches/month, $50/month for 5,000)
- Sign up at serpapi.com → get API key
- Set
SERPAPI_KEYenv varAlternatives that also work:
- Serper.dev (2,500 free searches, then $50/month for 50K) → set
SERPER_API_KEY- DataForSEO SERP (pay-per-use, ~$0.01/search) → set
DATAFORSEO_LOGIN+DATAFORSEO_PASSWORD- ValueSERP (free tier available) → set
VALUESERP_API_KEY"Want to use one of these, or should I proceed with baseline mode? Baseline uses web search to analyze competing pages — still produces great briefs, just with less precise SERP feature and volume data."
web_search to identify top-ranking pages, seo-domain-analyzer for domain metrics. SERP feature detection is inferred. Still produces excellent briefs — the competitive analysis and customer language components don't need SERP APIs.seo-opportunity-finderprogrammatic-seo-planner (template keywords)Run site-content-catalog on your site:
python3 skills/site-content-catalog/scripts/catalog_content.py \
--url "<your_site_url>" \
--output json
For each target keyword, check:
For each keyword, run in parallel where possible:
Enhanced mode (SerpAPI / Serper / DataForSEO):
# SerpAPI example
GET https://serpapi.com/search?q={keyword}&api_key={key}&num=10
Extract per keyword:
Baseline mode:
Use web_search for each keyword:
seo-domain-analyzer for volume/difficulty estimatesFor top 3-5 ranking pages per keyword, fetch via fetch_webpage:
Analyze each:
Run review-site-scraper + reddit-post-finder for the topic:
# Reviews — find how ICP talks about this problem
python3 skills/capabilities/review-site-scraper/scripts/scrape_reviews.py \
--platform g2 \
--url "<relevant_product_review_url>" \
--output json
# Reddit — find real questions and pain language
python3 skills/reddit-post-finder/scripts/search_reddit.py \
--subreddit "<relevant_subs>" \
--keywords "<keyword>,<topic>" \
--days 365 --sort top --time year
Extract:
For each keyword, produce:
# Content Brief: [Target Keyword]
## Metadata
- **Target keyword:** [primary keyword]
- **Secondary keywords:** [2-5 related keywords to include naturally]
- **Search volume:** [monthly, if available] | **Difficulty:** [score, if available]
- **Content type:** [blog post / guide / comparison / glossary / landing page]
- **Target word count:** [X-Y words] (based on competing pages)
- **Priority:** [P0/P1/P2]
---
## Search Landscape
### What's Currently Ranking
| # | Page | Domain | Type | Words | Strengths | Weaknesses |
|---|------|--------|------|-------|-----------|------------|
| 1 | [title] | [domain] | [type] | [count] | [what they do well] | [what they miss] |
| 2 | ... | | | | | |
| 3 | ... | | | | | |
### SERP Features Present
- Featured snippet: [Yes/No — current holder + content]
- People Also Ask: [list of PAA questions]
- Video carousel: [Yes/No]
- Images: [Yes/No]
- Knowledge panel: [Yes/No]
### SERP Feature Targets
- [ ] **Win featured snippet** — Structure answer in [format] under H2 "[heading]"
- [ ] **Answer PAA questions** — Include sections covering: [list]
- [ ] **Image pack** — Include [type of images/diagrams]
---
## Differentiation Angle
**The gap in existing content:** [What ALL ranking pages miss or do poorly]
**Your unique angle:** [How to approach this differently — based on customer language, product positioning, or data you have that competitors don't]
**Customer voice evidence:**
> "[Quote from review/Reddit showing the gap]" — [Source]
> "[Another quote]" — [Source]
---
## Recommended Outline
### Title Options (pick one)
1. [Title option A — SEO-optimized]
2. [Title option B — curiosity-driven]
3. [Title option C — outcome-focused]
### Meta Description
[155 characters, includes keyword, has clear value prop]
### Content Structure
**H1: [Exact H1]**
**H2: [Section 1 — Hook/Problem Statement]**
- What to cover: [specific guidance]
- Length: [~X words]
- Include: [customer pain quote as hook]
**H2: [Section 2 — Core Content]**
- What to cover: [specific guidance]
- Length: [~X words]
- Include: [comparison table / step-by-step / framework]
**H2: [Section 3 — Differentiated Angle]**
- What to cover: [the thing competitors miss]
- Length: [~X words]
- This is your competitive edge
**H2: [Section 4 — Practical Application]**
- What to cover: [concrete examples, use cases]
- Include: [screenshots, templates, or data]
**H2: [Section 5 — FAQ / PAA Answers]**
- [PAA question 1] — [brief answer guidance]
- [PAA question 2] — [brief answer guidance]
- [PAA question 3] — [brief answer guidance]
**H2: [Section 6 — CTA / Next Steps]**
- What to cover: [natural transition to your product]
---
## Internal Linking Plan
- **Link FROM this page TO:** [existing pages that are relevant]
- **Link TO this page FROM:** [existing pages that should reference this]
- **Anchor text suggestions:** [specific anchor text for each link]
---
## Content Requirements
- [ ] Include at least [N] original examples/screenshots
- [ ] Use customer language: "[specific phrases to work in]"
- [ ] Include structured data: [FAQ schema / HowTo schema / etc.]
- [ ] Add last-updated date (for freshness signals)
- [ ] Target readability: [grade level / reading time]
---
## Competitive Advantage Checklist
- [ ] Covers everything top 3 pages cover
- [ ] Adds [unique angle] they all miss
- [ ] Uses real customer language (not generic marketing speak)
- [ ] Targets [SERP feature] with optimized format
- [ ] Has stronger internal linking than competitors
- [ ] Includes original [data/images/templates] competitors lack
For batch runs (10+ briefs):
# Content Brief Batch — [Product/Client] — [DATE]
## Summary
- Briefs generated: [N]
- Total target search volume: [X]/month
- Content types: [N] blog posts, [N] guides, [N] comparisons, etc.
## Priority Order
| # | Keyword | Volume | Difficulty | Content Type | Unique Angle | Status |
|---|---------|--------|-----------|-------------|-------------|--------|
| 1 | [kw] | [vol] | [diff] | [type] | [angle summary] | Ready |
| 2 | [kw] | [vol] | [diff] | [type] | [angle summary] | Ready |
...
## Individual Briefs
[Brief 1]
---
[Brief 2]
---
...
Save to the current working directory or wherever the user prefers. For batch mode, also export a summary CSV.
| Component | Cost | |-----------|------| | Site catalog (once) | ~$0.05-0.10 | | Review scraper (per topic cluster) | ~$0.10-0.30 | | Reddit scraper (per topic cluster) | ~$0.05-0.10 | | Page fetches (3-5 per keyword) | ~$0.01-0.03 per keyword | | SerpAPI (enhanced, per keyword) | ~$0.01-0.05 per keyword | | Serper.dev (enhanced, per keyword) | ~$0.001 per keyword | | Analysis | Free (LLM reasoning) | | Total per brief (baseline) | ~$0.05-0.15 | | Total per brief (enhanced) | ~$0.08-0.25 | | Batch of 20 briefs (baseline) | ~$1.00-3.00 | | Batch of 20 briefs (enhanced) | ~$1.60-5.00 |
APIFY_API_TOKEN env varsite-content-catalog, seo-domain-analyzer, review-site-scraper, reddit-post-finder, fetch_webpageSERPAPI_KEY), Serper.dev (SERPER_API_KEY), DataForSEO (DATAFORSEO_LOGIN + DATAFORSEO_PASSWORD), or ValueSERP (VALUESERP_API_KEY)For ongoing content operations, run weekly:
seo-opportunity-finder or content calendarcontent-media
Takes an existing screen recording or demo video and adds professional zoom/pan effects synchronized to the narration. Uses transcript-driven zoom targeting and Remotion for rendering. Optionally replaces audio with a soundtrack.
tools
Repurposes long-form video (podcasts, interviews, talks) into short-form vertical clips for Instagram Reels, TikTok, and YouTube Shorts. Handles transcription, moment selection, clip extraction, speaker-tracked reframing (16:9 to 9:16), and animated captions.
development
Creates talking head videos from any source material (docs, changelogs, blog posts, notes, transcripts). Produces multi-scene videos with avatar narration over screenshots/images using HeyGen v2 API. Supports Quick Shot and Full Producer modes.
tools
Generates Instagram-ready product reels from any e-commerce product page URL. Scrapes product images, classifies by type, generates AI-animated clips via Higgsfield API, creates text overlays with style presets, and composes a 15-20 second reel with music. Supports model-based and product-only reels.