---
name: growthloud-audit-fix
description: Audit the production site behind this repo with Growthloud (SEO + AI-readiness scoring), then fix every failing check at its root in the codebase. Use when asked to improve SEO, AI-search visibility, or to "run a site audit and fix it".
---

# Growthloud: audit → fix

You are working in the repository of a website. Audit its production deployment,
then fix what the audit finds — in code, at the root cause.

## 1. Audit

Determine the production URL (check the repo's README, config, or ask). Then:

```bash
curl -s -X POST https://app.growthloud.com/api/audit \
  -H 'content-type: application/json' \
  -d '{"url":"https://YOUR-SITE.com"}'
```

Response shape:

```json
{
  "url": "…", "finishedAt": "…",
  "scores": { "total": 0, "seo": 0, "ai_readiness": 0 },
  "checks": [
    { "id": "title", "category": "seo", "weight": 10,
      "status": "pass|warn|fail|info|na", "evidence": "…",
      "fix": { "en": "…", "zh": "…" } }
  ],
  "shareToken": "…", "cached": false
}
```

Quota: 1 fresh audit per IP per day without an account (same-day repeats return
the cached result, `cached: true`). A free account at
<https://app.growthloud.com> raises the limit to 20/day and adds history,
daily re-audit patrol with score-drop alerts, Search Console and Bing panels.

## 2. Fix — every `fail`, then every `warn`, highest `weight` first

Find where each check lives **in this repo** (templates, head partials, static
files, build config) and fix the root cause — never patch generated output.
Follow each check's `fix` text plus this map:

| id | where to look / what right looks like |
|---|---|
| `title` | one `<title>`, ~15–60 chars, names the product and what it does |
| `meta-description` | one meta description, ~50–155 chars, concrete value proposition |
| `h1` | exactly one `<h1>` per page, matches the page's actual topic |
| `canonical` | `<link rel="canonical">` absolute, self-referencing on canonical pages |
| `html-lang` | `<html lang="…">` matches the page language |
| `hreflang` | bilingual/multilingual sites: reciprocal `alternate` links + `x-default` |
| `og-basics` | `og:title`, `og:description`, `og:image` (absolute URL, real asset) |
| `structured-data` | valid JSON-LD for the entity (Organization/Product/FAQ as applicable) |
| `robots-txt` | `/robots.txt` exists, allows crawling, links the sitemap |
| `sitemap` | `/sitemap.xml` exists, lists real canonical URLs |
| `search-bots-allowed` | AI *search* crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot) not blocked by robots.txt/WAF — this is how AI answers cite you |
| `training-bots-policy` | GPTBot/ClaudeBot are *training* crawlers — allowing or blocking them is a policy choice, not a fix; confirm the policy is intentional |
| `llms-txt` | `/llms.txt`: plain-markdown facts file — what the product is, pricing bounds, canonical pages; no marketing prose |
| `content-extractable` | core content must be present in server-rendered HTML, not injected only by JS |

Red lines: no keyword stuffing, no cloaking, no fabricated structured data.
Every claim you add to the site must be true of the product today.

## 3. Verify and report

Verify each fix on the deployed site (`curl` the page, check the tag is there).
The same-day audit is cached, so re-score tomorrow or from a signed-in account.
Report: score before, checks fixed (id → change), and the shareable report at
`https://app.growthloud.com/r/<shareToken>`.
