1 +13/mo small
Metadata fix: /docs/
Title/meta rewrite — audit finding
942 impressions in 90d; issues: title misses ranking-query language: widgets, canvas rendering tutorial; CTR below position expectation (~38 clicks missed in 90d); meta description missing
Title/meta rewrite — audit finding · example.com
Metadata fix: /docs/ ≈ +13 clicks/mo small effort metadata data-derived
Why (the data) 942 impressions in 90d; issues: title misses ranking-query language: widgets, canvas rendering tutorial; CTR below position expectation (~38 clicks missed in 90d); meta description missing
The move Rewrite the title to carry the ranking-query language and the description as a ~150-char direct answer; respect the ~60-char title budget.
Spec Page: https://example.com/docs/ Current title: "Docs | Example" Current description: (none) Top queries: “widgets” (365 imps, pos 5.5, 1.5% CTR) · “canvas rendering tutorial” (254 imps, pos 5, 1.7% CTR) · “widgets for beginners” (155 imps, pos 2.7, 2.5% CTR) · “canvas rendering cheat sheet” (65 imps, pos 3.4, 3.5% CTR) · “example docs” (59 imps, pos 1.4, 31.0% CTR) Issue: title misses ranking-query language: widgets, canvas rendering tutorial Issue: CTR below position expectation (~38 clicks missed in 90d) Issue: meta description missing Success: CTR on the listed queries reaches ≥ half of position-expected within 28 days. Freeze the title for those 28 days. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
2 +13/mo small
Metadata fix: /
Title/meta rewrite — audit finding
1,010 impressions in 90d; issues: title misses ranking-query language: example, what is webhooks; CTR below position expectation (~40 clicks missed in 90d); meta description missing
Title/meta rewrite — audit finding · docs.example.com
Metadata fix: / ≈ +13 clicks/mo small effort metadata data-derived
Why (the data) 1,010 impressions in 90d; issues: title misses ranking-query language: example, what is webhooks; CTR below position expectation (~40 clicks missed in 90d); meta description missing
The move Rewrite the title to carry the ranking-query language and the description as a ~150-char direct answer; respect the ~60-char title budget.
Spec Page: https://docs.example.com/ Current title: "Docs.Example.Com | Docs" Current description: (none) Top queries: “example” (707 imps, pos 1.1, 42.0% CTR) · “what is webhooks” (149 imps, pos 7.4, 3.5% CTR) · “supply chain games guide” (83 imps, pos 10.2, 2.3% CTR) · “open source webhooks” (59 imps, pos 6.1, 4.7% CTR) · “static sites vs webhooks” (12 imps, pos 13.8, 1.5% CTR) Issue: title misses ranking-query language: example, what is webhooks Issue: CTR below position expectation (~40 clicks missed in 90d) Issue: meta description missing Success: CTR on the listed queries reaches ≥ half of position-expected within 28 days. Freeze the title for those 28 days. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
3 +22/mo medium
Fix content mismatch: /blog/canvas-rendering-explained
Content rewrite of an existing page
215 sessions/90d land here but only 18% engage — the page isn't delivering what the click promised
Content rewrite of an existing page · example.com
Fix content mismatch: /blog/canvas-rendering-explained ≈ +22 clicks/mo medium effort engagement data-derived
Why (the data) 215 sessions/90d land here but only 18% engage — the page isn't delivering what the click promised
The move Read the top queries landing here, rewrite the opening to deliver that answer immediately, move setup/context below.
Spec Page: https://example.com/blog/canvas-rendering-explained Evidence: 215 sessions/90d, 18% engagement (a healthy content page sits around 40–70%). Check this site's queries for the ones landing on this path — the rewrite must answer THOSE in the first screenful. Keep the URL; rewrite opening + structure, don't relocate. Success: engagement above 35% within 28 days of shipping. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
4 +7/mo small
Rewrite title/description: /examples/
Meta/template change — no new content
Ranks but rarely clicked (90d) — “widgets vs dashboards” (54 imps, 11.1% CTR at pos 1.3); “what is dashboards” (105 imps, 3.8% CTR at pos 2.8); “canvas rendering explained” (117 imps, 1.7% CTR at pos 5.3)
Meta/template change — no new content · example.com
Rewrite title/description: /examples/ ≈ +7 clicks/mo small effort ctr-gap data-derived
Why (the data) Ranks but rarely clicked (90d) — “widgets vs dashboards” (54 imps, 11.1% CTR at pos 1.3); “what is dashboards” (105 imps, 3.8% CTR at pos 2.8); “canvas rendering explained” (117 imps, 1.7% CTR at pos 5.3)
The move Make the <title> restate the query as its answer; description = 150-char direct answer. Then request reindexing in Search Console.
Spec Page: https://example.com/examples/ Queries being lost: “widgets vs dashboards” (54 imps, 11.1% CTR, pos 1.3) · “what is dashboards” (105 imps, 3.8% CTR, pos 2.8) · “canvas rendering explained” (117 imps, 1.7% CTR, pos 5.3) · “open source dashboards” (43 imps, 2.3% CTR, pos 4.9) Title formula: [query phrased as its answer] — [differentiator]. Keep under ~60 chars; front-load the query words. Description: one ~150-char sentence that directly answers the query (this becomes the SERP snippet). Ship: meta change only — no body-content edits needed. Then Search Console → URL Inspection → Request Indexing. Success: CTR on these queries reaches ≥ half of position-expected within 28 days (watch on this dashboard). Then leave the title alone — title churn resets Google's evaluation. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
5 +7/mo small
Rewrite title/description: /examples/
Meta/template change — no new content
Ranks but rarely clicked (90d) — “open source static sites” (107 imps, 6.5% CTR at pos 1.8); “what is static sites” (114 imps, 0.9% CTR at pos 4.9); “webhooks explained” (138 imps, 0.7% CTR at pos 5.8)
Meta/template change — no new content · docs.example.com
Rewrite title/description: /examples/ ≈ +7 clicks/mo small effort ctr-gap data-derived
Why (the data) Ranks but rarely clicked (90d) — “open source static sites” (107 imps, 6.5% CTR at pos 1.8); “what is static sites” (114 imps, 0.9% CTR at pos 4.9); “webhooks explained” (138 imps, 0.7% CTR at pos 5.8)
The move Make the <title> restate the query as its answer; description = 150-char direct answer. Then request reindexing in Search Console.
Spec Page: https://docs.example.com/examples/ Queries being lost: “open source static sites” (107 imps, 6.5% CTR, pos 1.8) · “what is static sites” (114 imps, 0.9% CTR, pos 4.9) · “webhooks explained” (138 imps, 0.7% CTR, pos 5.8) · “supply chain games vs static sites” (51 imps, 2.0% CTR, pos 4.6) Title formula: [query phrased as its answer] — [differentiator]. Keep under ~60 chars; front-load the query words. Description: one ~150-char sentence that directly answers the query (this becomes the SERP snippet). Ship: meta change only — no body-content edits needed. Then Search Console → URL Inspection → Request Indexing. Success: CTR on these queries reaches ≥ half of position-expected within 28 days (watch on this dashboard). Then leave the title alone — title churn resets Google's evaluation. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
6 +15/mo medium
Server-render homepage content
Config change
Live probe failing on this check
Config change · docs.example.com
Server-render homepage content ≈ +15 clicks/mo medium effort hygiene data-derived
Why (the data) Live probe failing on this check
The move AI crawlers don't run JS — add static H1 + intro text to the shell.
Spec AI crawlers don't run JS — add static H1 + intro text to the shell. Verify with: n-seo daily --only probe after deploy. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
7 +13/mo medium
Fix content mismatch: /blog/supply-chain-games
Content rewrite of an existing page
132 sessions/90d land here but only 18% engage — the page isn't delivering what the click promised
Content rewrite of an existing page · docs.example.com
Fix content mismatch: /blog/supply-chain-games ≈ +13 clicks/mo medium effort engagement data-derived
Why (the data) 132 sessions/90d land here but only 18% engage — the page isn't delivering what the click promised
The move Read the top queries landing here, rewrite the opening to deliver that answer immediately, move setup/context below.
Spec Page: https://docs.example.com/blog/supply-chain-games Evidence: 132 sessions/90d, 18% engagement (a healthy content page sits around 40–70%). Check this site's queries for the ones landing on this path — the rewrite must answer THOSE in the first screenful. Keep the URL; rewrite opening + structure, don't relocate. Success: engagement above 35% within 28 days of shipping. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
8 +5/mo small
Add llms.txt
Config change
Live probe failing on this check
Config change · docs.example.com
Add llms.txt ≈ +5 clicks/mo small effort hygiene data-derived
Why (the data) Live probe failing on this check
The move A markdown site summary with links to the key pages — the surface AI crawlers read first.
Spec A markdown site summary with links to the key pages — the surface AI crawlers read first. Verify with: n-seo daily --only probe after deploy. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
9 +9/mo medium
Push to page 1: /blog/widgets/
Content addition to an existing page
Position 5–15 in the last 90d for “widgets tutorial” pos 11.1 (345 imps); “free dashboards” pos 14.3 (93 imps)
Content addition to an existing page · example.com
Push to page 1: /blog/widgets/ ≈ +9 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “widgets tutorial” pos 11.1 (345 imps); “free dashboards” pos 14.3 (93 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://example.com/blog/widgets/ Target queries: “widgets tutorial” (pos 11.1, 345 imps) · “free dashboards” (pos 14.3, 93 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
10 +9/mo medium
Push to page 1: /pricing/
Content addition to an existing page
Position 5–15 in the last 90d for “static sites” pos 7.5 (218 imps); “how to use webhooks” pos 10.8 (107 imps); “best supply chain games tools” pos 11.2 (94 imps)
Content addition to an existing page · docs.example.com
Push to page 1: /pricing/ ≈ +9 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “static sites” pos 7.5 (218 imps); “how to use webhooks” pos 10.8 (107 imps); “best supply chain games tools” pos 11.2 (94 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://docs.example.com/pricing/ Target queries: “static sites” (pos 7.5, 218 imps) · “how to use webhooks” (pos 10.8, 107 imps) · “best supply chain games tools” (pos 11.2, 94 imps) · “static sites for beginners” (pos 8.5, 41 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
11 +8/mo medium
Push to page 1: /compare/widgets-vs-alternatives/
Content addition to an existing page
Position 5–15 in the last 90d for “canvas rendering” pos 10.8 (256 imps); “canvas rendering for beginners” pos 10.3 (132 imps)
Content addition to an existing page · example.com
Push to page 1: /compare/widgets-vs-alternatives/ ≈ +8 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “canvas rendering” pos 10.8 (256 imps); “canvas rendering for beginners” pos 10.3 (132 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://example.com/compare/widgets-vs-alternatives/ Target queries: “canvas rendering” (pos 10.8, 256 imps) · “canvas rendering for beginners” (pos 10.3, 132 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
12 +7/mo medium
Push to page 1: /docs/
Content addition to an existing page
Position 5–15 in the last 90d for “widgets” pos 5.3 (365 imps)
Content addition to an existing page · example.com
Push to page 1: /docs/ ≈ +7 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “widgets” pos 5.3 (365 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://example.com/docs/ Target queries: “widgets” (pos 5.3, 365 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
13 +6/mo medium
Push to page 1: /pricing/
Content addition to an existing page
Position 5–15 in the last 90d for “how to use canvas rendering” pos 10.7 (114 imps); “dashboards” pos 7.8 (108 imps); “best widgets tools” pos 12.9 (87 imps)
Content addition to an existing page · example.com
Push to page 1: /pricing/ ≈ +6 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “how to use canvas rendering” pos 10.7 (114 imps); “dashboards” pos 7.8 (108 imps); “best widgets tools” pos 12.9 (87 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://example.com/pricing/ Target queries: “how to use canvas rendering” (pos 10.7, 114 imps) · “dashboards” (pos 7.8, 108 imps) · “best widgets tools” (pos 12.9, 87 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
14 +6/mo medium
Push to page 1: /
Content addition to an existing page
Position 5–15 in the last 90d for “what is webhooks” pos 7.7 (149 imps); “supply chain games guide” pos 9.8 (83 imps); “open source webhooks” pos 6.4 (59 imps)
Content addition to an existing page · docs.example.com
Push to page 1: / ≈ +6 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “what is webhooks” pos 7.7 (149 imps); “supply chain games guide” pos 9.8 (83 imps); “open source webhooks” pos 6.4 (59 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://docs.example.com/ Target queries: “what is webhooks” (pos 7.7, 149 imps) · “supply chain games guide” (pos 9.8, 83 imps) · “open source webhooks” (pos 6.4, 59 imps) · “static sites vs webhooks” (pos 13.6, 12 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
15 +3/mo medium
Push to page 1: /
Content addition to an existing page
Position 5–15 in the last 90d for “open source canvas rendering” pos 7.5 (73 imps); “widgets guide” pos 10.8 (71 imps)
Content addition to an existing page · example.com
Push to page 1: / ≈ +3 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “open source canvas rendering” pos 7.5 (73 imps); “widgets guide” pos 10.8 (71 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://example.com/ Target queries: “open source canvas rendering” (pos 7.5, 73 imps) · “widgets guide” (pos 10.8, 71 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
16 +3/mo medium
Push to page 1: /about/
Content addition to an existing page
Position 5–15 in the last 90d for “free webhooks” pos 5.3 (140 imps); “static sites cheat sheet” pos 11.9 (32 imps)
Content addition to an existing page · docs.example.com
Push to page 1: /about/ ≈ +3 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “free webhooks” pos 5.3 (140 imps); “static sites cheat sheet” pos 11.9 (32 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://docs.example.com/about/ Target queries: “free webhooks” (pos 5.3, 140 imps) · “static sites cheat sheet” (pos 11.9, 32 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
17 +3/mo medium
Push to page 1: /examples/
Content addition to an existing page
Position 5–15 in the last 90d for “webhooks explained” pos 5.8 (138 imps)
Content addition to an existing page · docs.example.com
Push to page 1: /examples/ ≈ +3 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “webhooks explained” pos 5.8 (138 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://docs.example.com/examples/ Target queries: “webhooks explained” (pos 5.8, 138 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
18 +1/mo small
Metadata fix: /docs/getting-started/
Title/meta rewrite — audit finding
666 impressions in 90d; issues: title misses ranking-query language: canvas rendering examples, what is widgets; title long (71 chars — SERP truncates ~60)
Title/meta rewrite — audit finding · example.com
Metadata fix: /docs/getting-started/ ≈ +1 clicks/mo small effort metadata data-derived
Why (the data) 666 impressions in 90d; issues: title misses ranking-query language: canvas rendering examples, what is widgets; title long (71 chars — SERP truncates ~60)
The move Rewrite the title to carry the ranking-query language and the description as a ~150-char direct answer; respect the ~60-char title budget.
Spec Page: https://example.com/docs/getting-started/ Current title: "Getting Started | Example — everything you need to know about it and more" Current description: "Getting Started | Example. Learn more." Top queries: “canvas rendering examples” (264 imps, pos 39.4, 0.4% CTR) · “what is widgets” (219 imps, pos 32.3, 0.4% CTR) · “open source widgets” (88 imps, pos 3.3, 7.7% CTR) · “canvas rendering pricing” (51 imps, pos 39.8, 0.5% CTR) · “dashboards explained” (44 imps, pos 25.8, 0.5% CTR) Issue: title misses ranking-query language: canvas rendering examples, what is widgets Issue: title long (71 chars — SERP truncates ~60) Success: CTR on the listed queries reaches ≥ half of position-expected within 28 days. Freeze the title for those 28 days. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
19 +1/mo small
Metadata fix: /
Title/meta rewrite — audit finding
630 impressions in 90d; issues: title misses ranking-query language: example, open source canvas rendering; meta description duplicates the title
Title/meta rewrite — audit finding · example.com
Metadata fix: / ≈ +1 clicks/mo small effort metadata data-derived
Why (the data) 630 impressions in 90d; issues: title misses ranking-query language: example, open source canvas rendering; meta description duplicates the title
The move Rewrite the title to carry the ranking-query language and the description as a ~150-char direct answer; respect the ~60-char title budget.
Spec Page: https://example.com/ Current title: "Example.Com | Example" Current description: "Example.Com | Example. Learn more." Top queries: “example” (412 imps, pos 1.1, 42.0% CTR) · “open source canvas rendering” (73 imps, pos 7.5, 3.2% CTR) · “widgets guide” (71 imps, pos 10.6, 1.7% CTR) · “what is canvas rendering” (42 imps, pos 5.5, 4.7% CTR) · “dashboards vs canvas rendering” (32 imps, pos 12.8, 1.1% CTR) Issue: title misses ranking-query language: example, open source canvas rendering Issue: meta description duplicates the title Success: CTR on the listed queries reaches ≥ half of position-expected within 28 days. Freeze the title for those 28 days. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
20 +1/mo small
Metadata fix: /docs/
Title/meta rewrite — audit finding
764 impressions in 90d; issues: title misses ranking-query language: webhooks tutorial, supply chain games; title long (71 chars — SERP truncates ~60)
Title/meta rewrite — audit finding · docs.example.com
Metadata fix: /docs/ ≈ +1 clicks/mo small effort metadata data-derived
Why (the data) 764 impressions in 90d; issues: title misses ranking-query language: webhooks tutorial, supply chain games; title long (71 chars — SERP truncates ~60)
The move Rewrite the title to carry the ranking-query language and the description as a ~150-char direct answer; respect the ~60-char title budget.
Spec Page: https://docs.example.com/docs/ Current title: "Docs | Docs — everything you need to know about it and more" Current description: "Docs | Docs. Learn more." Top queries: “webhooks tutorial” (266 imps, pos 2.8, 4.0% CTR) · “supply chain games” (223 imps, pos 4.8, 1.9% CTR) · “how to use static sites” (80 imps, pos 2.5, 5.8% CTR) · “supply chain games for beginners” (71 imps, pos 2.8, 3.1% CTR) · “webhooks cheat sheet” (62 imps, pos 4, 2.2% CTR) Issue: title misses ranking-query language: webhooks tutorial, supply chain games Issue: title long (71 chars — SERP truncates ~60) Success: CTR on the listed queries reaches ≥ half of position-expected within 28 days. Freeze the title for those 28 days. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
21 +1/mo small
Metadata fix: /about/
Title/meta rewrite — audit finding
571 impressions in 90d; issues: title misses ranking-query language: how to use supply chain games, free webhooks; meta description duplicates the title
Title/meta rewrite — audit finding · docs.example.com
Metadata fix: /about/ ≈ +1 clicks/mo small effort metadata data-derived
Why (the data) 571 impressions in 90d; issues: title misses ranking-query language: how to use supply chain games, free webhooks; meta description duplicates the title
The move Rewrite the title to carry the ranking-query language and the description as a ~150-char direct answer; respect the ~60-char title budget.
Spec Page: https://docs.example.com/about/ Current title: "About | Docs" Current description: "About | Docs. Learn more." Top queries: “how to use supply chain games” (276 imps, pos 17.9, 0.8% CTR) · “free webhooks” (140 imps, pos 5.1, 6.9% CTR) · “static sites tutorial” (123 imps, pos 38, 0.3% CTR) · “static sites cheat sheet” (32 imps, pos 11.6, 1.2% CTR) Issue: title misses ranking-query language: how to use supply chain games, free webhooks Issue: meta description duplicates the title Success: CTR on the listed queries reaches ≥ half of position-expected within 28 days. Freeze the title for those 28 days. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
22 +2/mo medium
Push to page 1: /examples/
Content addition to an existing page
Position 5–15 in the last 90d for “canvas rendering explained” pos 5.3 (117 imps)
Content addition to an existing page · example.com
Push to page 1: /examples/ ≈ +2 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “canvas rendering explained” pos 5.3 (117 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://example.com/examples/ Target queries: “canvas rendering explained” (pos 5.3, 117 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
23 +2/mo medium
Push to page 1: /docs/getting-started/
Content addition to an existing page
Position 5–15 in the last 90d for “webhooks examples” pos 10.4 (99 imps)
Content addition to an existing page · docs.example.com
Push to page 1: /docs/getting-started/ ≈ +2 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “webhooks examples” pos 10.4 (99 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://docs.example.com/docs/getting-started/ Target queries: “webhooks examples” (pos 10.4, 99 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
24 +1/mo medium
Push to page 1: /guides/dashboards/
Content addition to an existing page
Position 5–15 in the last 90d for “widgets examples” pos 11.0 (51 imps)
Content addition to an existing page · example.com
Push to page 1: /guides/dashboards/ ≈ +1 clicks/mo medium effort striking data-derived
Why (the data) Position 5–15 in the last 90d for “widgets examples” pos 11.0 (51 imps)
The move Add a section that answers these queries verbatim (H2 phrased as the query + direct answer), add 2–3 internal links to this page from related pages, refresh dateModified.
Spec Page: https://example.com/guides/dashboards/ Target queries: “widgets examples” (pos 11.0, 51 imps) Add one H2 per query cluster, phrased as the query, followed by a 40–60 word direct answer, then detail. Internal links: 2–3 links to this page from the site's highest-authority related pages, using the query as anchor text. Freshness: a real content change → dateModified updates → sitemap lastmod moves. Success: these queries move from pos 5–15 into the top 5 within ~6 weeks. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.
25 +0/mo small
Rewrite title/description: /docs/getting-started/
Meta/template change — no new content
Ranks but rarely clicked (90d) — “webhooks examples” (99 imps, 1.0% CTR at pos 10.4)
Meta/template change — no new content · docs.example.com
Rewrite title/description: /docs/getting-started/ ≈ +0 clicks/mo small effort ctr-gap data-derived
Why (the data) Ranks but rarely clicked (90d) — “webhooks examples” (99 imps, 1.0% CTR at pos 10.4)
The move Make the <title> restate the query as its answer; description = 150-char direct answer. Then request reindexing in Search Console.
Spec Page: https://docs.example.com/docs/getting-started/ Queries being lost: “webhooks examples” (99 imps, 1.0% CTR, pos 10.4) Title formula: [query phrased as its answer] — [differentiator]. Keep under ~60 chars; front-load the query words. Description: one ~150-char sentence that directly answers the query (this becomes the SERP snippet). Ship: meta change only — no body-content edits needed. Then Search Console → URL Inspection → Request Indexing. Success: CTR on these queries reaches ≥ half of position-expected within 28 days (watch on this dashboard). Then leave the title alone — title churn resets Google's evaluation. Data-derived: this card disappears on its own once the numbers move. If the fix shipped, add the page to shippedWatch in config/backlog.json with a dated note and it shows as watching.