The checks, vertical-tailored
What the audit checks for medical practices.
Every audit, on every plan, scores Foundational SEO, Technical SEO, Local SEO and AI Visibility at equal weight. Local SEO always applies here, because a missing address or Maps link is itself a finding. The check definitions are constant; the severity, the recommended fix, the competitor set, and the example code shift per vertical via the adapter.
Foundational pillar
Foundational
Keyword universe, content depth, on-page structure, internal link graph.
- h1-presence
Procedure landing pages should lead with a single H1 in the pattern "[Procedure] in [City] | [Practice Name]" (e.g., "Mohs Surgery in Baltimore | Chesapeake Dermatology"). The practice-name-as-H1 pattern surrenders the local-procedure intent click.
- passage-extractability
Every condition and procedure page should carry 134-167 word "What is [condition]?", "How is [procedure] performed?", "What is recovery from [procedure] like?" answer blocks co-located under question-shaped H2 so LLMs can lift the passage verbatim.
- outbound-link-quality
Cite the relevant NIH page on the condition, the relevant CDC page on prevention or epidemiology, and (where applicable) the relevant medical-society guideline. Outbound authority signals trust on YMYL medical pages and reduces the citation gap against Mayo and Cleveland Clinic.
Technical pillar
Technical
Crawl, render, schema validation, Core Web Vitals, render-parity diff.
- schema-validation
MedicalBusiness JSON-LD must include medicalSpecialty (set to your specialty: "Dermatology", "Cardiology", "Orthopedics"), areaServed, openingHoursSpecification, and a provider Person reference per practicing clinician with their medical-board verification sameAs.
- js-render-parity
Healthcare-vertical themes (especially older WordPress practice themes) frequently render the procedure menu via JS. AI crawlers see the empty version. The audit flags every page where the raw HTML is missing more than 30 percent of the rendered DOM content.
- core-web-vitals
Patient research is overwhelmingly mobile. LCP below 2.0s and INP below 200ms are required, especially for procedure pages where the conversion is appointment-scheduling and the bounce-back-to-SERP rate on slow pages is double the practice-average.
Local pillar
Local
On-site local signals: LocalBusiness schema, Maps link, phone and address, service-area pages.
- local-business-schema
The audit checks that a LocalBusiness-class type such as MedicalBusiness or Physician is declared in your JSON-LD. It does not validate the fields. We recommend geoCoordinates, openingHoursSpecification per day, acceptedInsurance where you disclose it, and a sameAs to each clinician's medical-board verification page.
- nap-consistency
The audit reads this page for a complete phone, street address, and ZIP code fingerprint. It does not compare your listings on Google, Healthgrades, Vitals, Zocdoc, Yelp, or your medical-society and insurance-network directories; check those by hand so they match your site exactly.
- service-area-page-coverage
The audit detects service-area pages from internal links that follow a /locations/ or /areas/ URL pattern. It does not grade how unique each page is, so write each metro page around local hospitals, local insurance networks, and local conditions rather than boilerplate.
AI Visibility pillar
AI Visibility
AI crawler readability, schema for AI, passage extractability, entity graph.
- schema-completeness-for-ai
The medical AI graph (MedicalBusiness + Physician + Organization + Person + FAQPage + BreadcrumbList + MedicalProcedure) is the densest of any vertical. AI engines triangulate "best [specialty] for [condition] near [city]" answers against this graph plus a medical-review byline.
- entity-graph
Per-clinician Person sameAs to LinkedIn, the medical-board verification page, the medical-society member directory, the residency program page (where applicable), and the Healthgrades / Vitals / Zocdoc profile. AI engines treat the second-degree clinician entity graph as a primary YMYL trust signal.
- passage-headline-co-location
A page that lists 8 conditions with a one-sentence summary and an H3 link out is unextractable for LLMs. Replace with question-shaped H2 + 134-167 word answer blocks per condition. The page length grows but citation rate roughly triples on YMYL medical queries.