Imported from zioalex/getinspiredbythebible (
.claude/skills/seo-audit/SKILL.md). Install upstream withnpx skills add zioalex/getinspiredbythebible --skill seo-audit. Copyright stays with the author.
SEO Audit (Vox Quieta)
Audit the site's discoverability and produce a prioritized, evidence-backed
report. The frontend is Next.js 16 App Router + next-intl, locale-prefixed
(localePrefix: "always"), 11 locales, deployed at https://voxquieta.org.
This skill is read-only — it inspects and reports; it never edits the site.
Steps
-
Static codebase scan (always). Run:
bash scripts/seo-static-check.shIt prints PASS/FAIL/WARN for metadataBase, Open Graph / Twitter, sitemap, robots, favicon,
title.template, homepage title length, per-locale metadata coverage (all 11frontend/messages/*.json), image alt-text exposure, and manual-review reminders (hreflang on sub-pages, client-rendered homepage). Exit code is non-zero if any FAIL — note which checks fail. -
Live check (if the domain is reachable). Try:
bash scripts/seo-live-check.shIt reports HTTP status for key routes (including an un-prefixed
/privacyand a bogus path to confirm 404 behaviour), the rendered<head>meta of the homepage + a sub-page, robots.txt/sitemap.xml contents, and a server-rendered word-count gauge. The Claude Code web sandbox usually blocks this (403 host_not_allowed). If it fails, ask the user to run the script on a networked machine and paste the output, or to provide the "live-site data needed" list (see the audit plan / README of this skill). -
Manual judgement passes (the scripts can't decide these):
- hreflang correctness —
frontend/src/app/[locale]/layout.tsxalternates.languagespoint to locale roots (/en,/it, …); inherited by sub-pages, so/en/privacymislabels its alternates. Confirm. - Crawlability —
frontend/src/app/[locale]/page.tsxis"use client";generateMetadatastill emits title/description server-side, but body text is client-rendered. Check how much indexable content the homepage exposes. - Links — internal links use
@/i18n/navigationLink(locale-safe). Spot-check external links, esp.https://disciplestoday.org(ChurchFinderModal.tsx), for liveness.
- hreflang correctness —
-
Write the report. Use this structure:
- A verdict table mapping each reported claim (broken links, 4XX, missing
alt, missing descriptions, duplicate/missing meta, long/unoptimized titles)
to real here? yes / partly / no with one-line evidence (
file:line). Call out boilerplate that doesn't apply (this site has no images, so "missing alt text" usually doesn't apply). - Findings grouped: metadata infra, titles, crawl/index files, routing/4XX,
links — each with
file:lineevidence. - Prioritized roadmap (P0/P1/P2), reusing the existing per-locale
generateMetadata+messages/*.jsonpattern. Do not propose fixes outside SEO scope.
- A verdict table mapping each reported claim (broken links, 4XX, missing
alt, missing descriptions, duplicate/missing meta, long/unoptimized titles)
to real here? yes / partly / no with one-line evidence (
Notes
- Keep findings grounded in
file:lineevidence or script/live output — no floating claims. - For deeper or delegated runs, the
seo-auditorsubagent (.claude/agents/seo-auditor.md) contains the same checklist and can run autonomously inside a larger task. - Reference doc with the full current-state findings:
the SEO audit plan written under
~/.claude/plans/(if present).
