plugins/seo/skills/seo-content/SKILL.md
Use when analyzing content quality. Covers E-E-A-T scoring (Experience, Expertise, Authoritativeness, Trustworthiness), anti-cannibalization, keyword distribution, AI content disclosure, search intent matching.
npx skillsauth add fusengine/agents seo-contentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before content recommendations, run scripts/analyze-keywords.ts (local-first, no API key). Use it as first-pass evidence for keyword distribution, semantic breadth, local modifier placement, heading coverage, and stuffing risk.
bun run scripts/analyze-keywords.ts <url-or-path> --keyword "<primary keyword>" --synonyms "<syn1,syn2>" --locations "<city1,city2>" --format markdown
It returns density, n-grams, a 0-100 stuffing score, heading coverage, and per-location contextual mentions — purely local HTML parsing.
[city] + neighbouring municipalities/[region]) must appear naturally near service terms, never as a dumped city list.[service] + [city] + proof or context.[city] with [region] and district/neighbourhood names instead of repeating the same city token.Place terms by page zone, not by hitting a density target. Anti-stuffing 2026 is multi-signal, not a fixed percentage (Google's leaked KeywordStuffingScore runs 0-127; risk rises past ~3% density).
| Zone | Primary [service] | Local modifier [city]/[region] | Synonyms + entities | Secondary terms |
|------|---------------------|----------------------------------|---------------------|-----------------|
| Title / H1 | Yes (exact or strong variant) | Local page only | — | — |
| H2 / H3 | Sparingly (1-2) | Local page only, varied | Yes (distribute) | Yes |
| First 100 words / answer capsule | Yes (once) | Local page: once | Yes | — |
| Body | Natural flow | Local page: spread | Yes (bulk of coverage) | Yes |
| Anchors / alt / meta | Variant | Geo-specific on local | Yes | — |
Reference counts for a 1000-1500 word page:
[service]: 5-8 occurrences (~1-1.5% — the sweet spot, never above ~3%).[city]/[region]: 4-6 occurrences on a LOCAL page; 1-2 mentions on a GLOBAL page (zone signal, not stuffing). On the local page, rotate [city] with [region]/district rather than repeating one city.Do not use a fixed >3% density threshold as the stuffing rule. Flag keyword stuffing only when multiple signals align:
scripts/analyze-keywords.ts computes these signals into a 0-100 stuffing score.
For entity-based optimization (knowledge graph alignment, sameAs, entity salience, semantic depth), use the seo-entity skill. Anchor each page to a primary entity and its attributes rather than to a keyword string alone.
seo-entity — entity SEO, knowledge graph, semantic depthseo-featured-snippets — answer capsule / position 0 formatsskills/seo/06-content-strategy/ (eeat-implementation, anti-cannibalization, ai-content-guidelines, keyword-research, keyword-distribution)testing
Copy self-audit and ban-lists — filler verbs/hype adjectives, slop placeholder names, fake-precise numbers, Title Case headlines, humor in error copy ('Oops!'), em-dash crutch, one copy register per page.
development
Logged-in web apps — dashboards, auth flows, settings, onboarding, data tables, command palettes, modals, toasts. Register `product`: density and glance-speed over marketing polish, no hero/CTA-tricks, every data surface covers empty/loading/error explicitly, tables and dataviz follow preattentive-processing rules.
development
Marketing sites, landing pages, campaign pages — register `brand` (design IS the product). Structure comes from the register's POV + a macrostructure pick, never from copying an inspiration site's section flow. Hero discipline, deviated section order, asymmetric grids, and a silhouette lookalike-test gate before ship.
development
Token-strategy core — OKLCH color rules, neutral tinting, accent-commitment levels, type scale, 8pt spacing grid, touch targets, and the canonical output format of design-system.md (the file the harness gates on). This is routing step 1 of design-method/SKILL.md — read it before design-web/design-webapp/design-ios/design-android, before picking or auditing a single color/type/spacing value.