---
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
