On this page

← Guides

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 search 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. It pulls metrics from Google Search Console. Without search data, the audit cannot detect cannibalization, dead pages, or reword opportunities. See the Guides overview for the full command sequence.

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
+ Search 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
Search 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 search data
3 pages without search data (new or not yet indexed)

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

The Fix Sequence

The ACTION section lists problems. Fix them in the order described in the workflow guide: merges first, then differentiation, news, refine, reword, crosslink. 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 Token usage
sanitize 4 (broken links) None (no AI calls)
deduplicate 4 (2 merges or differentiates) Minimal per pair
news 3 (stale pages) Minimal per page (web search + evaluation)
refine 3 (pages with news) Minimal per page
reword ~9 (top 20% full + next 30% light) Minimal per page
crosslink 2 (underlinked pages) Minimal per page
Total Minimal, covered by your AI subscription

The audit itself uses zero AI tokens. It reads from the local search database.

What a Clean Audit Looks Like

After running the fix sequence:

$ python -m wire.chief audit services
HEALTH
+ Search 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 search 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 search 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.