Why I built a GEO AI Traffic Skill around questions, not rankings

I built the GEO AI Traffic Skill because a site can be technically correct and still never be mentioned by an AI assistant, and there was no repeatable way to check why. Asking "does ChatGPT recommend us?" on launch day produces an answer that cannot be compared with anything. This Skill replaces that one-off question with a logged sequence of questions, a state machine that refuses to skip steps, and a ledger that survives changing projects.
This page is a first-person account of why the GEO AI Traffic Skill exists, how it was developed, what it measures, and who should use it. The repository is at github.com/rockyandtom/geo-ai-traffic. Everything here was checked on 2026-11-11.
01 /Why did I write a GEO AI Traffic Skill?
Three recurring failures produced it. The first is that nobody can tell whether an assistant would recommend the site, because the question is asked casually and the answer is never written down as a baseline. The second is that even when the code work is done, the follow-up never happens: most GEO efforts stop at the three questions someone asked on the day of launch. The third is that GEO is a continuing activity, but its state was stored inside one project directory, so moving to another project or starting a new session made the whole queue disappear.
A fourth finding shaped the attribution half of the Skill. Analytics tools recognise only chatgpt.com as a referrer, which means a large share of assistant traffic is folded into direct. You cannot size that traffic, and you certainly cannot configure a paywall by source, until you instrument it yourself. Instrumentation has to ship before the traffic arrives, because historical data cannot be reconstructed afterwards. That is an argument for doing the work early, not for guessing a number.
So the GEO AI Traffic Skill deliberately covers only two lines of work: change the code so AI crawlers can read the site, and ask models a structured set of diagnostic questions and record what they answer. It does not cover off-site article campaigns, keyword horse-racing, community case studies, or building and deploying the site. Those are different jobs, and mixing them is how a checklist becomes useless.
02 /How was the GEO AI Traffic Skill developed?
The design answers each failure directly rather than adding more prose to the methodology.
| Problem observed | Design response | What it enforces |
|---|---|---|
| No comparable baseline | Nine-field probe log, three launch-day questions | An answer can be compared with a later answer |
| Work stops after launch | Seven-step state machine with gates | Later steps cannot run without earlier artifacts |
| State lost across projects | Cross-site registry with domain, stage and due date | "Which site is due" is answerable from one file |
| Reminder depends on memory | Parameter-generating script, not a scheduler | The platform's automation tool creates the reminder |
| Assistant traffic counted as direct | First-party attribution snippet | Source-based traffic can be measured at all |
The seven steps are page changes, infrastructure, a live audit, three health questions, baseline probing, changes and re-testing, and finally review. The gates are not decorative. Without step five's data, step six cannot be judged right or wrong, so the state machine blocks it. There is a documented --force escape hatch, and the README says plainly that using it means giving up verification rather than saving time.
State is derived from artifacts on disk, not only from marks a person remembered to set. If the audit still reports failures, the project stays at step three regardless of what the marks say. If there is no probe log, or the log lacks three answers per question or a record of the environment, step five is not complete. If there are no saved answers to the three health questions, step four is not complete. A mark is bookkeeping; the artifact is the fact.
The cross-site registry lives in one JSON file with an environment-variable override, and the reminder script emits a self-contained payload for a one-off re-check seven days later. The script does not create scheduled automations itself. Scheduling belongs to the agent platform's tool; a Python script writing automation config would be the wrong boundary. This is a small decision, but it is the kind that decides whether a workflow survives more than one project.
The package was then selected from 19 user-level Skills on this machine, cleaned, and published with 18 other files. Machine-specific absolute paths were made portable, install-path references became relative scripts/ paths, and a credential scan found nothing to redact. Nineteen files were published in total.
03 /What does the GEO AI Traffic Skill actually do?
On the code side it defines server-side rendering, title and H1 aligned to the target keyword, one intent per page, FAQ blocks, robots.txt allowing nine AI crawlers, llms.txt and llms-full.txt, edge-layer checks, sitemap reachability, and a first-party attribution snippet with source-based paywall configuration. geo_audit.py checks nine things against the live HTTP response rather than local files, including a second request with a GPTBot user agent to detect edge-layer blocking.
| Script | Subcommands | Produces |
|---|---|---|
geo_status.py | status, registry, mark, gate, reset | Next command, current stage, gate state |
geo_audit.py | Live-site audit | Nine-point report including a GPTBot request |
geo_faq.py | seed, ask, collect, list, render | Reverse-questioning chain written back into an FAQ |
prompt_pack.py | check, reverse, extra, bank, probe | Ready-to-copy prose prompts, not code blocks |
summarize_probe.py | CSV summary | Mention rate, online rate, average position, competitor ranking |
geo_registry.py | list, due, scan, add, update, done, path | Cross-site ledger |
geo_reminder.py | plan, pending, mark-created, clear | Parameters for a one-off seven-day reminder |
geo_attribution.py | snippet, paywall, report, check | Attribution snippet and paywall configuration |
indexnow_submit.py | keygen, check, submit | Bing-side discovery supplement |
The questioning line is equally explicit: three launch-day health questions, a five-tier question bank, a three-model reverse-questioning chain whose answers are written back into an FAQ block, a nine-field probe log, separate tallies for different environments, and a mention-rate summary. Prompt packs are generated as plain prose with variables filled in. That is deliberate: a prompt you have to reformat before pasting is a prompt you will not paste.
python3 scripts/geo_status.py registry
python3 scripts/geo_status.py status --domain example.com --keyword "example keyword"
python3 scripts/geo_audit.py example.com --keyword "example keyword" --path /example
python3 scripts/prompt_pack.py --domain example.com --keyword "example keyword" --stage check
python3 scripts/summarize_probe.py --csv probe-log.csvScripts write their artifacts into the current site project directory, so they are meant to be run from there. The state machine prints absolute-path versions of commands for exactly that reason. Asking ChatGPT, Claude or Gemini and pasting the answers back is a manual step; the scripts generate prompts and consume pasted answers, and do not call model APIs.
04 /Who should use the GEO AI Traffic Skill?
Use it when an assistant never mentions your site, when you need to decide how to configure robots.txt or llms.txt, when deciding whether a page needs server-side rendering or FAQ blocks, when you want a defensible way to ask an assistant whether it would recommend you, or when you need to verify whether a recommendation actually happened. It is also for the person with several sites who cannot answer "which one is due for its next pass".
| Use it for | Do not use it for |
|---|---|
| Diagnosing why an assistant never cites a site | Publishing off-site articles at volume |
| Deciding crawl directives and llms files | Choosing which keyword to target |
| Building a comparable baseline of answers | Building or deploying the site |
| Instrumenting assistant referral traffic | Reconstructing historical traffic that was never measured |
| Managing a re-check queue across several sites | Declaring one model better than another |
The closest neighbour on this site is the numbered SEO Dev Spec rulebook, which governs the underlying page and link rules; where the two disagree, the numbered rules win. The workbuddy skills page explains what a Skill is allowed to reach on your machine, which matters here because these scripts write files into project directories. My comparison page is a useful counter-example of what this Skill will not do: it publishes no verdict about which tool is better, because no side-by-side test was run. The notes index holds the field records, and the about page states who runs these checks.
05 /What are the limits of this package?
The methodology SKILL.md and the templates are in Chinese; the English README is an entry point, not a translation. IndexNow reaches Bing, Yandex, Naver and Seznam only — Google does not participate — and a successful submission does not mean a URL is indexed. The nine AI crawlers, the question bank and the nine audit checks are the package's own definitions, not standards published by any model provider.
Most importantly, the Scripts never create scheduled automations themselves. They emit parameters for a platform tool, and the returned identifier has to be written back or a duplicate reminder will be created. That is a manual handoff by design. Everything described on this page reflects the state checked on 2026-11-11.
06 /Frequently asked questions
Does the GEO AI Traffic Skill call ChatGPT or Claude for me?
No. It generates prompts and consumes answers you paste back. There is no model API call, no API key and no credential in the package. This is a deliberate limit: the answers are evidence, and evidence should be something you can open and read rather than an opaque background request.
Why a seven-step state machine instead of a checklist?
Because a checklist does not know what you already did. The GEO AI Traffic state machine reads artifacts on disk, computes the next command, and refuses to let later steps run without the data earlier steps should have produced. A checklist would let you tick "re-test" with no baseline to compare against.
Can I skip the probing step?
The script allows --force, and the README documents it as an escape hatch rather than a recommendation. Skipping baseline probing means giving up verification: you can still change the page, but you cannot tell whether the change helped. That is the one trade the design tries hardest to make visible.
Will this tell me how much AI traffic I already have?
Not retroactively. The attribution snippet exists because analytics folds much assistant traffic into direct, and historical data cannot be rebuilt after the fact. Installing the snippet gives you a measurement from that point forward. The Skill is explicit about this rather than promising a backfill.
07 /Where should you go next?
The four companion packages released on 2026-11-11 are documented on this site. The paid-demand presale validation Skill tests whether an idea deserves building before there is a site to probe, and the embed verification gate is another hard accept/reject rule for a live site. The SEO Dev Spec and the game site development record are described on the about page, which lists all five public repositories.