feat(seo-skills): multi-backend Data Source Selection (#7)
Replaces single-vendor (Ahrefs-only) tool defaults with a per-task backend menu across all 14 SEO skills. Each skill now lists every capable MCP in allowed-tools and documents how to pick between Semrush, Ahrefs, OurSEO Agent (CLI + MCP), DataForSEO, and GSC in its SKILL.md Data Source Selection section. Tool stubs (~40 new files) populated per skill with capability deltas, call patterns, and explicit "not for this skill when" callouts so the menu is self-correcting. Skills affected: 19-keyword-strategy, 20-serp-analysis, 21-position-tracking, 22-link-building, 23-content-strategy, 24-ecommerce, 25-kpi-framework, 26-international, 27-ai-visibility, 28-knowledge-graph, 31-competitor-intel, 32-crawl-budget, 33-migration-planner, 34-reporting-dashboard. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -51,14 +51,60 @@ Analyze brand entity presence in Google Knowledge Graph, Knowledge Panels, Peopl
|
||||
6. Use **WebSearch** for SERP feature detection
|
||||
7. Save report to **Notion** SEO Audit Log
|
||||
|
||||
## Tools Used
|
||||
## Data Source Selection
|
||||
|
||||
| Tool | Purpose |
|
||||
|------|---------|
|
||||
| WebSearch | Search for entity/brand to detect Knowledge Panel |
|
||||
| WebFetch | Fetch Wikipedia, Wikidata, Naver pages, website schemas |
|
||||
| WebSearch | SERP feature detection for entity keywords |
|
||||
| Notion | Save audit reports to SEO Audit Log database |
|
||||
Entity / Knowledge Graph work spans **KG API lookups**, **on-page schema audit**, **third-party presence checks** (Wikipedia, Wikidata, Naver), and **brand SERP analysis**. Different backends own different slices.
|
||||
|
||||
| Backend | Best for | Notes |
|
||||
|---|---|---|
|
||||
| **OurSEO** (CLI + MCP) | **Default** for KG lookups, entity audit, schema generation + fix | CLI: `our research kg lookup`, `our research kg resolve`, `our audit entity`, `our audit sameas`, `our build kg-schema`, `our fix entity-schema`. MCP: `mcp__ourseo__search_knowledge_graph`. Only backend with an integrated KG + entity-fix path. |
|
||||
| **WebSearch / WebFetch** | Knowledge Panel detection, PAA monitoring, Wikipedia / Wikidata / Naver encyclopedia presence | KG Panel detection via direct Google search is heuristic but unavoidable — no MCP exposes Knowledge Panel structure directly. |
|
||||
| **Ahrefs MCP** (`mcp__ahrefs__*`) | SERP-level entity queries — PAA, brand SERP, FAQ schema appearance | `serp-overview`, `gsc-keywords` (first-party brand query data), `site-audit-issues` for missing schema. |
|
||||
| **Semrush MCP** (`mcp__semrush__*`) | Brand SERP overview, organic positions for entity-related queries | No dedicated KG endpoints — supplementary only. |
|
||||
|
||||
### How to pick
|
||||
|
||||
1. **User named a backend explicitly** → use it.
|
||||
2. **User preference memory** — read `feedback_seo_tool_preferences.md`; honor the task-type default.
|
||||
3. **Task is KG lookup / entity resolution / sameAs validation / schema fix** → use **OurSEO** (CLI primary, MCP for Desktop). No alternative covers this end-to-end.
|
||||
4. **Task is Wikipedia / Wikidata / Naver encyclopedia presence** → WebSearch + WebFetch (no MCP backend covers third-party encyclopedias).
|
||||
5. **Task is brand SERP analysis** → Ahrefs `serp-overview` or Semrush `overview_research`, paired with WebSearch for Knowledge Panel detection.
|
||||
6. **Default**: **OurSEO `our research kg`** + WebSearch for third-party presence.
|
||||
7. **Still ambiguous + non-trivial** → ask once via `AskUserQuestion`.
|
||||
|
||||
### Backend call patterns
|
||||
|
||||
**OurSEO CLI (default — KG lookup + entity audit + fix):**
|
||||
```bash
|
||||
our research kg lookup "<entity>" --language ko
|
||||
our research kg resolve "<entity>" --domain <site> --language ko
|
||||
our audit entity https://<site> --entity "<entity>" --language ko
|
||||
our audit sameas https://<site> --brand "<brand>"
|
||||
our build kg-schema --type Organization --name "<entity>" --url https://<site> --auto-sameas
|
||||
our fix entity-schema --site https://<site> --type Organization --entity-name "<entity>" --auto-sameas --cms ghost --deploy
|
||||
```
|
||||
|
||||
**OurSEO MCP (Claude Desktop):**
|
||||
```
|
||||
mcp__ourseo__search_knowledge_graph(query="<entity>", language="ko")
|
||||
```
|
||||
|
||||
**Third-party presence (WebSearch / WebFetch):**
|
||||
```
|
||||
WebSearch: "<entity>" site:wikipedia.org
|
||||
WebFetch: https://www.wikidata.org/wiki/Special:Search?search=<entity>
|
||||
WebSearch: "<entity>" site:terms.naver.com # Naver encyclopedia
|
||||
WebSearch: "<entity>" site:kin.naver.com # Naver 지식iN
|
||||
```
|
||||
|
||||
**Brand SERP analysis (Ahrefs / Semrush):**
|
||||
```
|
||||
mcp__ahrefs__serp-overview(keyword="<brand>", country="us")
|
||||
mcp__ahrefs__gsc-keywords(project_id="<id>") # First-party brand query data
|
||||
mcp__semrush__overview_research(query="<brand>", database="us")
|
||||
```
|
||||
|
||||
Always record the chosen data source(s) in the report **Overview** so future audits can compare like-for-like.
|
||||
|
||||
## Notion Output
|
||||
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
name: seo-knowledge-graph
|
||||
description: |
|
||||
Knowledge Graph and entity SEO analysis. Triggers: knowledge panel, entity SEO, knowledge graph, PAA, FAQ schema, Wikipedia, Wikidata, brand entity.
|
||||
|
||||
# Allowed tools list every backend the skill can pull entity / Knowledge Graph data from.
|
||||
# Per-task selection happens in SKILL.md > Data Source Selection — NOT here.
|
||||
allowed-tools:
|
||||
- mcp__ahrefs__*
|
||||
- mcp__ourseo__* # default — search_knowledge_graph + audit_page entity schema
|
||||
- mcp__semrush__* # supplementary (no direct KG endpoints)
|
||||
- mcp__ahrefs__* # site-audit-* for schema issues; gsc-* for entity query data
|
||||
- mcp__claude_ai_Ahrefs__* # Ahrefs (Claude.ai namespace)
|
||||
- Bash # `our research kg *`, `our audit entity`, `our build kg-schema`
|
||||
- mcp__notion__*
|
||||
- WebSearch
|
||||
- WebSearch # Wikipedia / Wikidata / Naver presence checks
|
||||
- WebFetch
|
||||
|
||||
53
custom-skills/28-seo-knowledge-graph/desktop/tools/ourseo.md
Normal file
53
custom-skills/28-seo-knowledge-graph/desktop/tools/ourseo.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# OurSEO Agent (CLI + MCP)
|
||||
|
||||
**Default** for Knowledge Graph + entity SEO end-to-end. Only backend with an integrated KG lookup → entity audit → schema build → schema fix workflow.
|
||||
|
||||
## CLI commands (Claude Code)
|
||||
|
||||
```bash
|
||||
# KG lookup (Google KG Search API)
|
||||
our research kg lookup "<entity>" --language ko
|
||||
our research kg resolve "<entity>" --domain <site> --language ko
|
||||
|
||||
# Entity audit (sameAs, entity schemas on the site)
|
||||
our audit entity https://<site> --entity "<entity>" --language ko
|
||||
our audit sameas https://<site> --brand "<brand>"
|
||||
|
||||
# Build entity schema as JSON-LD @graph
|
||||
our build kg-schema --type Organization --name "<entity>" --url https://<site> --auto-sameas
|
||||
|
||||
# Fix entity schema in CMS (Ghost / WordPress / Strapi)
|
||||
our fix entity-schema --site https://<site> --type Organization \
|
||||
--entity-name "<entity>" --auto-sameas --cms ghost --deploy
|
||||
|
||||
# Archive audit to Notion
|
||||
our output notion kg-audit --input entity-report.json
|
||||
```
|
||||
|
||||
## MCP tools (Claude Desktop)
|
||||
|
||||
```
|
||||
mcp__ourseo__search_knowledge_graph(query="<entity>", language="ko")
|
||||
```
|
||||
|
||||
## Strengths for this skill
|
||||
|
||||
- **Only end-to-end path**: KG lookup → entity audit → schema build → CMS deploy.
|
||||
- **sameAs validation** — checks that JSON-LD sameAs links resolve (not 404 / 403).
|
||||
- **Korean coverage** — Korean entity workflows (Naver encyclopedia, 지식iN) baked in via the CLI.
|
||||
- **`@graph` JSON-LD output** with auto-sameAs — produces deploy-ready schema.
|
||||
|
||||
## Not for this skill when
|
||||
|
||||
- **Knowledge Panel detection on Google SERP** — WebSearch (no MCP exposes Knowledge Panel structure).
|
||||
- **Wikipedia / Wikidata presence** — WebSearch / WebFetch.
|
||||
- **First-party brand-query data** (impressions, CTR for brand searches) — GSC or Ahrefs `gsc-keywords`.
|
||||
|
||||
## Config
|
||||
|
||||
| Env var | Purpose |
|
||||
|---|---|
|
||||
| `GOOGLE_KG_API_KEY` | Knowledge Graph Search API key (op://Development/...) |
|
||||
| `OURSEO_GHOST_API_KEY` / `OURSEO_WP_*` / `OURSEO_STRAPI_API_TOKEN` | CMS adapter auth for `--deploy` |
|
||||
|
||||
Cross-reference: [[reference_1password_api_credentials]] in memory.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Semrush MCP
|
||||
|
||||
Semrush has **no dedicated Knowledge Graph / entity endpoints.** Use only as a supplement for **brand SERP overview** and organic positions on entity-related queries.
|
||||
|
||||
Call pattern: discovery → `get_report_schema` → `execute_report`.
|
||||
|
||||
## What Semrush can do here
|
||||
|
||||
```
|
||||
# Brand SERP overview — what shows up for the brand name
|
||||
mcp__semrush__overview_research(query="<brand>", database="us")
|
||||
|
||||
# Organic positions for entity-related queries (FAQ-style queries the entity should answer)
|
||||
mcp__semrush__organic_research(query="<brand>", database="us")
|
||||
```
|
||||
|
||||
## Not for this skill when
|
||||
|
||||
- **Knowledge Graph lookup / entity resolution** — OurSEO `search_knowledge_graph` / `our research kg lookup`.
|
||||
- **Wikipedia / Wikidata / Naver encyclopedia presence** — WebSearch / WebFetch.
|
||||
- **Entity schema audit + fix** (Organization, Person, LocalBusiness, sameAs) — OurSEO `our audit entity` / `our fix entity-schema`.
|
||||
- **PAA / FAQ rich result detection** — WebSearch on the brand SERP.
|
||||
|
||||
## When Semrush is useful here
|
||||
|
||||
- Branded vs non-branded query split for the entity (post-process `organic_research` output).
|
||||
- Competitor entity comparison ("does competitor X also have an organic presence for entity Y?").
|
||||
|
||||
Always pair with OurSEO + WebSearch for the actual entity work; Semrush is auxiliary here.
|
||||
Reference in New Issue
Block a user