GeoPulse 6-Dimension GEO & Technical SEO Scoring Methodology
GeoPulse is a deterministic Generative Engine Optimization (GEO) and Technical SEO auditing workbench powered by Cloudflare Worker edge probes and browser WebCrypto, inspecting 6 endpoints over HTTPS in 5 seconds to produce 100% reproducible JSON reports.
GeoPulse evaluates passage-level AI citability (25%), Schema.org @graph entity graphs with SHA-256 CSP hashes (20%), 8 AI crawler rules with Content-Signal (20%), llms.txt and Markdown negotiation (15%), multilingual hreflang (10%), and security headers (10%) across 4 languages with localStorage state.
AI Citability 25% Schema @graph & SHA-256 CSP 20% 8 AI Crawlers & Content-Signal 20% llms.txt & Accept: text/markdown 15% Technical SEO & hreflang 10% Security & Trust Headers 10%
01 · Passage-Level AI Citability & Answer-First Prose (25%)
Weight 25% · Passage Citability
GeoPulse extracts every <p> and <dd> block of at least 40 bytes inside <main>, verifying whether passages stay within 18–140 words (or 45–450 characters), open with explicit brand naming instead of vague pronouns, and include concrete metrics like seconds, HTTPS, JSON, or localStorage for 100% AI retrieval clarity.
Passage Score (100) = Base(40) + Length_18_140w(20) + NoPronounOpen(15) + BrandEntityNamed(10) + ConcreteMetrics(15)
Category Weight = Average(All <main> <p>/<dd> Passages) × 25%
02 · Connected Schema.org Entity @graph & SHA-256 CSP Hash (20%)
Weight 20% · Schema @graph & CSP
GeoPulse parses all application/ld+json blocks to confirm a connected @graph linking Organization, WebSite, SoftwareApplication, BreadcrumbList, and WebPage with SpeakableSpecification and FAQ mainEntity items, while computing the SHA-256 digest in 1 second to verify Content-Security-Policy.
Schema Score (100) = Organization(20) + WebSite(15) + SoftwareApp(20) + Breadcrumb(15) + Speakable(10) + FAQ(10) + ExactCSPHash_NoFakeRating(10)
CSP Verification = script-src includes exact 'sha256-<base64>' && zero 'unsafe-inline'
03 · AI Crawler Access Whitelist & Content-Signal Directives (20%)
Weight 20% · AI Crawlers
GeoPulse fetches /robots.txt and /sitemap.xml over HTTPS to verify Content-Signal: search=yes, ai-input=yes, ai-retrieval=yes, ai-train=yes, explicit Allow rules for 8 AI crawlers (Googlebot, bingbot, OAI-SearchBot, GPTBot, ClaudeBot, PerplexityBot), and 100% valid XML sitemap indexing.
Crawler Score (100) = Content-Signal(35) + (AllowedNamedBots / 8 × 40) + NoRootDisallow(15) + ValidXmlSitemap(10)
Target AI Agents = Googlebot · bingbot · OAI-SearchBot · GPTBot · ClaudeBot · PerplexityBot · Google-Extended · Applebot-Extended
04 · Agent Discovery (/llms.txt) & Markdown Negotiation (15%)
Weight 15% · Agent-Readiness
GeoPulse probes /llms.txt (>100 bytes) and /llms-full.txt (>400 bytes), inspects HTTP responses for RFC 8288 Link discovery headers, and sends an Accept: text/markdown request over HTTPS to confirm the server returns clean UTF-8 Markdown starting with # in under 3 seconds.
Agent Score (100) = llms.txt_200(25) + llms-full.txt_200(25) + RFC8288_Link_Header(20) + Accept_Text_Markdown(30)
RFC 8288 Link = <.../llms.txt>; rel="llms-txt", <.../llms-full.txt>; rel="llms-full-txt", <.../sitemap.xml>; rel="sitemap"
05 · Technical SEO Metadata & Multilingual hreflang Matrix (10%)
Weight 10% · Technical SEO
GeoPulse audits SSR HTML for a descriptive <title>, a single <h1>, an HTTPS canonical link, a <meta name="description"> strictly between 25 and 160 characters, and reciprocal hreflang links across 4 languages plus x-default with strict Vary header cache discipline.
Tech SEO Score(100) = Title_>=10c(20) + Description_25_160c(20) + Single_H1(20) + HTTPS_Canonical(20) + Reciprocal_Hreflang_xDefault(20)
Cache-Key Discipline= Vary: Accept on /<locale>/ vs. Vary: Accept-Language, Accept on /
06 · Security Response Headers & Zero-Inline CSP Baseline (10%)
Weight 10% · Trust Headers
GeoPulse inspects 6 HTTPS security response headers—X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy, Permissions-Policy, Strict-Transport-Security, and a strict Content-Security-Policy with default-src 'none' and 100% removal of unsafe-inline or unsafe-eval.
Security Score(100) = Nosniff(20) + XFrameDeny(15) + ReferrerPolicy(15) + PermissionsPolicy(15) + HSTS(15) + StrictCSP_DefaultNone(20)
Composite Total = 0.25×Citability + 0.20×Schema + 0.20×Crawlers + 0.15×Agent + 0.10×TechSEO + 0.10×Security