# Marketing Seo Research

> >-

- **Type:** Skill
- **Install:** `agentstack add skill-b2bforce-b2bforce-marketing-seo-research`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [b2bforce](https://agentstack.voostack.com/s/b2bforce)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [b2bforce](https://github.com/b2bforce)
- **Source:** https://github.com/b2bforce/b2bforce/tree/main/.agents/skills/marketing-seo-research
- **Website:** https://www.b2bforce.ai/

## Install

```sh
agentstack add skill-b2bforce-b2bforce-marketing-seo-research
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## 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)`:

1. **DataForSEO** (preferred) — `getKeywordData(keyword, location)` →
   `{ keyword, search_volume, cpc, competition, competition_level }`
   (default location `Poland`). Stored as the `primary_keyword`, `source: dataforseo`.
2. **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):

```text
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:

```text
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 relevant `content/ideas/{slug}.md` frontmatter.
- Save full research to
  `workspace/marketing/seo/{topic-slug}.md`:

```yaml
---
topic:
location:
source: dataforseo | ai | dry-run
primary_keyword:
search_volume:
competition:
suggestions: []
date: 2026-06-01
---
```

## Integration with content pipeline

- `marketing-content-ideas` can call this to attach `target_keyword` per idea.
- `marketing-content-blog-post` should weave the SEO context block into blog
  drafts.
- `marketing-service-page` should use SEO context for standalone service pages.
  LinkedIn/X do **not** use SEO research.

## Rules

1. Always degrade gracefully: DataForSEO → AI → dry-run; never hard-fail.
2. One primary `target_keyword` per content piece; keep secondary as suggestions.
3. Write for humans — flag and avoid keyword stuffing.
4. Location/industry come from firm-context, not guessed per call.

## Environment Variables

```bash
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](https://github.com/b2bforce)
- **Source:** [b2bforce/b2bforce](https://github.com/b2bforce/b2bforce)
- **License:** MIT
- **Homepage:** https://www.b2bforce.ai/

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-b2bforce-b2bforce-marketing-seo-research
- Seller: https://agentstack.voostack.com/s/b2bforce
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
