Generates a fully structured SEO content brief for a target keyword and optionally pushes it to a Notion database.

MITAuto-check passedWriting & Content

Install Content Brief

skills CLI
$ npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill content-brief -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Infrasity-Labs/dev-gtm-claude-skills content-brief --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Infrasity-Labs/dev-gtm-claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/notion-skills/content-brief .claude/skills/content-brief && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
content-brief
GitHub stars
136
Token cost
~2.8k tokens
SKILL.md length
1,212 words
Files
6 (incl. scripts, references)
Skills in repo
26
Repo updated
First seen
Licence
MIT

At a glance

Generates a fully structured SEO content brief for a target keyword and optionally pushes it to a Notion database.

  • Works in 4 steps: Keyword Metrics → Competitor H2/H3 Analysis → Search Intent Classification → …
  • The user says create a content brief
  • SKILL.md covers Invocation Triggers, Grill-Me Intake (One Question,…, Data Gathering (Before Writing… and Direction Prompt Output Format…, plus 10 more sections
  • Runs Python scripts from its folder; calls python

What it does

Content Brief is an agent skill from Infrasity-Labs/dev-gtm-claude-skills. Generates a fully structured SEO content brief for a target keyword and optionally pushes it to a Notion database. Use this skill whenever the user says 'create a content brief', 'brief this keyword', 'run a content brief for', 'generate a brief', 'write a brief for [keyword]', 'content brief on [topic]', or any variation where someone needs a keyword researched and turned into a structured writing assignment with H1, H2 outline, FAQ, internal links, word count target, and writer notes. Also triggers when the…

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `references/error-handling.md`, `references/notion-schema.md` and `references/routing-logic.md`).

It sits in Writing & Content, covering Content strategy and On-page SEO. It works with Notion, Model Context Protocol and Ahrefs. The repository describes itself as: Open-source Claude skills for GEO, AI discoverability, and developer GTM workflows. Built for developer-focused companies that want their documentation to be found, parsed, and… The licence is MIT.

When your agent uses it

  • The user says create a content brief
  • Brief this keyword
  • Run a content brief for
  • Generate a brief

Example prompts

  • “create a content brief”
  • “brief this keyword”
  • “run a content brief for”
  • “/content-brief”

Requirements

  • Python 3

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Keyword Metrics
  2. Competitor H2/H3 Analysis
  3. Search Intent Classification
  4. Priority Scoring

What it can do on your machine

Read from SKILL.md and the folder at commit 02cfefb. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Content Brief loads about 2.8k tokens when it runs, and up to ~5.4k if it reads all its reference files. Until then it costs about 189 tokens; SKILL.md has 1,212 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~189
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from Infrasity-Labs/dev-gtm-claude-skills at commit 02cfefb, republished under its MIT licence (© Infrasity-Labs). 1,212 words, ~2,799 tokens.

Download SKILL.mdSave it as .claude/skills/content-brief/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
content-brief
description
Generates a fully structured SEO content brief for a target keyword and optionally pushes it to a Notion database. Use this skill whenever the user says 'create a content brief', 'brief this keyword', 'run a content brief for', 'generate a brief', 'write a brief for [keyword]', 'content brief on [topic]', or any variation where someone needs a keyword researched and turned into a structured writing assignment with H1, H2 outline, FAQ, internal links, word count target, and writer notes. Also triggers when the user provides a keyword and asks for an SEO brief, editorial brief, or writing spec. Outputs a mandatory structured format that the text parser maps directly to Notion properties. Supports single-keyword and batch (CSV) modes.

Content Brief — Keyword-to-Notion Brief Generator

Generates a structured SEO content brief from a target keyword. Output follows the mandatory Direction prompt format so the text_parser.py script can extract every field for Notion without manual cleanup.

Invocation Triggers

Explicit phrases (any of):

  • "create a content brief for [keyword]"
  • "brief this keyword: [keyword]"
  • "content brief on [topic]"
  • "generate a brief for [keyword]"
  • "write a brief for [keyword]"
  • "run the content brief skill"

Implicit signals:

  • User provides a keyword and asks for an SEO spec, editorial spec, or writing assignment
  • User pastes a keyword list and asks for briefs

When triggered, run immediately — no upfront intake beyond the keyword itself.

Grill-Me Intake (One Question, Optional)

Run the brief without questions when the keyword is clear.

Ask one clarifying question only when both are true:

  1. The target audience or client is not inferrable from context
  2. Audience changes the content angle meaningfully (e.g., "project management software" could target PMs or developers)

Quick clarification — who is the primary audience for "[keyword]"?

  1. [Inferred persona A — e.g., HR Director]
  2. [Inferred persona B — e.g., Operations Manager]
  3. Tell me

Why I'm asking: audience shapes the H1, content angle, and writer notes. One question prevents a wrong brief.

Max one question. If audience is inferable, skip and proceed.

Data Gathering (Before Writing the Brief)

Run these steps before generating the Direction prompt output:

Step 1 — Keyword Metrics

Preferred: Ahrefs MCP (keywords_explorer_overview) → volume, KD, CPC, SERP data.

Fallback (no Ahrefs MCP): Use WebSearch to estimate:

  • Search [keyword] search volume KD CPC site:ahrefs.com OR site:semrush.com OR site:moz.com
  • Extract available volume/KD/CPC estimates
  • If no data found, set VOLUME/CPC/DIFFICULTY to [not available — add manually]
Step 2 — Competitor H2/H3 Analysis
  • WebSearch [keyword] → identify top 3 organic results (skip ads, maps, featured snippets)
  • WebFetch each URL → extract all H2 and H3 headings
  • Note: competitor structure informs the H2_OUTLINE. Do not copy — use as gap analysis.
Step 3 — Search Intent Classification

Based on keyword + SERP type, classify as one of exactly four options:

  • Informational — user wants to learn
  • Commercial — user is comparing options before buying
  • Transactional — user is ready to act/purchase
  • Navigational — user seeks a specific brand/site
Step 4 — Priority Scoring

Apply routing logic from references/routing-logic.md:

  • HIGH: Volume > 200 AND KD < 40 AND intent is Commercial or Transactional
  • MEDIUM: Doesn't meet HIGH criteria but has meaningful volume or strategic importance
  • LOW: Low volume, high difficulty, or informational with limited conversion value

Direction Prompt Output Format (Mandatory)

This format is non-negotiable. The text_parser.py script performs label-exact extraction. If any label deviates from the format below — wrong case, extra space, missing underscore — the Notion property will arrive empty.

After data gathering, output the brief using EXACTLY this structure:

TARGET_KEYWORD: [keyword]
VOLUME: [number or "not available"]
CPC: [decimal or "not available"]
DIFFICULTY: [0-100 integer or "not available"]
SEARCH_INTENT: [Informational | Commercial | Transactional | Navigational]
AUDIENCE: [persona — job title or role]
RECOMMENDED_H1: [final proposed title]
CONTENT_ANGLE: [one paragraph describing the unique angle, why this beats competitors, what the post must do]
WORD_COUNT: [number]
SCHEMA: [schema type — e.g., FAQ, HowTo, Article, FAQ + HowTo]
PRIORITY: [HIGH | MEDIUM | LOW]
H2_OUTLINE:
- H2: [heading]
  - H3: [subheading]
  - H3: [subheading]
- H2: [heading]
  - H3: [subheading]
FAQ:
- Q: [question the audience actually searches]
- Q: [question]
- Q: [question]
INTERNAL_LINKS:
- [anchor text] → [relative URL or page title if URL unknown]
WRITER_NOTES:
[one paragraph of specific guidance: tone, POV, what to avoid, key differentiators to emphasize, CTAs, any client-specific requirements]

Critical rules:

  • Every field label must appear exactly as shown (ALL_CAPS with underscores)
  • SEARCH_INTENT value must exactly match one of the four options (capitalized)
  • PRIORITY value must be exactly HIGH, MEDIUM, or LOW
  • H2_OUTLINE, FAQ, INTERNAL_LINKS, WRITER_NOTES are block fields — content follows on the next line(s)
  • No additional text before TARGET_KEYWORD or after WRITER_NOTES block

Workflow Architecture (9 Nodes)

NodeRoleTool
1 — InputAccept keyword + optional client/audience contextUser message
2 — Keyword MetricsPull volume, KD, CPC, SERP typeAhrefs MCP OR WebSearch fallback
3 — SERP ScrapeExtract H2/H3 from top 3 organic resultsWebFetch
4 — Brief GenerationProcess data through Direction prompt → structured outputClaude (this skill)
5 — Text ParserExtract labeled fields → structured variablesscripts/text_parser.py
6 — Conditional RouterRoute based on PRIORITY valueRouting logic
7A — Notion Create (HIGH)Create page, Status = "Briefed: Ready for Assignment"Notion MCP
7B — Notion Create (MED/LOW)Create page, Status = "Briefed: Weekly Review Queue"Notion MCP
8A — Slack Notify (HIGH only)Post brief summary + Notion link to channelSlack MCP
9 — Calendar SyncCreate linked entry in Content Calendar databaseNotion MCP

In Claude Code without MCP connectors: Nodes 1–5 run automatically. Nodes 6–9 produce a ready-to-paste summary and instruct the user on manual Notion entry.

Batch Processing Mode

Trigger: user provides a CSV with a Target Keyword column (optional Priority Override column).

Process:

  1. Confirm CSV is readable and Target Keyword column exists
  2. Run each keyword through the full pipeline sequentially
  3. Output all briefs in sequence, separated by ---
  4. After all briefs: output a summary table (keyword | priority | word count | schema)

Expected throughput: 20 briefs in 20–25 minutes (60–75 seconds per brief).

If any keyword fails (no SERP data, ambiguous intent): note it in the summary table as [FAILED — reason] and continue processing remaining keywords.

Show full SKILL.md (473 more words)Show less

Notion Push (When MCP Available)

Map parser output to Notion properties using references/notion-schema.md.

Two paths based on PRIORITY:

HIGH:

  • Status → "Briefed: Ready for Assignment"
  • Target Publish Date → today + 14 days
  • Trigger Slack notification (Node 8A)

MEDIUM:

  • Status → "Briefed: Weekly Review Queue"
  • Target Publish Date → today + 28 days

LOW:

  • Status → "Briefed: Weekly Review Queue"
  • Target Publish Date → today + 42 days

After page creation: run Calendar Sync (Node 9) to create linked entry in Content Calendar database.

Pre-check before creating: query Notion for existing page with same TARGET_KEYWORD. If found → route to update_page instead of create_page to prevent duplicates.

Multi-Client Setup

Each client has:

  • Separate Notion integration token
  • Separate database ID
  • Client-specific Direction prompt variant (adjust audience, tone, internal link base URLs)

Onboarding a new client: ~45–60 minutes to configure connector + test one brief end-to-end.

Output When Notion MCP Is Not Connected

If Notion MCP is not available, after generating the Direction prompt output, append:

---
NOTION PUSH: Not connected. To add this brief to Notion manually:

1. Open your Notion database
2. Create a new page
3. Paste the following field values:
   [formatted summary of all extracted fields]

Or run: python scripts/text_parser.py brief.txt --output json
to get a JSON payload ready for the Notion API.
---

Validation Gate

After generating output, mentally verify:

  • All 11 simple fields are present and non-empty
  • SEARCH_INTENT is one of the 4 valid values
  • PRIORITY is exactly HIGH, MEDIUM, or LOW
  • H2_OUTLINE has at least 4 H2s each with at least 1 H3
  • FAQ has at least 3 questions
  • INTERNAL_LINKS has at least 2 entries
  • WRITER_NOTES is a substantive paragraph (not a placeholder)

Run scripts/brief_validator.py on the output file for automated validation.

Error Handling

SituationBehavior
No keyword data availableSet numeric fields to "not available", add note in WRITER_NOTES instructing editor to verify manually
SERP scrape blocked (403/paywalled)Skip scrape, note "competitor outline not available" in WRITER_NOTES, proceed with brief
Ambiguous search intentDefault to Informational; flag in WRITER_NOTES: "Intent ambiguous — verify before briefing writer"
Select value mismatch in NotionCapitalize values exactly; Notion select is case-sensitive
Duplicate keyword detectedRoute to update_page instead of create_page
>2 empty properties in parsed briefFlag for manual review; do not push to Notion
Batch keyword failsNote in summary table, continue processing
CSV missing Target Keyword columnStop and ask user to confirm column name

See references/error-handling.md for full failure-point catalog.

Tooling

ScriptRole
scripts/text_parser.pyExtracts labeled fields from Direction prompt output → structured dict. python text_parser.py brief.txt --output json
scripts/brief_validator.pyValidates all required fields are present, values are in allowed sets. python brief_validator.py brief.txt

References

  • references/notion-schema.md — Notion database property config (names, types, allowed values)
  • references/routing-logic.md — Priority scoring rules and publish date calculations
  • references/error-handling.md — Known failure points and fixes

Anti-Patterns To Reject

  • Deviating from the mandatory Direction prompt label format (breaks parser)
  • Using lowercase or mixed-case field labels (TARGET_KEYWORD not Target_Keyword)
  • Putting SEARCH_INTENT outside the four allowed values
  • Generating a brief without first gathering keyword + SERP data
  • Asking multiple intake questions before running
  • Writing vague WRITER_NOTES ("write a good post about this topic")
  • Fabricating keyword metrics when data is unavailable — always flag as "not available"
  • Pushing to Notion when >2 fields are empty

© Infrasity-Labs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (scripts, references) in notion-skills/content-brief of Infrasity-Labs/dev-gtm-claude-skills.

  • SKILL.md
  • references/error-handling.md
  • references/notion-schema.md
  • references/routing-logic.md
  • scripts/brief_validator.py
  • scripts/text_parser.py

Open the folder on GitHubat commit 02cfefb

Compare with similar skills

Content Brief next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Content Brief compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Content Brief this skillInfrasity-Labs/dev-gtm-claude-skills136—~2.8kAutomated safety check: PassMIT
SEO Content Gap Auditrampstackco/claude-skills945—~2.3kAutomated safety check: PassMIT
SEO Keyword Gap Auditrampstackco/claude-skills945—~2kAutomated safety check: PassMIT
Content Creatorsickn33/agentic-awesome-skills47k1 repos~2.5kAutomated safety check: PassMIT
Local Content Strategygarrettjsmith/localseoskills121—~2.8kAutomated safety check: PassMIT
Topic Cluster Planninginhouseseo/superseo-skills352—~1.7kAutomated safety check: PassApache-2.0

Similar skills

  • SEO Content Gap Audit

    rampstackco/claude-skills

    Audit content gaps and decay using Ahrefs MCP data: missing topics, thin coverage, outdated content, and decaying pages.

    945 GitHub stars~2.3k tokensUpdated 4 days ago
    Marketing & SEOAuto-check passed
  • SEO Keyword Gap Audit

    rampstackco/claude-skills

    Find keywords competitors rank for that the target property does not, and prioritize them by opportunity.

    945 GitHub stars~2k tokensUpdated 4 days ago
    Marketing & SEOAuto-check passed
  • Content Creator

    sickn33/agentic-awesome-skills

    Drafts and reviews audience-specific content from supplied brand examples, with local scripts for brand voice and SEO diagnostics, channel templates and a content calendar.

    47k GitHub starsUsed in 1 repo~2.5k tokens
    Writing & ContentAuto-check passed
  • Local Content Strategy

    garrettjsmith/localseoskills

    Build a complete local content strategy from keyword research output.

    121 GitHub stars~2.8k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Topic Cluster Planning

    inhouseseo/superseo-skills

    A skill your agent uses when planning a topic cluster (hub + spokes) for a new content area.

    352 GitHub stars~1.7k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Blog Brief

    AgriciDaniel/claude-blog

    Generate detailed content briefs for blog posts with target keywords, content outlines, competitive analysis, recommended statistics, image and chart suggestions, word count targets, internal…

    2.3k GitHub stars~3.2k tokensUpdated 2 days ago
    Writing & ContentAuto-check passed

More from Infrasity-Labs/dev-gtm-claude-skills

All 26 skills in this repo
  • Brief Outline Generator

    Infrasity-Labs/dev-gtm-claude-skills

    Generates a fully structured SEO content outline (not a finished brief) and exports it as a formatted .docx Word document.

    136 GitHub stars~4k tokensUpdated 3 mo ago
    Auto-check passed
  • API Docs Quality Report

    Infrasity-Labs/dev-gtm-claude-skills

    Audits any API documentation site by crawling every endpoint page and scoring each one across 5 checks: description quality, OpenAPI spec presence, body param descriptions, response codes, and…

    136 GitHub stars~2.5k tokensUpdated 3 mo ago
    Auto-check passed
  • Docs Auditor

    Infrasity-Labs/dev-gtm-claude-skills

    Audits any developer documentation site across 33 checks in 7 categories and produces a scored report (out of 100) with Pass / Warn / Fail status per check.

    136 GitHub stars~3k tokensUpdated 3 mo ago
    Auto-check passed
  • Growth Report

    Infrasity-Labs/dev-gtm-claude-skills

    Generates a 3-month SEO performance HTML report for any domain using DataForSEO data.

    136 GitHub stars~4k tokensUpdated 3 mo ago
    Auto-check passed
  • Inbox

    Infrasity-Labs/dev-gtm-claude-skills

    Email triage system that handles both one-time setup and recurring triage in a single skill.

    136 GitHub stars~4.8k tokensUpdated 3 mo ago
    Auto-check passed
  • LLMs Txt Checker

    Infrasity-Labs/dev-gtm-claude-skills

    Audits any domain's AI-readiness by using curl to directly probe robots.txt, llms.txt, and llms-full.txt, then scores each file against a structured checklist and delivers a formatted report with…

    136 GitHub stars~2.4k tokensUpdated 3 mo ago
    Auto-check passed

Questions about Content Brief

What does Content Brief do?

Generates a fully structured SEO content brief for a target keyword and optionally pushes it to a Notion database. Content Brief is an agent skill from Infrasity-Labs/dev-gtm-claude-skills. Generates a fully structured SEO content brief for a target keyword and optionally pushes it to a Notion database.

When should I use Content Brief?

Content Brief fits situations like: the user says create a content brief; brief this keyword; run a content brief for; generate a brief.

How do I install Content Brief in Claude Code?

Run `npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill content-brief -a claude-code`. Or copy the skill folder (notion-skills/content-brief in Infrasity-Labs/dev-gtm-claude-skills) into .claude/skills/content-brief in your project. Claude Code loads it when a task matches its description.

How do I install Content Brief in Codex?

Run `npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill content-brief -a codex`. Or copy the skill folder (notion-skills/content-brief in Infrasity-Labs/dev-gtm-claude-skills) into .agents/skills/content-brief in your project. Codex loads it when a task matches its description.

Can I use Content Brief in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Infrasity-Labs/dev-gtm-claude-skills --skill content-brief -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/content-brief, .gemini/skills/content-brief, .github/skills/content-brief and .opencode/skills/content-brief in your project.

What does Content Brief need to run?

Going by SKILL.md and its folder, Content Brief needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3.

Does Content Brief access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Content Brief safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Content Brief use?

Content Brief is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Content Brief use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.6k tokens, read only when the agent opens those files.

What are the alternatives to Content Brief?

Skills that share tags, products or a category with Content Brief: SEO Content Gap Audit (rampstackco/claude-skills, 945 stars), SEO Keyword Gap Audit (rampstackco/claude-skills, 945 stars), Content Creator (sickn33/agentic-awesome-skills, 47k stars) and Local Content Strategy (garrettjsmith/localseoskills, 121 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Content Brief?

Infrasity-Labs (a GitHub user) maintains it in Infrasity-Labs/dev-gtm-claude-skills, which has 136 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on June 28, 2026.

Source: Infrasity-Labs/dev-gtm-claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.