Date: 1 July 2026 Sources: Google Search Console, Google Analytics 4, SEMrush, Bing Webmaster Tools, GTmetrix, Cloudflare Pages config, and a code-level crawl of the repo (117 blog posts + ~58 standalone pages, 261 URLs in sitemap).
The site is fast, well-built, and technically clean — GTmetrix gives the homepage a straight A (100% performance, LCP 622ms, CLS 0), schema markup is comprehensive, and the sitemap/robots/redirects are all in good shape. The problem isn't the site, it's reach. Google is barely ranking you (average position 49, ~5 clicks in the last week, an estimated 6 organic visits a month). Bing tells a completely different story — 523 clicks and 30.8K impressions, with your content sitting on page one (positions 3–8). ChatGPT is citing 50 of your pages. So the content is good enough to rank; Google just doesn't trust a young, low-authority domain yet. On top of that, two things are quietly costing you money and clarity: ~45% of your GA4 "traffic" is almost certainly bots (Singapore is your #1 country), and 81% of blog posts are missing the affiliate card that's supposed to fund the site.
| # | Issue | Severity | Effort |
|---|---|---|---|
| 1 | Backfill the FLO affiliate card on the 95 posts that lack it | High | Medium |
| 2 | Filter bot/junk traffic out of GA4 so your numbers mean something | High | Low |
| 3 | Build domain authority — quality backlinks / digital PR | High | High (ongoing) |
| 4 | Write proper seoTitle + meta for top-impression pages to win clicks |
Medium | Medium |
| 5 | Remove the stale http://www sitemap from GSC |
Medium | Low |
| 6 | Add HSTS + a basic CSP to _headers |
Medium | Low |
| 7 | Lean into Bing/ChatGPT — it's your real audience right now | Medium | Low |
summer solstice 2026 (2.5K impressions, pos 6.1), longest day 2026 uk (pos 3.1), stargazing tips (16 clicks, 2.9% CTR, pos 6.9), best telescope for beginners (1.1K impressions but 0 clicks, pos 8.4).The content is competitive — Bing proves it. Google is applying a higher trust bar to a young domain with a thin backlink profile (both Bing and SEMrush explicitly flag "not enough inbound links from high-quality domains"). This is your biggest growth lever. The fix isn't more content or on-page tweaks — it's authority: earning quality backlinks (astronomy communities, UK stargazing directories, digital PR off the UAP scoops that already go semi-viral), plus continued internal linking. Google visibility should improve as the domain ages and links accrue.
Last 28 days: 4.4K users, 45s average engagement, ~0.4% week-1 retention.
The country breakdown is the tell:
| Country | Active users |
|---|---|
| Singapore | 1,500 |
| United States | 954 |
| United Kingdom | 857 |
| China | 471 |
A UK astronomy site should be UK-dominant. Singapore + China ≈ 2,000 of 4,400 "users", with sub-minute engagement and near-zero retention — the classic signature of data-centre bot traffic, and it's inflating your "Direct" channel (3K sessions). Your real engaged audience is much smaller (UK ~857, plus genuine social).
Action: treat top-line user counts with suspicion. Create a GA4 segment/filter for UK + engaged sessions, and consider turning on Cloudflare bot-fight mode. Until then, judge performance by UK engaged users and key events, not total sessions.
Real engagement signals (28 days): newsletter signups 21, affiliate clicks 26, top page "Pentagon's Third UFO File Release" 1.3K views (UAP content is your traffic engine), Tonight tool 293 views.
Your CLAUDE.md lists the First Light Optics affiliate card as a non-negotiable on every post — it's how the site earns. In reality, 95 of 117 posts (81%) contain no /ref/wts/ affiliate link. The card is hand-placed HTML in each post; it is not injected by the layout, so the ones without it simply have none. This lines up with only 26 affiliate clicks in 28 days.
Action: backfill a relevant FLO card into the 95 posts, prioritising the highest-traffic and commercial-intent ones first — e.g. anything ranking for best telescope for beginners, stargazing tips, the solstice/observing guides, and the Tonight tool. That best telescope for beginners query alone had 1,100 Bing impressions and zero monetised clicks.
seoTitle, so the build auto-truncates their <title> at 60 characters with an ellipsis (…) — functional, but a chopped-off title reads worse in results and dents CTR.buildPageTitle and metaDesc filters already prevent overflow, so nothing is broken — this is about persuasion, not errors.Action: write deliberate seoTitle + excerpt for the ~25 highest-impression pages (solstice cluster, stargazing tips, best-telescope, top UAP posts). Lead with the searched phrase, add a reason to click.
Cohort retention collapses to ~0.4% by week 1 — essentially no returning audience. For a news/guide site that's partly expected, but it means every visit has to be re-won. Your two retention plays are the newsletter (21 signups/28 days — modest) and the Tonight tool. Push both harder: the newsletter widget is already injected site-wide, so the lever is promotion (social CTAs, a reason to subscribe) rather than placement.
Strengths (leave alone):
BlogPosting/Article, FAQPage, BreadcrumbList, SpeakableSpecification, Organization, Person, WebSite + SearchAction. This is a big part of why ChatGPT cites you.en-GB), Open Graph, Twitter cards all correct.robots.txt explicitly welcomes AI crawlers (GPTBot, Google-Extended, ClaudeBot, PerplexityBot) — good GEO hygiene./blog/SLUG/ → /blog/_posts/SLUG/ cleanup properly.Fix:
http://www.watchthestars.co.uk/sitemap.xml (42 pages, last read March 2026) is still submitted alongside the live one. Remove it to avoid mixed-signal confusion.Homepage, tested from London / Chrome:
| Metric | Result | Verdict |
|---|---|---|
| GTmetrix Grade | A | ✅ |
| Performance | 100% | ✅ |
| Structure | 98% | ✅ |
| Largest Contentful Paint | 622ms | ✅ Excellent |
| Total Blocking Time | 0ms | ✅ |
| Cumulative Layout Shift | 0 | ✅ Perfect |
| TTFB | 114ms | ✅ |
| Fully loaded | 3.4s / 1.79MB / 28 requests | ✅ Good |
The only flags are all Low priority: page payload is 1.79MB (mostly the ~1MB hero image), and a tiny "efficient cache policy" note (~7KB, mostly third-party GA script — not actionable).
Optional tidy-up: hero images run 400–600KB (largest: jwst-m77-galaxy-hero.webp at 602KB). Dropping WebP quality from q91 to ~q82 would roughly halve them with no visible loss — helps mobile data and LCP on slower connections. Minor.
Good: _headers sets X-Content-Type-Options, X-Frame-Options, Referrer-Policy, plus Cache-Control: immutable, max-age=31536000 on images/fonts/CSS/JS. Service worker does network-first HTML / cache-first assets. Auto-deploy on push to main is working.
Add (Low–Medium):
Strict-Transport-Security: max-age=31536000; includeSubDomains (HSTS)Content-Security-Policy (even report-only to start)Permissions-Policy to lock down unused browser featuresThese are three lines in _headers and close the remaining gaps a security scanner would flag.
_headers. (All quick.)seoTitle+meta for the top ~25 impression pages.Numbers cross-checked across GSC, GA4, SEMrush, Bing WMT, GTmetrix and the repo on 1 July 2026. Google's figures reflect a Search Console property verified only ~10 days prior, so its organic picture will develop further.