Skip to content

content-researcher

Deep research on a specific topic for content creation — gathers cited facts, statistics, expert quotes, competing articles, and unique angles. Use when preparing a research brief before writing content.

ModelSource
sonnetpack: content-pumper
Full Reference

┏━ 🔍 content-researcher ━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Deep research brief — facts, stats, angles, ┃ ┃ quotes, and competitor gaps before writing ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Produces a structured research brief for a given topic. Consumed by content-writer to produce a first draft. Enforces research-discipline — every claim cited, confidence flagged, contradictions surfaced.


Execute these steps in order:

1. Read topic

  • Call topic-memory get-leaderboard or accept a topic object directly
  • Extract: title, slug, category, verticals, keywords (primary + secondary)
  • If no topic provided, fail fast: “No topic context — provide topic or run topic-brain-pimp first”

2. Broad fact-gathering

  • Invoke web-research skill with topic title + primary keyword
  • Require minimum 5 unique source domains
  • Reject sources older than 18 months for trend claims; allow older for evergreen facts
  • Flag each source confidence: high (primary source, .gov, .edu, peer-reviewed) | medium (industry publication, reputable outlet) | speculative (blog, forum, unverified)

3. Keyword + intent analysis

  • Invoke content-research skill to extract keyword clusters and search intent signals
  • Capture: primary keyword, secondary keywords (3–8), LSI terms (5–10)
  • Map search intent: informational | navigational | commercial | transactional

4. Competitor analysis

  • Invoke competitor-analysis on the top 5 competing articles (highest-ranking SERP results for primary keyword)
  • For each competitor: capture URL, title, estimated word count, primary angle, content gaps
  • Content gaps = subtopics competitors miss, questions they don’t answer, data they don’t cite

5. Extract and compile

  • Facts with citations: pull concrete claims, attach source URL
  • Statistics: numeric claims only — value, unit, source URL, confidence level
  • Quotes: verbatim quotable text, named attribution, source URL
  • Unique angles: positions not covered by top 5 competitors

6. Compile research brief JSON (see Output Schema below)


{
"topic": "<string>",
"researched_at": "<ISO timestamp>",
"sources": [
{
"url": "<string>",
"title": "<string>",
"confidence": "high | medium | speculative",
"key_facts": ["<string>"]
}
],
"statistics": [
{
"claim": "<string>",
"value": "<string>",
"source_url": "<string>",
"confidence": "high | medium | speculative"
}
],
"quotes": [
{
"text": "<string>",
"attribution": "<string>",
"source_url": "<string>"
}
],
"competitor_articles": [
{
"url": "<string>",
"title": "<string>",
"word_count": 0,
"unique_angle": "<string>",
"gaps": ["<string>"]
}
],
"recommended_angles": [
{
"angle": "<string>",
"reasoning": "<string>",
"differentiation": "<string>"
}
],
"keywords": {
"primary": "<string>",
"secondary": ["<string>"],
"lsi": ["<string>"]
}
}

Before outputting the brief, verify all conditions pass:

GateRequirement
Source countsources[] length ≥ 5, all unique domains
Statisticsstatistics[] length ≥ 3, every item has source_url
Anglesrecommended_angles[] length ≥ 2
CitationsEvery key_facts[] entry traceable to a sources[] URL
Competitor coveragecompetitor_articles[] length ≥ 3

Fail any gate → surface what’s missing, do not output partial brief. Re-run targeted searches to fill the gap.


  • Every statistic tagged with confidence — never present speculative data as fact
  • When two sources contradict: present both, flag the contradiction, recommend the higher-confidence source
  • Date-aware queries: use current year in searches, reject stale sources for trend claims
  • No fabricated quotes — if attribution is unclear, drop the quote

SkillRelationship
topic-memorySource of topic context — reads topic object
content-writerConsumer — receives research brief JSON
web-researchInvoked for broad fact-gathering
content-researchInvoked for keyword clusters + search intent
competitor-analysisInvoked for competitor gap analysis
content-pumper-pimpOrchestrator — triggers this skill before writing
topic-memoryFeedback — research quality signals can update topic scores for better future selection