You ran the audit and the terminal filled with symbols, dashes, and commands you've never seen before. Here's how to read what it's telling you.

The audit output has four sections: HEALTH, ACTION, SEO, and INFO. HEALTH shows a list of `+` and `-` lines. ACTION lists the commands to run. Most people get stuck on HEALTH because the `-` lines don't explain themselves. A `-` next to "2 keyword overlap(s)" doesn't tell you whether that's urgent or ignorable. The answer depends on the numbers that appear in ACTION. But before you get there, which part of the output stopped you?

Every `-` line in HEALTH has a corresponding entry in ACTION with a command. But not all `-` lines are equal. A broken internal link costs nothing to fix and `sanitize` handles it automatically. A keyword overlap is different: the ACTION entry shows a ratio and a skew score, and those numbers determine whether Wire will merge two pages or reword them to be distinct. Merging deletes a page. That's a permanent change. Which `-` line is showing up in your audit?

The fix sequence has a specific order for a reason. Merges happen before rewords because a merge deletes a page. If you run `reword` first, you spend API credits rewriting a page that gets absorbed and archived ten minutes later. The same logic applies to crosslinks: Wire can't link to a page that no longer exists. The sequence is: sanitize, deduplicate, news, refine, reword, crosslink. Running them out of order doesn't break anything permanently, but it wastes money. How far into the sequence are you?

The audit itself costs nothing. It reads from the local GSC database and runs no API calls. The costs start when you run commands that rewrite content: `deduplicate`, `news`, `refine`, `reword`, and `crosslink`. For a 45-page site, the full sequence runs around $1.58. But that number scales with how many pages are touched, not how many pages exist. A site with 200 pages but only 3 stale pages pays roughly the same as a 45-page site with 3 stale pages. The variable that drives cost is the number of problems, not the size of the site.

A clean audit shows all `+` lines in HEALTH and no ACTION section at all. If you ran a merge, you'll also notice the page count in INFO dropped by one. That's expected. The merged page was archived, not deleted. It still exists in the archive directory but no longer appears in audits. If you still see `-` lines after running the fix sequence, one of two things happened: a command was skipped, or a new problem appeared because a fix exposed something that was previously hidden behind a broken link.

Problems compound between audits. A broken link today becomes an orphan page next week when someone removes the only other link pointing to it. A keyword overlap left alone splits traffic for months before it shows up in ranking drops. The recommended routine is `data` then `audit` at the start of each week, with a full fix sequence whenever `-` lines appear. The `data` command must run first. Without fresh GSC data, the audit can't detect cannibalization or flag reword opportunities accurately.

You ran python -m wire.chief audit for the first time. The terminal filled with symbols, numbers, and commands. This page explains every line.

We will use AutoFix München (45 service pages, German car repair shop) as the example. The audit below is what you see on a real site with real problems.

Run the Audit

python -m wire.chief data          # Pull GSC metrics first
python -m wire.chief audit         # Audit all topics
python -m wire.chief audit services  # Or audit one topic

The data command must run first. Without GSC data, the audit cannot detect cannibalization, dead pages, or reword opportunities.

The Four Sections

Every audit produces four sections in this order: HEALTH, ACTION, SEO, INFO. Here is the full output for AutoFix München, annotated.

HEALTH

$ python -m wire.chief audit
HEALTH
+ GSC data fresh (updated 2026-03-08)
+ No dead pages
- 2 keyword overlap(s) (min 3 shared keywords)
+ No duplicate titles
- 1 duplicate description(s)
- 3 stale page(s) need news
+ No pending news to refine
+ No orphan pages
- 4 broken internal link(s)
+ Source diversity healthy
- 2 underlinked page(s) (<3 inbound links)
+ No long titles
+ No long descriptions
- 1 page(s) missing external citations
+ H1 tags healthy
+ No thin pages
+ Heading structure healthy

Each line is a check. + means clean. - means something needs attention.

What each line checks:

Line What it means
GSC data fresh Your keyword database was updated within 28 days. If stale, run data again.
No dead pages No page has impressions below max(10, site_median * 0.05) with other pages covering its keywords.
2 keyword overlap(s) Two pairs of pages rank for the same keywords. Google splits traffic between them, hurting both.
No duplicate titles Every page has a unique <title>. Duplicates confuse Google about which page to rank.
1 duplicate description(s) Two pages share the same meta description. Less critical than titles, but still wastes the SERP snippet.
3 stale page(s) need news Three pages haven't been updated within their freshness interval (21 days for services).
No pending news to refine No unintegrated news files sitting in page directories.
No orphan pages Every page has at least one inbound internal link.
4 broken internal link(s) Four links point to pages that don't exist. Could be typos, renamed slugs, or deleted pages.
Source diversity healthy No page over-relies on a single external domain for citations.
2 underlinked page(s) Two pages have fewer than 3 inbound internal links. They exist but are poorly connected.
No long titles All titles are under 60 characters. Google rewrites 76% of titles over 60 chars.
No long descriptions All descriptions are under 160 characters.
1 page missing external citations One page has no outbound links to external sources.
H1 tags healthy Every page has exactly one H1 that matches its title.
No thin pages No page has fewer than 200 words.
Heading structure healthy No skipped heading levels (H1 to H3 without H2) and no numbered headings.

ACTION

The ACTION section only appears when HEALTH shows - indicators. Each problem includes the command to fix it.

ACTION
Overlaps: services
bremsen × bremsen-wechsel (4 shared, ratio=0.72, skew=0.81) → MERGE
RUN: python -m wire.chief deduplicate services
klimaanlage × klimaservice (3 shared, ratio=0.28, skew=0.55) → DIFFERENTIATE
RUN: python -m wire.chief deduplicate services
Duplicate descriptions: services
"Professionelle Kfz-Reparatur in München" → bremsen, oelwechsel
Stale pages: services
auspuff (last updated 2026-01-15, 54 days ago)
getriebe (last updated 2026-01-20, 49 days ago)
zahnriemen (last updated 2026-02-01, 37 days ago)
RUN: python -m wire.chief news services
Broken links: services
bremsen → /services/bremsscheiben/ (not found, fix: bremsscheiben-wechsel)
oelwechsel → /services/filter/ (not found)
klimaanlage → /services/kaelte-pruefung/ (not found, fix: kaeltemittel-pruefung)
reifen → /services/rad-wechsel/ (not found, fix: radwechsel)
RUN: python -m wire.chief sanitize services
Underlinked pages: services
stossdaempfer (1 inbound link)
zuendkerzen (2 inbound links)
RUN: python -m wire.chief crosslink services
Missing citations: services
zahnriemen

Reading the overlap entries:

bremsen × bremsen-wechsel (4 shared, ratio=0.72, skew=0.81) → MERGE

  • 4 shared: these pages rank for 4 of the same keywords
  • ratio=0.72: 72% of the smaller page's keywords are shared. High overlap.
  • skew=0.81: bremsen gets 81% of the shared traffic. Clear winner.
  • MERGE: Wire will absorb bremsen-wechsel's unique content into bremsen and archive the donor

klimaanlage × klimaservice (3 shared, ratio=0.28, skew=0.55) → DIFFERENTIATE

  • ratio=0.28: moderate overlap (28%)
  • skew=0.55: nearly equal traffic split. Google can't decide which page to rank.
  • DIFFERENTIATE: Wire will reword both pages to sharpen their distinct angles and add cross-links

Reading the broken link entries:

bremsen → /services/bremsscheiben/ (not found, fix: bremsscheiben-wechsel)

Wire found a link on the bremsen page pointing to /services/bremsscheiben/, which doesn't exist. It detected a likely match: bremsscheiben-wechsel. The sanitize command will fix this automatically.

oelwechsel → /services/filter/ (not found)

No fix suggested. The slug doesn't match anything. You need to remove this link manually or create the missing page.

SEO

SEO
Reword opportunities: services (top 5 of 12)
1. oelwechsel score=142 pos=8.2 imp=1,840 ctr=0.4%
2. bremsen score=98 pos=5.1 imp=1,200 ctr=1.2%
3. klimaanlage score=87 pos=6.8 imp=980 ctr=0.9%
4. auspuff score=64 pos=11.3 imp=720 ctr=0.3%
5. getriebe score=52 pos=9.7 imp=640 ctr=0.5%
RUN: python -m wire.chief reword services
Content gaps: services
2 keywords in 1 cluster (no page owns these)
"zahnriemen wechsel kosten" (320 imp, 3 pages: zahnriemen (22), bremsen (28), getriebe (31))
"steuerkette wechsel münchen" (180 imp, 2 pages: zahnriemen (25), motor (29))
Consider: python -m wire.content create services/steuerkette

Reading the reword table:

Column Meaning
score impressions * (1 - CTR). Higher = more wasted potential.
pos Average ranking position across all keywords.
imp Total monthly impressions.
ctr Click-through rate. Low CTR at a good position = title/description problem.

oelwechsel has 1,840 impressions but only 0.4% CTR at position 8.2. The reword command will rewrite its title and headings to better match the search queries people use.

Reading content gaps:

"zahnriemen wechsel kosten" gets 320 impressions but no page owns it. Three pages rank weakly (positions 22-31). This keyword cluster deserves its own page, or the zahnriemen page needs expansion to capture it.

INFO

INFO
services: 45 pages, 3 archived
42 pages with GSC data
3 pages without GSC data (new or not yet indexed)

Summary statistics. Pages "without GSC data" are either newly created (less than 28 days old) or not yet indexed by Google.

The Fix Sequence

The ACTION section lists problems. Here is the order to fix them:

# 1. Fix broken links first (free, no API calls)
python -m wire.chief sanitize services

# 2. Resolve overlaps (merges must happen before rewords)
python -m wire.chief deduplicate services

# 3. Gather fresh news for stale pages
python -m wire.chief news services

# 4. Integrate news into pages
python -m wire.chief refine services

# 5. SEO rewrite for top opportunities
python -m wire.chief reword services

# 6. Fix underlinked pages
python -m wire.chief crosslink services

# 7. Run audit again to verify
python -m wire.chief audit services

This order matters. Merges change which pages exist. Rewords need to know the final page set. Crosslinks need to know the final content. Running them out of order wastes API calls on pages that will be merged or rewritten.

Cost of This Entire Sequence

For AutoFix München's 45 service pages:

Command Pages touched Cost
sanitize 4 (broken links) $0 (no API calls)
deduplicate 4 (2 merges or differentiates) ~$0.24
news 3 (stale pages) ~$0.50 (web search + evaluation)
refine 3 (pages with news) ~$0.18
reword ~9 (top 20% full + next 30% light) ~$0.54
crosslink 2 (underlinked pages) ~$0.12
Total ~$1.58

The audit itself costs $0. It reads from the local GSC database.

What a Clean Audit Looks Like

After running the fix sequence:

$ python -m wire.chief audit services
HEALTH
+ GSC data fresh (updated 2026-03-10)
+ No dead pages
+ No keyword overlaps
+ No duplicate titles
+ No duplicate descriptions
+ No stale pages
+ No pending news to refine
+ No orphan pages
+ No broken internal links
+ Source diversity healthy
+ No underlinked pages
+ No long titles
+ No long descriptions
+ No pages missing external citations
+ H1 tags healthy
+ No thin pages
+ Heading structure healthy
INFO
services: 44 pages, 4 archived
44 pages with GSC data

All + marks. One fewer page (bremsen-wechsel was merged into bremsen and archived). The site is clean.

Running Audits Regularly

Run audit after every batch operation and at least weekly during active content work:

# Monday morning routine
python -m wire.chief data          # Fresh GSC data
python -m wire.chief audit         # Check all topics

Problems compound. A broken link today becomes an orphan page next week. A keyword overlap left unchecked splits traffic for months. The audit catches problems early, before they cost rankings.