Agent skill
marketing-seo-research
Research SEO keywords and search metrics for a topic (DataForSEO with AI research fallback), then produce an SEO context block and a target keyword for content.
Filed under Content and SEO.
From b2bforce/b2bforce · 29 skills · 2 · pushed 2026-08-21
What it does when it runs
Research SEO keywords and search metrics for a topic (DataForSEO with AI research fallback), then produce an SEO context block and a target keyword for content. Use when the user wants keyword research, SEO data, or a target keyword for a content idea or draft. Read firm profile for industry/location.
Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- DATAFORSEO_PASSWORD
- EXA_API_KEY
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It does act, so it runs under whatever permissions your session already grants. - Actions present in the files
- shell
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/b2bforce/b2bforce.git /tmp/b2bforce git -C /tmp/b2bforce sparse-checkout set ".agents/skills/marketing-seo-research" mkdir -p ~/.claude/skills/marketing-seo-research cp -R "/tmp/b2bforce/.agents/skills/marketing-seo-research/." ~/.claude/skills/marketing-seo-research/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
Before you install: this skill will not complete its job on a bare agent. It needs DATAFORSEO_PASSWORD, EXA_API_KEY, which you have to obtain separately.
The skill
Source on GitHub ↗Reproduced in full from b2bforce/b2bforce/blob/7682ed90c62190a0f3c09eb135596d08bd6890bc/.agents/skills/marketing-seo-research/SKILL.md, which is licensed MIT (skill frontmatter). 643 words, 13 headings.
SEO Research
Keyword research + search metrics to enrich content ideas and drafts with a
target_keyword and an SEO context block.
When to Use
- User wants keyword research or SEO data for a topic
- Picking a target_keyword for a content idea (
content/ideas/{slug}.md) - Generating an SEO context block to feed into a blog draft or service page
Read First
workspace/firm/profile.md — industry and geography/location (DataForSEO
location name format, e.g. "Poland", "United States"). Default location: Poland.
Workflow
1. Keyword research (with fallback)
researchKeywords(topic, industry, location):
- DataForSEO (preferred) —
getKeywordData(keyword, location)→{ keyword, search_volume, cpc, competition, competition_level }(default locationPoland). Stored as theprimary_keyword,source: dataforseo. - Fallback: AI research (Exa/Perplexity) when DataForSEO is unset/fails —
ask for 5 high-value B2B keywords for the topic (one per line).
source: ai.
AI keyword query (verbatim shape):
Suggest 5 high-value SEO keywords for B2B content about "{topic}"
[in the {industry} industry]. Format: one keyword per line, no numbering,
just the keyword phrases.
Dry-run (no keys): propose keywords from topic + industry knowledge, mark
source: dry-run.
2. Pick a target keyword
Choose the most relevant, realistic keyword (intent + achievable competition). Prefer specific long-tail over generic head terms for PSF/B2B.
3. Build SEO context block
generateSeoContext(topic, targetKeyword) → a short block for content prompts.
It starts with a SEO Context: header, the target keyword, and (only when
DataForSEO is available) one metrics line with monthly search volume and
competition level — CPC is not included here:
SEO Context:
Target keyword: {target_keyword}
Keyword metrics: {search_volume} monthly searches, competition: {competition_level}
When the keyword research feeds idea generation, the prompt also nudges the model to "include target keywords naturally in content titles where appropriate" — it does not prescribe specific placements (title / first paragraph / H2).
4. Write outputs
- Set
target_keyword:in the relevantcontent/ideas/{slug}.mdfrontmatter. - Save full research to
workspace/marketing/seo/{topic-slug}.md:
---
topic:
location:
source: dataforseo | ai | dry-run
primary_keyword:
search_volume:
competition:
suggestions: []
answer_engine_prompts: [] # prompt slugs from ai-visibility/!_prompts.md
date: 2026-06-01
---
answer_engine_prompts links this research to the panel in
workspace/intelligence/ai-visibility/!_prompts.md. Buyers increasingly ask the
question rather than searching the keyword, and only about a tenth of what answer
engines cite sits in the top 10 organic results — so a keyword can look healthy while
the firm is absent from the answer built on the same intent.
Fill it by matching this topic's buyer intent to existing prompt slugs. Do not create
prompts here; that is intel-ai-visibility, and a panel edited from two places stops
being comparable across batches.
Integration with content pipeline
marketing-content-ideascan call this to attachtarget_keywordper idea.marketing-content-blog-postshould weave the SEO context block into blog drafts.marketing-service-pageshould use SEO context for standalone service pages. LinkedIn/X do not use SEO research.
Rules
- Always degrade gracefully: DataForSEO → AI → dry-run; never hard-fail.
- One primary
target_keywordper content piece; keep secondary as suggestions. - Write for humans — flag and avoid keyword stuffing.
- Location/industry come from firm-context, not guessed per call.
Environment Variables
DATAFORSEO_LOGIN=
DATAFORSEO_PASSWORD=
EXA_API_KEY= # or Perplexity — AI keyword fallback
Related Skills
| Skill | When |
|---|---|
marketing-content-ideas | Attach target keywords to ideas |
marketing-content-blog-post | Consume SEO context in blog drafts |
marketing-service-page | Consume SEO context in standalone service pages |
intel-ai-visibility | The same buyer intent measured in answer engines instead of SERPs |
firm-context | Industry + target location |
Scope
This skill covers classic search. It is still worth running — but it measures one
channel, and answer_engine_prompts exists so the file says which. Do not stretch
keyword volume into a claim about AI visibility; they are different measurements with
little overlap.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- ai-seo by coreyhaines31 · 45,947
- co-marketing by coreyhaines31 · 45,947
- community-marketing by coreyhaines31 · 45,947
- customer-research by coreyhaines31 · 45,947
- influencer-marketing by coreyhaines31 · 45,947
- marketing-council by coreyhaines31 · 45,947
- marketing-ideas by coreyhaines31 · 45,947
- marketing-loops by coreyhaines31 · 45,947
Need help setting it up?
This page tells you what marketing-seo-research does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.