Some checks failed
Verify Skills / verify-skills (push) Has been cancelled
Adopt: directory keeps its NN- ordering prefix; skill `name:` is the clean form without it (dir 16-seo-schema-validator → name: seo-schema-validator). Nicer to invoke, matches the original desktop/SKILL.md names, still globally unique. - 71 root SKILL.md: name: NN-foo → name: foo (flat skills + reference-curator suite). Plugins (mac-optimizer/multi-agent-guide/dintel-bootstrap) already clean; 95 already clean. - scripts/migrate_skill_root.py: derive name = dirname minus NN- prefix (skill_name()). - CLAUDE.md + SKILL-MIGRATION-GUIDE.md: document the dir-prefix / clean-name convention. verify_skills.py: 0 name collisions across all renamed skills. (The ~/.claude/skills symlinks were re-pointed to the clean names separately — filesystem only.) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
178 lines
7.5 KiB
Markdown
178 lines
7.5 KiB
Markdown
---
|
|
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, 지식 그래프, 엔티티 SEO,
|
|
지식 패널, 브랜드 엔티티, 위키데이터.
|
|
---
|
|
|
|
# Knowledge Graph & Entity SEO
|
|
|
|
Analyze brand entity presence in Google Knowledge Graph, Knowledge Panels, People Also Ask (PAA), and FAQ rich results. Check entity attribute completeness, Wikipedia/Wikidata presence, and Korean equivalents (Naver knowledge iN, Naver encyclopedia).
|
|
|
|
## Capabilities
|
|
|
|
### Knowledge Graph Analysis
|
|
- Knowledge Panel detection and attribute extraction
|
|
- Entity attribute completeness scoring (name, description, logo, type, social profiles, website, founded, CEO)
|
|
- Wikipedia article presence check
|
|
- Wikidata entity presence check (QID lookup)
|
|
- Naver encyclopedia (네이버 백과사전) presence
|
|
- Naver knowledge iN (지식iN) presence
|
|
|
|
### Entity SEO Audit
|
|
- People Also Ask (PAA) monitoring for brand-related queries
|
|
- FAQ schema presence tracking (FAQPage schema -> SERP appearance)
|
|
- Entity markup audit (Organization, Person, LocalBusiness schema on website)
|
|
- Social profile linking validation (sameAs in schema)
|
|
- Brand SERP analysis (what appears when you search the brand name)
|
|
- Entity consistency across web properties
|
|
|
|
## Workflow
|
|
|
|
### Knowledge Graph Analysis
|
|
|
|
1. Use **WebSearch** to search for the entity name on Google
|
|
2. Analyze search results for Knowledge Panel indicators
|
|
3. Use **WebFetch** to check Wikipedia article existence
|
|
4. Use **WebFetch** to check Wikidata QID existence
|
|
5. Use **WebFetch** to check Naver encyclopedia and 지식iN
|
|
6. Score entity attribute completeness
|
|
7. Save report to **Notion** SEO Audit Log
|
|
|
|
### Entity SEO Audit
|
|
|
|
1. Use **WebFetch** to fetch the website and extract JSON-LD schemas
|
|
2. Validate Organization/Person/LocalBusiness schema completeness
|
|
3. Check sameAs links accessibility
|
|
4. Use **WebSearch** to search brand name and analyze SERP features
|
|
5. Monitor PAA questions for brand keywords
|
|
6. Use **WebSearch** for SERP feature detection
|
|
7. Save report to **Notion** SEO Audit Log
|
|
|
|
## Data Source Selection
|
|
|
|
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
|
|
|
|
All reports must be saved to the OurDigital SEO Audit Log database.
|
|
|
|
| Field | Value |
|
|
|-------|-------|
|
|
| Database ID | `2c8581e5-8a1e-8035-880b-e38cefc2f3ef` |
|
|
| Category | Knowledge Graph & Entity SEO |
|
|
| Audit ID | KG-YYYYMMDD-NNN |
|
|
|
|
Report content should be written in Korean (한국어), keeping technical English terms as-is.
|
|
|
|
## Output Format
|
|
|
|
```json
|
|
{
|
|
"entity_name": "OurDigital",
|
|
"knowledge_panel": {
|
|
"present": false,
|
|
"attributes": {}
|
|
},
|
|
"entity_presence": {
|
|
"wikipedia": false,
|
|
"wikidata": false,
|
|
"wikidata_qid": null,
|
|
"naver_encyclopedia": false,
|
|
"naver_knowledge_in": false,
|
|
"google_knowledge_panel": false
|
|
},
|
|
"entity_schema": {
|
|
"organization_count": 2,
|
|
"person_count": 1,
|
|
"same_as_links": ["https://linkedin.com/...", "https://facebook.com/..."],
|
|
"same_as_count": 2,
|
|
"issues": [
|
|
"Duplicate Organization schemas with inconsistent names",
|
|
"Placeholder image in Organization schema",
|
|
"Only 2 sameAs links (recommend 6+)"
|
|
]
|
|
},
|
|
"paa_questions": [],
|
|
"faq_schema_present": false,
|
|
"entity_completeness_score": 12,
|
|
"recommendations": [
|
|
"Create Wikidata entity for brand recognition",
|
|
"Add 4-6 more sameAs social profile links",
|
|
"Replace placeholder image with actual brand logo",
|
|
"Consolidate duplicate Organization schemas",
|
|
"Add FAQPage schema to relevant pages"
|
|
],
|
|
"audit_id": "KG-20250115-001",
|
|
"timestamp": "2025-01-15T14:30:00"
|
|
}
|
|
```
|
|
|
|
## Limitations
|
|
|
|
- Google Knowledge Panel detection via search results is not guaranteed (personalization, location-based)
|
|
- Direct Google scraping may be blocked (403/429); prefer WebSearch tool
|
|
- Wikipedia/Wikidata creation requires meeting notability guidelines
|
|
- PAA questions vary by location and device
|
|
- Entity completeness scoring is heuristic-based
|
|
|
|
## Reference Scripts
|
|
|
|
Located in `code/scripts/`:
|
|
- `knowledge_graph_analyzer.py` — Knowledge Panel and entity presence analysis
|
|
- `entity_auditor.py` — Entity SEO signals and PAA/FAQ audit
|
|
- `base_client.py` — Shared async client utilities
|