Install
$ agentstack add skill-b2bforce-b2bforce-marketing-seo-research ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
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 location Poland). Stored as the primary_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: []
date: 2026-06-01
---
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 | | firm-context | Industry + target location |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: b2bforce
- Source: b2bforce/b2bforce
- License: MIT
- Homepage: https://www.b2bforce.ai/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.