/seo-audit — SEO + AEO + LLM Readiness Audit
Run a comprehensive audit of cc4.marketing for search engine optimization, answer engine optimization, and AI/LLM discoverability.
Arguments
/seo-audit — full audit (default)
/seo-audit quick — check only critical items
/seo-audit [url] — audit a specific page (e.g. /seo-audit /blog/my-post)
Instructions
Phase 1: Parallel Page Audits
Launch parallel agents to audit pages. For each page, check:
Meta Tags:
- Title tag (unique, under 60 chars, includes primary keyword)
- Meta description (unique, 150-160 chars, includes CTA)
- Meta keywords (page-specific, not generic defaults)
- Canonical URL (correct, no duplicates)
- robots (index, follow)
Open Graph / Social:
- og:title, og:description, og:image (absolute URL, 1200x630 PNG)
- og:type (website for pages, article for posts/lessons)
- twitter:card (summary_large_image), twitter:image
Structured Data (JSON-LD):
- Homepage: WebSite, Course, BreadcrumbList
- Blog index: CollectionPage (no Course schema, no base BreadcrumbList)
- Blog posts: BlogPosting with headline, description, datePublished, dateModified, author (Person), publisher (Organization with raster logo), mainEntityOfPage, breadcrumb
- Authors: AboutPage with Person schemas
- Lesson pages: should NOT have Course schema duplicated
- Check for duplicate/conflicting BreadcrumbList schemas
Content Quality:
- H1 count (exactly 1 per page)
- Internal links have trailing slashes
- Images have alt text and dimensions
Phase 2: Site-Wide Checks
robots.txt:
- Fetch https://cc4.marketing/robots.txt
- Check if AI bots are allowed: GPTBot, ClaudeBot, Claude-Web, PerplexityBot, Google-Extended
- CRITICAL: Check for Cloudflare managed block prepended before custom rules — this overrides your Allow directives
- Verify sitemap and llms.txt references
llms.txt:
- Fetch https://cc4.marketing/llms.txt
- Follows llms.txt spec (title, blockquote summary, structured sections)
- Covers all site sections: homepage, blog, modules, changelog
- Links to llms-full.txt
llms-full.txt:
Sitemap:
- Fetch https://cc4.marketing/sitemap-index.xml
- All pages included (homepage, blog posts, module lessons, changelog, download, brand-guide, authors)
- Priorities correct (homepage 1.0, blog/download 0.9, modules 0.8-0.9, changelog 0.8)
- No orphaned pages (pages in sitemap that 404)
Phase 3: AEO-Specific Checks
- FAQ schema — do any blog posts have Q&A sections that should use FAQPage?
- HowTo schema — do any blog posts have step-by-step instructions that should use HowTo?
- Featured snippets — are H2/H3 headings phrased as questions for featured snippet targeting?
- Entity clarity — is the Organization entity consistent across all schemas?
- Breadcrumb depth — do all pages have proper breadcrumb chains (Home > Section > Page)?
Phase 4: Report
Output a table:
| Area | Status | Issues |
|-------------------|--------|--------|
| Meta tags | PASS/FAIL | ... |
| OG / Social | PASS/FAIL | ... |
| Structured data | PASS/FAIL | ... |
| robots.txt | PASS/FAIL | ... |
| llms.txt | PASS/FAIL | ... |
| Sitemap | PASS/FAIL | ... |
| AEO readiness | PASS/FAIL | ... |
Then list fixes by priority:
- Critical — blocks indexing or AI discovery
- High — affects SERP appearance or rich results
- Medium — optimization opportunities
- Low — nice-to-have
For each fix, show the exact file and line to change, or the exact code change needed.
Key Files
src/layouts/BaseLayout.astro — global meta tags, JSON-LD schemas
src/pages/blog/[slug].astro — BlogPosting schema
src/pages/blog/index.astro — CollectionPage schema
src/pages/blog/authors.astro — AboutPage schema
astro.config.mjs — sitemap config with customPages
public/robots.txt — bot directives
public/llms.txt — AI discovery
public/llms-full.txt — extended AI reference
wrangler.jsonc — Cloudflare config
Known Gotchas
- Cloudflare prepends a managed AI bot block to robots.txt at the edge — your
public/robots.txt Allow rules get overridden. Fix in Cloudflare Dashboard > Security > Bots > AI Bots.
- Blog posts are SSR from Emdash CMS — they must be manually added to
customPages in the sitemap config.
- The
showCourseSchema and showBreadcrumb props on BaseLayout control which pages get Course/BreadcrumbList schemas.
Source: cc4-marketing/site — distributed by TomeVault.
1---2name: seo-audit-23description: Run a full SEO, AEO, and LLM discoverability audit on cc4.marketing Use when this capability is needed.4---56# /seo-audit — SEO + AEO + LLM Readiness Audit78Run a comprehensive audit of cc4.marketing for search engine optimization, answer engine optimization, and AI/LLM discoverability.910## Arguments1112`/seo-audit` — full audit (default)13`/seo-audit quick` — check only critical items14`/seo-audit [url]` — audit a specific page (e.g. `/seo-audit /blog/my-post`)1516## Instructions1718### Phase 1: Parallel Page Audits1920Launch parallel agents to audit pages. For each page, check:2122**Meta Tags:**23- Title tag (unique, under 60 chars, includes primary keyword)24- Meta description (unique, 150-160 chars, includes CTA)25- Meta keywords (page-specific, not generic defaults)26- Canonical URL (correct, no duplicates)27- robots (index, follow)2829**Open Graph / Social:**30- og:title, og:description, og:image (absolute URL, 1200x630 PNG)31- og:type (website for pages, article for posts/lessons)32- twitter:card (summary_large_image), twitter:image3334**Structured Data (JSON-LD):**35- Homepage: WebSite, Course, BreadcrumbList36- Blog index: CollectionPage (no Course schema, no base BreadcrumbList)37- Blog posts: BlogPosting with headline, description, datePublished, dateModified, author (Person), publisher (Organization with raster logo), mainEntityOfPage, breadcrumb38- Authors: AboutPage with Person schemas39- Lesson pages: should NOT have Course schema duplicated40- Check for duplicate/conflicting BreadcrumbList schemas4142**Content Quality:**43- H1 count (exactly 1 per page)44- Internal links have trailing slashes45- Images have alt text and dimensions4647### Phase 2: Site-Wide Checks4849**robots.txt:**50- Fetch https://cc4.marketing/robots.txt51- Check if AI bots are allowed: GPTBot, ClaudeBot, Claude-Web, PerplexityBot, Google-Extended52- **CRITICAL:** Check for Cloudflare managed block prepended before custom rules — this overrides your Allow directives53- Verify sitemap and llms.txt references5455**llms.txt:**56- Fetch https://cc4.marketing/llms.txt57- Follows llms.txt spec (title, blockquote summary, structured sections)58- Covers all site sections: homepage, blog, modules, changelog59- Links to llms-full.txt6061**llms-full.txt:**62- Fetch https://cc4.marketing/llms-full.txt63- Full course structure with all 17 lessons64- Blog section with post URLs65- Changelog API endpoints6667**Sitemap:**68- Fetch https://cc4.marketing/sitemap-index.xml69- All pages included (homepage, blog posts, module lessons, changelog, download, brand-guide, authors)70- Priorities correct (homepage 1.0, blog/download 0.9, modules 0.8-0.9, changelog 0.8)71- No orphaned pages (pages in sitemap that 404)7273### Phase 3: AEO-Specific Checks7475- **FAQ schema** — do any blog posts have Q&A sections that should use FAQPage?76- **HowTo schema** — do any blog posts have step-by-step instructions that should use HowTo?77- **Featured snippets** — are H2/H3 headings phrased as questions for featured snippet targeting?78- **Entity clarity** — is the Organization entity consistent across all schemas?79- **Breadcrumb depth** — do all pages have proper breadcrumb chains (Home > Section > Page)?8081### Phase 4: Report8283Output a table:8485```86| Area | Status | Issues |87|-------------------|--------|--------|88| Meta tags | PASS/FAIL | ... |89| OG / Social | PASS/FAIL | ... |90| Structured data | PASS/FAIL | ... |91| robots.txt | PASS/FAIL | ... |92| llms.txt | PASS/FAIL | ... |93| Sitemap | PASS/FAIL | ... |94| AEO readiness | PASS/FAIL | ... |95```9697Then list fixes by priority:981. **Critical** — blocks indexing or AI discovery992. **High** — affects SERP appearance or rich results1003. **Medium** — optimization opportunities1014. **Low** — nice-to-have102103For each fix, show the exact file and line to change, or the exact code change needed.104105## Key Files106107- `src/layouts/BaseLayout.astro` — global meta tags, JSON-LD schemas108- `src/pages/blog/[slug].astro` — BlogPosting schema109- `src/pages/blog/index.astro` — CollectionPage schema110- `src/pages/blog/authors.astro` — AboutPage schema111- `astro.config.mjs` — sitemap config with customPages112- `public/robots.txt` — bot directives113- `public/llms.txt` — AI discovery114- `public/llms-full.txt` — extended AI reference115- `wrangler.jsonc` — Cloudflare config116117## Known Gotchas118119- Cloudflare prepends a managed AI bot block to robots.txt at the edge — your `public/robots.txt` Allow rules get overridden. Fix in Cloudflare Dashboard > Security > Bots > AI Bots.120- Blog posts are SSR from Emdash CMS — they must be manually added to `customPages` in the sitemap config.121- The `showCourseSchema` and `showBreadcrumb` props on BaseLayout control which pages get Course/BreadcrumbList schemas.122123---124> Source: [cc4-marketing/site](https://github.com/cc4-marketing/site) — distributed by [TomeVault](https://tomevault.io).125<!-- tomevault:4.0:skill_md:2026-05-23 -->