{"id":"652d0e3d-b4cf-42c0-abfe-fcba1768ace9","shortId":"FbHWHj","kind":"skill","title":"seo-content-audit","tagline":"E-E-A-T + CITE quality audit for an EXISTING piece of content. Scores Experience, Expertise, Authoritativeness, Trustworthiness, and citation-readiness for AI search; surfaces veto items that block publication; produces a publish / publish-with-fixes / no-publish verdict. Distinc","description":"# Content Quality Audit\n\nScore an existing piece of content against modern E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) and CITE (Clear answer, Include primary stats, Timestamp, Entity authority) rubrics. Surface veto items that block publication regardless of overall score. Produce a clear publish / publish-with-fixes / no-publish verdict with the top 5 fixes.\n\n## Prerequisites\n\n- SE Ranking MCP server connected.\n- Claude's `WebFetch` tool available.\n- User provides: (a) the URL of an existing piece of content (or pasted content + intended URL), (b) target keyword the content is meant to rank for. Optional: target country (default `us`).\n\n## Process\n\n1. **Fetch content** `WebFetch` (always) + `mcp__firecrawl-mcp__firecrawl_scrape` (when available)\n   - **Validate target & preflight.** See `skills/seo-firecrawl/references/preflight.md` for the canonical 3-stage preflight (credit balance, Firecrawl availability, Google APIs). Skill-specific notes:\n     - Estimated SE Ranking cost for this skill: ~10–15 credits typical (AIO context + AIO prompt sampling for the target keyword + audited URL).\n     - Firecrawl: optional with WebFetch fallback, 1 Firecrawl credit per URL audited (default cap 50 URLs, hard cap 200). Surface the projected Firecrawl credit count before continuing. Pass `--no-firecrawl` to force WebFetch-only inspection (lower-confidence veto checks; see step 4 caveat).\n     - Google APIs: tier 2 (GA4 available) unlocks step 3b (GA4 organic traffic on the audited URL) after the AIO context step. See `skills/seo-google/references/cross-skill-integration.md` § \"seo-content-audit\" for the full recipe.\n   - **WebFetch first** (free, instant): pull the markdown for word count, H-tag hierarchy, source citations (links to authorities, numbered references), images, tables, code blocks, comment thread.\n   - **Page-type detection.** From the URL pattern, H1 phrasing, and JSON-LD `@type`, classify the page as one of: ultimate guide / pillar, how-to, listicle / best-of, comparison (X vs Y), explainer, review (single product), landing page (commercial). Look up the corresponding word-count floor from `references/core-eeat.md` → \"Word-count floors by page type\". Surface the detected type, the applied floor, and the actual word count in `evidence/01-content-snapshot.md`. If the actual word count is materially below the floor, flag it for the depth E-E-A-T items (auto ✗ unless the auditor justifies the exception).\n   - **Firecrawl second** — recovers what WebFetch's markdown loses:\n     - From `metadata`: canonical URL, robots, lang, `og:title`.\n     - From the returned `html`: every `<script type=\"application/ld+json\">` block. Parse for `Article` / `BlogPosting` schema and extract `author` (name, `@type: Person`, optional `url` + `sameAs`), `datePublished` / `dateModified` (ISO 8601), `publisher`, `mainEntityOfPage`. Detect `Person` schema standalone if present.\n     - DOM-level byline detection: locate the structural byline (`<a rel=\"author\">`, `<meta name=\"author\">`, `<span class=\"byline\">`, `[itemprop=\"author\"]`). Distinguish a real byline element from prose mentions (\"Written by Jane in collaboration...\" in body text is not a byline; `<a rel=\"author\">Jane Doe</a>` is).\n   - **If Firecrawl unavailable:** WebFetch portion runs unchanged. Mark schema-type detection and structural byline detection as `(skipped — Firecrawl required)` in `evidence/01-content-snapshot.md`. Step 4's veto checks #1 and #4 fall back to prose-level inspection (less reliable) — surface that caveat in `VERDICT.md`.\n\n2. **AIO context** `DATA_getAiOverview` and `DATA_getAiOverviewLeaderboard`\n   - For the target keyword: is there an AIO?\n   - Who is cited in the AIO?\n   - Is the candidate URL cited?\n   - What patterns characterise the cited sources (publication tier, freshness, structure)?\n\n3. **AIO prompt sampling** `DATA_getAiPromptsByTarget`\n   - Sample LLM prompts where the target URL's domain appears as a source.\n   - Cross-reference with the candidate URL — does it show up in any sampled prompts?\n\n3b. **GA4 organic traffic on the audited URL** *(only if google-api.json is present, tier ≥ 2)*\n   - Replaces the implicit traffic estimation with actual measured organic sessions for the audited URL.\n   - Pull the top organic landing pages (last 28 days):\n     `python3 scripts/ga4_report.py --report top-pages --days 28 --json`\n   - Filter the result client-side for the audited URL's path. Surface in `VERDICT.md` \"## Snapshot\" alongside the existing AIO citation cross-check:\n     - GA4 organic last 28d: `{sessions} sessions / {users} users / avg engagement {n}s`\n     - If the URL doesn't appear in the top-100 organic landing pages: \"GA4: not in top-100 organic landing pages last 28d — low or zero traffic.\"\n   - **This is a signal, not a veto.** Low GA4 traffic on a YMYL page with high E-E-A-T is informative (\"we're not earning the visibility our content quality should support\") but doesn't change the publish decision.\n   - See `skills/seo-google/references/cross-skill-integration.md` § \"seo-content-audit\" for the full recipe.\n\n4. **Score E-E-A-T** using `references/core-eeat.md`\n   - 60-item rubric across 4 dimensions (15 items each).\n   - Per-item: yes/no/partial. Compute dimension scores (0–100% each).\n   - Score the 8-item **AI-content markers** subsection (see references/core-eeat.md → \"AI-content markers\"). Mark each fired/not-fired.\n   - Apply 4 veto checks. Any veto = no-publish.\n     1. Anonymous author on YMYL topic. (High-confidence with Firecrawl-recovered author schema + DOM byline; medium-confidence with prose-only inspection.)\n     2. Factual claims with no sources cited.\n     3. Undisclosed affiliate / sponsored relationships.\n     4. AI-generated YMYL content with no human-review markers (≥4 AI-content markers fired AND YMYL topic AND no editor byline / \"reviewed by\" credit / \"last reviewed\" or \"fact-checked on\" date). The \"editor byline / reviewed by\" check uses Firecrawl-recovered DOM byline + Article-schema `author` when available; falls back to prose-level pattern match if Firecrawl is absent (lower confidence — note in `VERDICT.md`).\n\n5. **Score CITE** using `references/cite.md`\n   - 30-item CITE rubric (Clear answer in 1st 200 words, Include primary stats, Timestamp freshness, Entity authority).\n   - Per-item: yes/no/partial. Compute dimension scores.\n   - Apply 3 veto checks (no answer in first 300 words / no datestamp on time-sensitive content / no entity disambiguation for proper-noun queries).\n\n6. **Cross-check against AIO winners**\n   - For the patterns characteristic of cited sources (from step 2), evaluate the candidate against each: does it have what the cited sources have?\n   - Surface specific gaps.\n\n7. **Synthesise verdict** using `templates/verdict.md`\n   - **Publish:** E-E-A-T ≥ 75%, CITE ≥ 70%, no vetoes triggered.\n   - **Publish with fixes:** E-E-A-T 60–74% OR CITE 55–69%, no vetoes. Top 5 fixes specified.\n   - **No publish:** any veto triggered, OR E-E-A-T < 60%, OR CITE < 55%. Substantial rewrite needed.\n\n## Output format\n\nCreate a folder `seo-content-audit-{target-slug}-{YYYYMMDD}/` with:\n\n```\nseo-content-audit-{target-slug}-{YYYYMMDD}/\n├── VERDICT.md                       (publish / publish-with-fixes / no-publish — primary deliverable; inlines content snapshot + AIO context)\n├── 03-eeat-scoring.md               (60-item rubric scored — load-bearing reference an editor consults item-by-item)\n├── 04-cite-scoring.md               (30-item rubric scored — load-bearing reference)\n├── 05-aio-winner-comparison.md      (gap vs cited sources — must remain top-level; live AIO competitive evidence per EVAL_RESULT_v2.md §9)\n└── evidence/\n    ├── 01-content-snapshot.md       (HTML extracts + page metadata — raw step output)\n    └── 02-aio-context.md            (AIO presence, citations, patterns — raw step output)\n```\n\nStep files 01 + 02 are inlined as a \"Snapshot\" / \"AIO context\" section in `VERDICT.md`; the copies in `evidence/` preserve raw step output. `03-eeat-scoring.md`, `04-cite-scoring.md`, and `05-aio-winner-comparison.md` stay at top level — editors consult the rubric scoring detail directly, and the AIO winner comparison is the live competitive evidence the rubric verdict rests on.\n\n`VERDICT.md` follows this shape (also see `templates/verdict.md`):\n\n```markdown\n# Content Audit: {URL or title}\n\n> Audited {YYYY-MM-DD} · Target keyword: \"{keyword}\" · Country: {country}\n\n## Verdict: {PUBLISH | PUBLISH WITH FIXES | NO PUBLISH}\n\n{One sentence summary of why}\n\n## Scores\n\n| Dimension | Score | Threshold | Status |\n|---|---|---|---|\n| Experience | {n}% | 75% | {✓/✗} |\n| Expertise | {n}% | 75% | {✓/✗} |\n| Authoritativeness | {n}% | 75% | {✓/✗} |\n| Trustworthiness | {n}% | 75% | {✓/✗} |\n| **E-E-A-T composite** | {n}% | 75% | {✓/✗} |\n| Clear answer | {n}% | 70% | {✓/✗} |\n| Include stats | {n}% | 70% | {✓/✗} |\n| Timestamp | {n}% | 70% | {✓/✗} |\n| Entity authority | {n}% | 70% | {✓/✗} |\n| **CITE composite** | {n}% | 70% | {✓/✗} |\n\n## Veto checks\n\n- Anonymous author on YMYL: {triggered / not triggered}\n- Unsourced factual claims: {triggered / not triggered}\n- Undisclosed affiliate / sponsored: {triggered / not triggered}\n- AI-generated YMYL with no human review: {triggered / not triggered} ({n}/8 AI-content markers fired)\n- ...\n\n## AI Search readiness\n- AIO present for \"{keyword}\": {yes/no}\n- Top citation patterns: {list}\n- Candidate URL cited in any sampled AIO: {yes/no}\n- Gap vs cited sources: {bulleted gaps}\n\n## Snapshot (measured)\n- GA4 organic last 28d: {sessions} sessions / {users} users / avg engagement {n}s  *(or `not in top-100` / `not configured (Tier 2 required)`)*\n\n## Top 5 fixes\n\n1. {Specific fix linked to a low-scored item or veto}\n2. ...\n5. ...\n\n## Detailed scoring\n\nSee:\n- 03-eeat-scoring.md (item-by-item E-E-A-T)\n- 04-cite-scoring.md (item-by-item CITE)\n- 05-aio-winner-comparison.md (gap analysis)\n```\n\n## Tips\n\n- Respect rate limit. AIO + AIO-prompts queries are ~5–10 calls; plenty of headroom.\n- Call `DATA_getCreditBalance` before running. ~10–15 SE Ranking credits typical, plus 1 Firecrawl credit per URL audited when Firecrawl is installed (default cap 50 URLs).\n- The thresholds (75% E-E-A-T, 70% CITE) are starting points. Tune per domain — a YMYL site (medical, financial) should require higher (85%/80%); a general-interest blog can run lower (65%/60%).\n- The veto checks are not negotiable. A piece with anonymous authorship on a YMYL topic doesn't pass regardless of score.\n- For pieces that score \"publish with fixes,\" the top-5 list is the deliverable. Hand it to the writer; re-audit after fixes.\n- Pair with `seo-content-brief` for the new-article counterpart: this skill audits existing content, content-brief produces new content.\n- Pair with `seo-sxo` if the page has technical/page-type issues — that's a different diagnosis.\n- The 60-item E-E-A-T rubric and 30-item CITE rubric are in `references/`. They are opinionated — adjust for your domain's editorial standards.","tags":["seo","content","audit","skills","seranking","agent-skills","ai-search","anthropic","backlinks","claude","claude-code","claude-plugin"],"capabilities":["skill","source-seranking","skill-seo-content-audit","topic-agent-skills","topic-ai-search","topic-anthropic","topic-backlinks","topic-claude","topic-claude-code","topic-claude-plugin","topic-claude-skills","topic-content-brief","topic-ga4","topic-keyword-research","topic-mcp"],"categories":["seo-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/seranking/seo-skills/seo-content-audit","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add seranking/seo-skills","source_repo":"https://github.com/seranking/seo-skills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 9 github stars · SKILL.md body (11,007 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:08:35.923Z","embedding":null,"createdAt":"2026-05-18T13:14:09.286Z","updatedAt":"2026-05-18T19:08:35.923Z","lastSeenAt":"2026-05-18T19:08:35.923Z","tsv":"'1':150,211 '10':191 '15':192 '2':254 '200':223 '3':171 '3b':259 '4':249 '5':105 '50':219 'actual':377,384 'ai':29 'aio':195,197,269 'alway':154 'answer':72 'api':179,252 'appli':373 'audit':4,12,51,204,216,265,277 'auditor':406 'author':78,300 'authorit':22,67 'auto':403 'avail':117,162,177,256 'b':134 'balanc':175 'best':338 'best-of':337 'block':35,84,306 'canon':170,420 'cap':218,222 'caveat':250 'check':246 'citat':26,297 'citation-readi':25 'cite':10,70 'classifi':324 'claud':113 'clear':71,92 'code':305 'comment':307 'commerci':350 'comparison':340 'confid':244 'connect':112 'content':3,18,49,57,128,131,138,152,276 'context':196,270 'continu':231 'correspond':354 'cost':187 'count':229,291,357,363,379,386 'countri':146 'credit':174,193,213,228 'default':147,217 'depth':396 'detect':312,370 'distinc':48 'e':6,7,61,62,398,399 'e-e-a-t':5,60,397 'entiti':77 'estim':184 'everi':430 'evidence/01-content-snapshot.md':381 'except':409 'exist':15,54,125 'experi':20,65 'expertis':21,66 'explain':344 'fallback':210 'fetch':151 'firecrawl':157,159,176,206,212,227,235,410 'firecrawl-mcp':156 'first':283 'fix':43,97,106 'flag':392 'floor':358,364,374,391 'forc':237 'free':284 'full':280 'ga4':255,260 'googl':178,251 'guid':331 'h':293 'h-tag':292 'h1':317 'hard':221 'hierarchi':295 'how-to':333 'html':429 'imag':303 'includ':73 'inspect':241 'instant':285 'intend':132 'item':33,82,402 'json':321 'json-ld':320 'justifi':407 'keyword':136,203 'land':348 'lang':423 'ld':322 'link':298 'listicl':336 'look':351 'lose':417 'lower':243 'lower-confid':242 'markdown':288,416 'materi':388 'mcp':110,155,158 'meant':140 'metadata':419 'modern':59 'no-firecrawl':233 'no-publish':44,98 'note':183 'number':301 'og':424 'one':328 'option':144,207 'organ':261 'overal':88 'page':310,326,349,366 'page-typ':309 'pass':232 'past':130 'pattern':316 'per':214 'phrase':318 'piec':16,55,126 'pillar':332 'preflight':165,173 'prerequisit':107 'primari':74 'process':149 'produc':37,90 'product':347 'project':226 'prompt':198 'provid':119 'public':36,85 'publish':39,41,46,93,95,100 'publish-with-fix':40,94 'pull':286 'qualiti':11,50 'rank':109,142,186 'readi':27 'recip':281 'recov':412 'refer':302 'references/core-eeat.md':360 'regardless':86 'return':428 'review':345 'robot':422 'rubric':79 'sampl':199 'score':19,52,89 'scrape':160 'se':108,185 'search':30 'second':411 'see':166,247,272 'seo':2,275 'seo-content-audit':1,274 'server':111 'singl':346 'skill':181,190 'skill-seo-content-audit' 'skill-specif':180 'skills/seo-firecrawl/references/preflight.md':167 'skills/seo-google/references/cross-skill-integration.md':273 'sourc':296 'source-seranking' 'specif':182 'stage':172 'stat':75 'step':248,258,271 'surfac':31,80,224,368 'tabl':304 'tag':294 'target':135,145,164,202 'thread':308 'tier':253 'timestamp':76 'titl':425 'tool':116 'top':104 'topic-agent-skills' 'topic-ai-search' 'topic-anthropic' 'topic-backlinks' 'topic-claude' 'topic-claude-code' 'topic-claude-plugin' 'topic-claude-skills' 'topic-content-brief' 'topic-ga4' 'topic-keyword-research' 'topic-mcp' 'traffic':262 'trustworthi':23,68 'type':311,323,367,371 'typic':194 'ultim':330 'unless':404 'unlock':257 'url':122,133,205,215,220,266,315,421 'us':148 'user':118 'valid':163 'verdict':47,101 'veto':32,81,245 'vs':342 'webfetch':115,153,209,239,282,414 'webfetch-on':238 'word':290,356,362,378,385 'word-count':355,361 'x':341 'y':343","prices":[{"id":"fdb0c70f-791f-427b-af01-e4435a13bdff","listingId":"652d0e3d-b4cf-42c0-abfe-fcba1768ace9","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"seranking","category":"seo-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:14:09.286Z"}],"sources":[{"listingId":"652d0e3d-b4cf-42c0-abfe-fcba1768ace9","source":"github","sourceId":"seranking/seo-skills/seo-content-audit","sourceUrl":"https://github.com/seranking/seo-skills/tree/main/skills/seo-content-audit","isPrimary":false,"firstSeenAt":"2026-05-18T13:14:09.286Z","lastSeenAt":"2026-05-18T19:08:35.923Z"}],"details":{"listingId":"652d0e3d-b4cf-42c0-abfe-fcba1768ace9","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"seranking","slug":"seo-content-audit","github":{"repo":"seranking/seo-skills","stars":9,"topics":["agent-skills","ai-search","answer-engine-optimization","anthropic","backlinks","claude","claude-code","claude-plugin","claude-skills","content-brief","ga4","generative-engine-optimization","keyword-research","mcp","mcp-server","search-console","seo","seo-tools","seranking","site-audit"],"license":"mit","html_url":"https://github.com/seranking/seo-skills","pushed_at":"2026-05-11T20:07:40Z","description":"Claude SEO Skills — production Claude Agent Skills for the SE Ranking MCP server. Content briefs, AI Search share of voice, audits, backlink gaps, keyword clusters, schema, sitemap, GEO, and more.","skill_md_sha":"22b46d406e07c95c4df582361fa9a495c3374b20","skill_md_path":"skills/seo-content-audit/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/seranking/seo-skills/tree/main/skills/seo-content-audit"},"layout":"multi","source":"github","category":"seo-skills","frontmatter":{"name":"seo-content-audit","description":"E-E-A-T + CITE quality audit for an EXISTING piece of content. Scores Experience, Expertise, Authoritativeness, Trustworthiness, and citation-readiness for AI search; surfaces veto items that block publication; produces a publish / publish-with-fixes / no-publish verdict. Distinct from `seo-content-brief` (produces a NEW article from a topic) and from `seo-page` (URL-level keyword/traffic intelligence). Use when the user asks \"content quality audit\", \"E-E-A-T check\", \"is this content good\", \"review this article\", \"content audit\", \"citation readiness\", or \"AI search readiness\"."},"skills_sh_url":"https://skills.sh/seranking/seo-skills/seo-content-audit"},"updatedAt":"2026-05-18T19:08:35.923Z"}}