AI Search Audit
TL;DR
No backlog items shipped this window (2026-08-08 → 2026-08-14) — only two commits since last audit and both were audit-infrastructure (PR #118 last week's audit, PR #119 backfilled the 6-week reports archive). Backlog after this run: 9 items pending (#12, #13, #14, #15, #16, #25, #32, #35, and NEW #36 for postpartum thin-SERP opportunity). One item body updated: #35 (GSC Gen AI report) — see industry-signal #6 below for why.
Search visibility: 34 queries re-checked against live SERPs on 2026-08-14. **THIRD-EVER RANKED QUERY + FIRST GENERALISATION WIN — Meridian's /conditions/sports-injury-recovery/ now ranks THREE sports-injury queries.** (1) 'tennis elbow osteopath christchurch' — #9 held from last week; CONTINUATION CONFIRMED so last week's rank was not a one-run artefact. (2) NEW 'sports injury osteopath christchurch' — #5 (was 0 last week); performanceplusphysiochch.co.nz dropped out of top 5 to open the slot. (3) NEW 'sports injury recovery christchurch' — #6 on the first-ever check of the direct URL-slug match, in an otherwise all-physio SERP; confirms the URL-slug generalisation hypothesis from last run. Total ranked queries: 0 (weeks 1–17) → 1 (last week) → 3 (this week). The /conditions/sports-injury-recovery/ page — with its citation-ready 40–60 word intro (#31) + structured list blocks (#34) + Physician + MedicalCondition + FAQPage schema — is now the highest-performing URL on the site by SERP-visibility yield. RULE INTERPRETATION: 'sports injury osteopath christchurch' was at priority 0 before ranking; strict application of 'keep priority for rank 4–10' would leave it at 0 and drop it below the check cutoff — bumped to 15 (matching tennis elbow's tracking floor) so it stays in the pool. Documented in auditQueries.json meta. Elsewhere: rank 0 across the other 31 queries checked, so standard -10 decay applied. NEW THIN-SERP OPPORTUNITY: 'postpartum osteopath christchurch' returned only 6 results — a dedicated page targeting this US-variant spelling could rank easily (added as item #36, effort S). REGRESSION: 'osteopath vs physiotherapist christchurch' — Better Health 3-in-3 pattern persists for a second week; priority now 15 → 5. NOTABLE COMPETITOR CHURN: performanceplusphysiochch.co.nz dropped OUT of 'sports injury osteopath' top 5 (was #1 last week) — the same SERP volatility that opened the slot for us; osteo.co.nz took #1 back on 'concussion osteopath christchurch' from long-standing #1 triskelionconcussioncare.co.nz; ableacupuncture.co.nz is a new entrant in fertility SERP; dph.nz new in herbal medicine; chchwellness.co.nz new in chiropractor-vs-osteopath; osteopath.net.nz new in headaches. Two queries pruned this run for zero-signal / no-viable-competition patterns over 3+ runs at priority <20: 'acupuncture vs dry needling' (pure informational query dominated by US authority sites — peaktherapy.com / inspireatlanta.com / rockvalleypt.com — no NZ SERP to displace) and 'osteopath cashmere' (suburb owned by same-name competitor cashmereosteo.co.nz; no plausible path to displace on their own suburb name). Five derived queries added — all extending proven patterns: 'sports osteopath christchurch' + 'elbow pain osteopath christchurch' + 'sports rehabilitation christchurch' (test the ceiling of the sports-injury-recovery ranking pattern), 'acupuncture for menopause christchurch' + 'post cancer acupuncture christchurch' (extend Min Jin's women's health / oncology-supportive-care specialty per PR #98). Pool size 49/50. Five priority-10 queries not checked this run due to batch-allocation skew (frozen shoulder, arthritis, baby, shoulder pain, acupuncture acc) — prioritise next run.
Industry signals (week of 2026-08-08 → 2026-08-14): (1) **Ranking volatility Aug 12–13 (unconfirmed).** Semrush Sensor / Advanced Web Rankings / Mozcast community reports logged a second August volatility wave with no core-update announcement on Search Status Dashboard. YMYL/health is historically the hardest-hit vertical in unconfirmed volatility. If Meridian sees a dip on /services/ or /conditions/ pages, don't rewrite copy in response — pattern usually settles inside 10 days. (2) **Google removed the HowTo structured data doc from Search Central (~Aug 9)** — formally closes a type that was already deprecated on desktop in 2023. Checked: Meridian uses no HowTo schema, so no action needed. Noted only so future condition-page work doesn't accidentally reach for it. (3) **Perplexity motion to dismiss Reddit scraping suit rejected (federal, 31 Jul).** Reddit / Google $60M/yr licensing renewal talks reportedly stalled; both sides re-scoping access. The 46.7% Perplexity-cites-Reddit baseline is now a moving target — if Reddit tightens access to Google/Perplexity, the marginal ROI of Reddit seeding (#15) may drop within a quarter. Keep #15 on the backlog but note the ROI is time-decaying more than we thought. (4) **EU AI Act Article 50 enforceable Aug 2.** Any chatbot/AI-generated content aimed at EU users must self-disclose. Minor for a Christchurch clinic (audience is NZ), but if we ever ship an AI-generated blog draft or symptom-triage widget, add a 'reviewed by [practitioner]' disclosure — cheap insurance and it doubles as an E-E-A-T signal that Perplexity/Claude weight. (5) **GBP local-pack redesign spreading Aug 11–13** (BrightLocal + Local Search Forum). Map moved to top, action buttons rearranged, response rate surfacing more prominently. Reinforces the Whitespark 'review recency #1' baseline and adds response rate as a new sub-signal — the clinic's next review-request cadence should include a 24–48 hr response SLA on the clinic side, not just a review ask. Feeds directly into item #16. (6) **CTR-loss diagnostic framing (SEJ ~Aug 11)** — 'stable rankings + stable impressions + falling CTR = AI Overview click loss'. Reads standard-search CTR against the new GSC Gen AI panel. **CRITICAL CONTRADICTION vs last week's baseline: multiple August write-ups (Pragma-Code, Weblumino, TJ Robertson, SmartTeam) all state the GSC Generative AI panel is STILL impressions-only — no CTR, no clicks, no query data — despite last week's tldr claiming CTR was added in July.** Either the July 'CTR added' note was premature or the addition was rolled back. Item #35's body updated to reflect this — the report is still worth enabling for AI-surface impressions, but the CTR-plus-booking_completed attribution story pairs with the Performance report's existing CTR column, not the Gen AI panel, until Google actually ships CTR there. (7) **Semrush AI Visibility Index expansion** — only 36 brands hold top-100 visibility across ChatGPT / Gemini / AI Mode / AI Overviews simultaneously; 45% of marketing leads cannot measure AI visibility at all. For a NZ clinic, being present on even 2 of the 4 surfaces is a moat. A monthly manual check of 'osteopath christchurch', 'ACC osteopath near me' and 5–10 condition queries in ChatGPT + Perplexity + AI Mode (~10 minutes) is a defensible free alternative to paid AI-visibility trackers. Consider adding as an operational-checklist item on the weekly-routine README if desired. Tier 1 → #35 (still tier 1 despite the CTR contradiction — GSC AI-impression data is still the only first-party AI-visibility signal we can get). Tier 2 → #13, #16, #25, #32, and NEW #36. Tier 3 → #14, #15.
Already implemented
- llms.txt and llms-full.txt auto-generated from site data
- Explicit AI-crawler allow-list in robots.txt (GPTBot, ClaudeBot, PerplexityBot, Googlebot-Extended, CCBot, anthropic-ai)
- MedicalClinic + MedicalBusiness JSON-LD in base template with address, hours, priceRange, offer catalog
- FAQPage JSON-LD on the homepage
- Canonical URLs, OpenGraph, Twitter Card tags on every page
- Auto-generated sitemap with lastmod
- AggregateRating + Review schema (ratingValue 4.9, reviewCount 65, three real testimonials) nested under MedicalBusiness
- Physician JSON-LD per team profile with sameAs to professional registers and visible 'Registered with …' block
- Per-service MedicalTherapy / Service schema with provider, areaServed, hasOfferCatalog of specialties, and mainEntityOfPage
- FAQPage JSON-LD on every service page (driven by faq arrays in services.json)
- BreadcrumbList JSON-LD + visible breadcrumb strip on non-home pages
- Visible 'Last updated' block on service and team pages, with dateModified in WebPage schema
- sameAs block on clinic JSON-LD (Google Business Profile etc.)
- Expanded llms.txt — Conditions-treated, Pricing-&-ACC, Common-questions sections
- Homepage H1 reframed to 'Osteopathy, Acupuncture & Herbal Medicine in Christchurch'; practitioners section demoted to H2
- /conditions/sciatica/, /conditions/headaches-migraines/, /conditions/pregnancy-back-pain/, /conditions/sports-injury-recovery/ — four condition Q→A pages with MedicalCondition + FAQPage schema, plus a What We Treat nav dropdown
- ProfilePage + MedicalWebPage @graph schema on every team profile (alongside the Physician node), so each practitioner URL is its own retrievable AI-search entity
- Hero subtitle and practitioners intro reframed to evidence-informed language (no longer says "holistic"); each line is now distinct rather than restating the H1
- "Serving Hillmorton, Halswell, Hoon Hay, Cashmere, Addington, Riccarton, Sydenham, Wigram & surrounding Christchurch suburbs" — site-wide footer block + extended llms.txt Area-served line
- Treats: chips on every team profile (in a What I Treat card), with Nina's row carrying a clickable pink-tinted pill linking to the new fertility page
- /services/acupuncture/fertility/ sub-page — MedicalTherapy schema linking to the parent acupuncture #service, FAQPage on IVF timing / ACC status / Nina's credentials, hero + 3 specialty images
- Site-wide sweep removing 'GP referral' from patient-facing copy (per the CLAUDE.md copy rule); condition CTA banners simplified to heading + booking button only
- Google Business Profile services audit completed manually (item #21) — owner added Osteopathy, Medical acupuncture, Dry needling, Neck pain treatment, Headache & migraine treatment, Sports injury treatment, Pregnancy back pain, Paediatric osteopathy, Herbal medicine to GBP service list
- /conditions/neck-pain/ — Q→A page with MedicalCondition + FAQPage schema, mirroring the four item-#10 pages; covers acute vs chronic, when to seek urgent care, ACC eligibility, links back to the osteopathy service (item #22, PR #63)
- /conditions/back-pain/ — Q→A page with MedicalCondition + FAQPage schema; covers acute vs chronic, sciatica overlap, when to seek urgent care, ACC eligibility, links to /conditions/sciatica/ and the osteopathy service (item #23, PR #64)
- + the same for /llms-full.txt added in the HTML head — signals AI crawlers that a Markdown summary exists alongside the HTML (item #26, PR #62)
- Physician schema upgraded to Schema.org v30 IndividualPhysician on every team profile, with practicesAt: { @id: '#clinic' } linking each practitioner to the MedicalClinic node — sharpens entity disambiguation for ChatGPT / Perplexity / AI Overviews (item #27, PR #65)
- Image alt text rewritten descriptive-not-titular across team profiles (team-profile.njk now uses member.photoAlt with name fallback), condition pages, and service pages — each
now describes what's visible plus relevant clinical context. Closes G14 (item #28, PR #70 / bundled in #71)
- Hillmorton + Wigram + Addington + Halswell + Cashmere now appear in flowing intro copy on every service page in services.json (osteopathy, acupuncture, herbal medicine), not just the site-wide footer line. Closes G22 (item #29, PR #68 / bundled in #71)
- 'Conditions we commonly treat' block added to the osteopathy service page linking all six condition pages (back-pain, neck-pain, sciatica, headaches-migraines, pregnancy-back-pain, sports-injury-recovery), plus a matching 'Common conditions we treat' section on the homepage with high-intent button links — gives the condition pages an internal-link surface beyond the nav dropdown so Google can pass relevance signals to them. Closes G23 (item #30, PR #69 / bundled in #71)
- /book/ page made AI-citable — added ReserveAction schema and visible intro content so ChatGPT / Perplexity / Gemini can recommend it as a booking action, not just an interstitial. Especially relevant after Perplexity Health launched 2026-03-19 with EHR integration, since AI assistants are increasingly handling the appointment-booking step (PR #72)
- Explicit www → apex 301 redirects added in netlify.toml — Google now consolidates link equity onto the canonical meridianosteopathy.co.nz apex domain rather than splitting it between www and apex variants (PR #73)
- /services/medical-acupuncture/ renamed to 'Acupuncture & Dry Needling' across nav, homepage card, JSON-LD, breadcrumbs and inter-service cards; Min Jin positioned as TCM lead and Nina Hu as Western medical acupuncture / dry needling lead; new FAQ entries on acupuncture-vs-dry-needling, which practitioner to book, and what to expect at a first dry-needling session. Implementation diverged from the original spec (which had been a separate /services/acupuncture/dry-needling/ sub-page) — the rename achieves the same G16 goal of one indexable URL targeting Western dry-needling intent, without splitting authority across two pages. Closes G16 (item #17, PR #78)
- Every condition page (back-pain, neck-pain, sciatica, headaches-migraines, pregnancy-back-pain, sports-injury-recovery) and every service page (osteopathy, acupuncture, herbal-medicine) now opens with a 40–60 word citation-ready direct answer in the 'X treatment at Meridian Osteopathy in Christchurch …' format, followed by the existing evidence-informed prose as the second paragraph onward. The answer-leading sentence also becomes the first sentence of the MedicalCondition / Service JSON-LD description field, so it propagates to AI-citation crawlers. Closes G24 (item #31, PR #77)
- Per-practitioner booking pages added — each practitioner now has their own /book/
/ URL with Cliniko pre-targeted to their calendar (no more landing on the generic 'select a practitioner' page after a homepage card click); homepage practitioner cards repointed at the matching per-practitioner /book/ page. Reduces clicks from 'pick a practitioner' to 'pick a time' from 3 to 1 (PRs #80, #81) - Min Jin's ACC eligibility correctly distinguished from Nina Hu's across acupuncture pages and per-practitioner booking pages — Nina is an ACC-registered osteopath who lodges claims in clinic and integrates dry needling within ACC-subsidised consultations; Min is registered to treat as an ACC acupuncture provider but does not lodge new claims herself. Wording on /book/min-jin/ adjusted accordingly (PR #82)
- Kaylee Frost team photo updated, colour-corrected, and optimised across multiple iterations (PRs #86, #88, #90, #93)
- /admin Decap CMS coverage gaps filled — all editable content blocks on the live site now have corresponding CMS controls so the clinic can self-serve copy updates without code changes (PR #91)
- Claude-SearchBot + Claude-Web added as explicit allow lines in src/robots.txt alongside the existing ClaudeBot / anthropic-ai entries — safeguards Claude.ai live-retrieval citation traffic against any future Disallow line we add. Item #33, PR #96 (2026-06-03)
- Structured 5–7 item list blocks added to every condition page (back-pain, neck-pain, sciatica, headaches-migraines, pregnancy-back-pain, sports-injury-recovery) — three
- sections under their own H2s per page ('Common signs', 'When to see an osteopath', 'What to expect at your first appointment'), sourced from a new `lists` array on each condition in conditions.json so future edits stay in data not markup. Search Engine Land's May 2026 analysis of 25k AI-cited URLs found list-formatted pages cited at materially higher rates than equivalent prose. Item #34, PR #97 (2026-06-03)
- Min Jin's profile and the Acupuncture service page restructured: Min now titled 'Acupuncturist & Massage Therapist' site-wide; qualifications reformatted to a bulleted list; About Me trimmed; special interests refocused on women's health (PCOS, endometriosis, dysmenorrhoea) and post-cancer supportive care (nausea & vomiting, fatigue, chronic pain, peripheral neuropathy); What I Treat refreshed; Acupuncture page reflects Min's new focus + massage-therapist role; broken practitioner links fixed in llms.txt / llms-full.txt with flattened qualifications and an enriched meta/OG description (PR #98, 2026-06-05)
- Jonathan Grice promoted to Senior Osteopath & Low Level Laser Therapist site-wide — title updated in team.json, homepage cards, Physician JSON-LD and /book/jonathan/; homepage practitioner order reshuffled to Maddison → Kaylee → Jonathan → Nina → Min (PR #103, 2026-06-23)
- IPP3A indirect-collection privacy notices added — new section 3 of privacy.njk covering all six required notification elements (what / why / recipients / clinic identity / legal basis / access rights) per the Privacy Act 2020's IPP3A (in force 2026-05-01); submit-referral.js now emails an IPP3A notice to referred patients; docs/ipp3a-compliance.md captures the clinic-side checklist and Cliniko/verbal templates for indirect collection outside the website (PR #104, 2026-06-24)
- Min Jin profile content refreshed at her request (PR #105)
- Monthly Practitioner Spotlight infrastructure added — homepage spotlight section, team-card ribbon, profile hero badge and highlighted 'What I Treat' pill, all driven by src/_data/spotlight.json and editable in the CMS under Homepage → Practitioner Spotlight. First cadenced fresh-content surface the site has ever had; June spotlight = Maddison. Partial address for #14 (blog) — gives us a monthly editorial cadence without a full blog collection (PR #108, 2026-07-11)
- Maddison's qualifications reformatted as a bullet list (PR #109, 2026-07-13)
- ACC copy rewritten site-wide from 'we lodge claims for you' to 'ACC-registered provider' framing after Google Ads disapproved the clinic under the 'Government documents and official services' policy (ACC is a Crown entity; Google's classifier read facilitation language as paid-intermediary status). Explicit non-affiliation line + acc.co.nz link added on the two ads-target service pages and in the ACC FAQ / llms.txt. ACC-registered status, pricing labels, meta descriptions, footer badge and privacy.njk untouched (factual status claims and required disclosures respectively). Changes the angle item #25 (/acc/ landing page) needs to take — the page should describe provider status and patient benefit, not the mechanics of claim filing (PR #113, 2026-07-29)
- CLAUDE.md copy-rule violations swept out: 'at no extra charge' removed in three places (Nina's approach + two appointment-type descriptions), reworded to describe the session itself; five 'GP' → 'doctor' fixes in clinically legitimate contexts (red-flag escalation advice + coordinating with a patient's existing care) — 'doctor' carries the same clinical meaning without suggesting gated access (PR #114, 2026-07-29)
- Cliniko booking funnel tracked as GA4 conversions with real booking_completed events (not click proxies) — the widget's cross-origin iframe broadcasts step transitions (cliniko-bookings-page:schedule / :patient / :confirmed) which we now listen for; drop-off between steps is visible rather than inferred; duplicate inline handler across book.njk + book-practitioner.njk consolidated into src/js/cliniko-booking.js. Pairs with item #35 (GSC Gen AI report) for end-to-end AI-surface → booking attribution once GSC has data (PR #116, 2026-07-29)
Gaps (reference)
Background context. The action buttons live on the Punch-list below — each punch-list item addresses one or more of these gaps.
G7. No ACC landing page
Neck-pain and back-pain condition pages ship (items #22, #23 closed). The remaining piece of G7 is a single indexable /acc/ URL — Active Health now #1, chchosteopaths.co.nz now #2 (moved up from #4 last week), osteo.co.nz slipped to #4; House of Acupuncture owns 'acupuncture acc christchurch'. Item #25 covers, but the copy angle needs to match PR #113's site-wide reframing from 'we lodge claims for you' to 'ACC-registered provider' framing — describe provider status + patient benefit, not the mechanics of claim filing (Google Ads classifier read the old wording as paid-intermediary facilitation and disapproved the clinic under the 'Government documents and official services' policy).
G8. No blog / editorial content
Freshness cliff at ~3 months. Confirmed again 2026-08-14: content depth + freshness remain the dominant differentiator against blog-post-heavy competitors like osteopath-christchurch.com (headaches/migraine/cranial/baby/arthritis), MK Osteopathy (TMJ), and headachetendon.nz (chiropractor #1 on 'lower back pain christchurch' — 2 weeks running). Meridian's Practitioner Spotlight infrastructure (PR #108) is the closest thing we have to blog cadence — one entry per month, homepage-surface only, not a separate URL. Item #14 covers the full blog build; #14's file-list note now says the Spotlight infrastructure is a starting point the blog collection can graft onto rather than a from-scratch build. Reddit/Perplexity licensing turmoil this week (see #G15) does NOT change the value of on-site content freshness — Google Search treats first-party freshness independently of any Reddit-citation dynamics.
G15. No off-site citation strategy
Reddit is 46.7% of Perplexity top-10 citation share (Tinuiti Q1 2026 / SaaSIntelligence follow-up). ChatGPT ~5%, Gemini 0.1%. Only ~11% domain overlap between ChatGPT and Perplexity citations. UPDATED 2026-08-14: Perplexity's motion to dismiss the Reddit scraping suit was rejected on 31 Jul and Reddit / Google $60M/yr licensing renewal talks are reportedly stalled — both sides re-scoping access. If Reddit tightens access to Google/Perplexity over the next quarter, the marginal ROI of seeding r/newzealand / r/chch answers may drop from the current baseline. Item #15 stays on the backlog but with an implicit clock — do this in the next 60–90 days or the leverage window may narrow. ClaudeBot overtook GPTBot at 16.28% vs 9.74% (Cloudflare July 2026), so a mostly-Reddit strategy also feeds Claude's answers via Claude's Reddit-indexing path — until it doesn't.
Search visibility
What real users type into Google and ChatGPT — and where Meridian ranks for each. Pool self-expands via Google autocomplete on Saturdays. Last checked 2026-08-14.