Build LogSEO
#01
2026-07-255 min read

AdSense low-value rejection: thin pages, empty hubs, and six SVG diagrams

UK Calculators was rejected for low-value content on 10 July — ads.txt was authorised, so this was purely a content-quality judgement. Three concrete moves addressed the specific inventory-value criteria: expanding thin calculator landings, adding SVG diagrams across the pillar estate, and populating empty hub pages the rejection identified.

Read post
AdSenseSEO
#02
2026-07-235 min read

AdSense readiness: the checklist caught one gap, the reviewer found another, the sweep found a third

Seven out of eight on the automated readiness audit, then rejected for low value content anyway. The fix required three rounds: media diversity closed before submission, hollow hub listings after rejection, and a site-wide sweep that stripped fabricated trust signals the structural checklist had no way to catch.

Read post
Build LogAdSense
#03
2026-07-235 min read

Google's AdSense reviewer checklist returned 7 of 8 green. Format diversity was the one that counted.

Running Google's reviewer checklist against UK Calculators returned 7 of 8 green. The one red item was format diversity: zero of 38 articles had any embedded visual content. Eight days after submission, rejected for low value content — a checklist score doesn't carry item weights, and format diversity was the one Google's reviewer weighted most.

Read post
SEOObservability
#04
2026-07-225 min read

The eight-pillar map closed in three days. ga-telemetry and gsc-telemetry are why.

Phase 1.6 shipped two observability skills on 20 June: ga-telemetry and gsc-telemetry. Six days later the eight-pillar topic-authority map was complete. The link is an operator loop built on next-morning indexation signal.

Read post
AdSenseSEO
#05
2026-07-185 min read

AdSense said 'low value content'. Mapping that to actual pages took a day.

The ads.txt was authorised. The rejection still came back 'low value content' on 10 July — a content quality judgement that maps to three specific gaps: thin surfaces, empty hub listings, and zero images across 38 articles. Passing the re-review required treating Google's inventory-value policy as a content brief, not a configuration checklist.

Read post
Build LogAdSense
#06
2026-07-155 min read

AdSense rejected the site. The ads.txt was fine.

The Google AdSense verdict for UK Calculators arrived 10 July: rejected, “Low value content.” The ads.txt was authorised. The review had nothing to do with technical setup — Google was auditing editorial depth, and the /resources hub pages didn’t pass.

Read post
Build LogSEO
#07
2026-07-133 min read

The tag on 73 of 74 posts told me nothing about what relates to what.

Building a 'related posts' block surfaced a problem that had nothing to do with rendering: the tag on nearly every article carried no signal, and letting it count made everything related to everything.

Read post
Build LogSEO
#08
2026-07-123 min read

Every route but the blog previewed blank on WhatsApp. The og:image default was missing.

Blog posts set their own share image, so links to them looked fine. That masked the fact that every other route on the site emitted no og:image at all — invisible until someone shared one.

Read post
Build LogContent Pipeline
#09
2026-07-126 min read

Four cron zeroes in five mornings. Eight articles shipped by hand. The pipeline problem isn't the scheduler.

Five days into a fourteen-day publishing sprint on UK tax calculators, the scheduler fires within a minute of its window every morning. Automated drafts produced: two, one a duplicate cluster. Gov.uk cooperates. The bottleneck is claim extraction and cluster survival.

Read post
SEOBuild Log
#10
2026-07-055 min read

The ultracode audit was clean. Google still hadn't found the pages. The fix was six in-body links.

Five legal pages and /stamp-duty-calculator were returning HTTP 200, index/follow, self-canonical — and still showing 'URL is unknown to Google' in Search Console. A multi-agent ultracode review ruled out every technical blocker. The answer was the link graph: footer-only pages don't get crawled.

Read post
SEOBuild Log
#11
2026-07-037 min read

Six YMYL pages were unknown to Google. The technical audit came back clean.

An ultracode review of five legal pages and the stamp duty calculator found no technical blockers — HTTP 200, correct directives, canonical self. The pages weren't stuck because of markup. They were stuck because Googlebot had no editorial reason to visit.

Read post
SEOAdSense
#12
2026-07-016 min read

Eight pillars published. AdSense said low value content. The bottleneck was never volume.

Closing the 8-pillar map on 23 June was the point at which Phase 1.6's publish-volume theory ran out of runway. The AdSense low-value-content gate was already in place; more articles hadn't moved it. The real bottleneck is internal-link density and topic-cluster cohesion.

Read post
SEOBuild Log
#13
2026-06-296 min read

My canonical tags were deindexing my own articles. GA4 had been right all along.

GA4 showed 2 events per seven days across a site with 70+ articles. The first instinct was broken tracking. The real cause was canonical tags instructing Google to ignore the pages meant to rank — a discovery collapse that looks identical to a measurement failure until GSC gives it away.

Read post
Build LogSEO
#14
2026-06-286 min read

One audit finding, eight chapters: closing content-5 with a hub instead of inline links

The SEO audit said to retrofit inline links across seventy articles. I built a guide hub instead, and the link-graph problem stopped being about retrofitting and started being about new direction.

Read post
Build LogSEO
#15
2026-06-266 min read

Six pages Google couldn't find: telemetry ruled out the technical before we touched any code

The GSC digest showed six pages stuck at “URL is unknown to Google.” That specific status — not crawled and filtered, just never discovered — changed what we looked for first. Two stdlib-only telemetry skills made that diagnostic distinction available before we opened a single file.

Read post
SEOBuild Log
#16
2026-06-236 min read

Eight cannibalisation pairs, one prefix strip, one PR

A numeric prefix in every calculator slug had created eight cannibalisation pairs — Google couldn't determine which URL was authoritative, so neither ranked with confidence. The fix required one atomic operation across content, routing, and the internal link graph: universal prefix strip, 23 permanent redirects, every MDX cross-link repointed. Not three PRs. One.

Read post
SEOBuild Log
#17
2026-06-195 min read

Eight calculators were cannibalising each other. One prefix strip fixed it in 72 hours.

A site-wide SEO audit against ukcalculator.uk surfaced 8 routes competing with themselves for the same search intent. The fix — strip the NN- prefix, issue 308 redirects across 23 routes, repoint every internal cross-link — had to land as a single atomic operation or it would introduce crawl noise between deployments. Three days later, Google had started indexing.

Read post
SEOBuild Log
#18
2026-06-195 min read

Google ranks URLs, not intentions: the NN- prefix strip that resolved eight cannibalisation pairs on ukcalculator.uk

A site-wide SEO audit of ukcalculator.uk surfaced eight cannibalisation pairs before a single meta-tag was touched. The common thread: a numeric sort prefix on every affected slug, one that had never been intended as a ranking signal. Fixing the URLs outweighed everything else in Phase 1.

Read post