Guide Updated

The Katman method: research, plan, build, verify

Short answer

The Katman method gets a site recommended by AI assistants in four steps: research what customers ask, plan one page per customer situation, have your AI coding tool build it with 15 prompts that each carry an acceptance criterion, then verify with commands and a fixed question set every 14 days. It comes from our own sites, including one that got 333 visitors from ChatGPT in its first 7 days (own measurement, 21–27 September 2026).

Three gates, four steps

An AI coding tool does exactly what you ask. If it doesn’t know what to ask for, “fix the SEO” gets you one meta tag. The method gives it a sequence and a pass-or-fail check at every step. The rule from our book: never tell your coding tool to “improve rankings”. Give it a measurable job (“a unique title on every page”) and an acceptance criterion (“no two pages share a title”).

The three gates

Gate The question What usually closes it
Read Can bots reach the page and see the text? robots.txt, CDN or firewall rules, text drawn only by JavaScript, soft 404s
Quote Is there a sentence worth lifting? A vague first paragraph; a different description of the brand on every page
Fit Is there a page for the customer’s situation? Only a home page and pages named after the product

Two layers sit outside the page: mention (what others say about you) and measure (whether any of it shows up in answers). The background is on What is GEO?.

The four steps

Step Output
1. Research research.md: customer situations, your one sentence, the not-X note, competitors, proof, keywords, question set
2. Plan A page plan: which pages, at which URLs, with which blocks
3. Build The live site, built with prompts P0–P14 in order
4. Verify A measurement table: notifications sent, checks run, questions re-asked 14 days later

Step 1: Research

The most common vibe-coder mistake is naming pages after the product. Customers don’t search for your product; they describe their situation.

The research file

  • 10–12 situation sentences, without your brand, as a customer would type them into ChatGPT. Take them from sales calls, support emails and reviews.
  • What assistants say today. Ask each question logged out with web search on, and write down who is named and which pages are cited. That is your competitor list and your source list.
  • What people type into Google: autocomplete, “People also ask”, Bing Webmaster Tools keyword research, Search Console queries. Name URLs with those words: katman.pro’s Turkish consulting page became /tr/geo-danismanligi because Turkish buyers write it that way.
  • Competitors only from their own pages, with a check date; proof only if it can be verified, with source and date.

In Katman, katman_research writes this file to .katman/research.md and flags every [FILL] it can’t answer from your code.

Your one sentence and the not-X note

Write one sentence in four parts: what the customer brings, what you do, what they get, which fear is unnecessary. An invented example: “Upload your invoice. We move the line items into your accounting software in 30 seconds and flag the ones that don’t match. Your document is never stored.” Our sample site’s real sentence had the same structure, and ChatGPT repeated all four parts in two sessions on 28 September 2026 (own measurement).

Then ask ChatGPT “What is [your brand]?”. On 22 September 2026, Perplexity took the sample site for another company’s product with the same short name. After a two-word distinctive name and a “we’re not that product” line, it described the site correctly on 24 September (own measurement).

Step 2: Plan

The page plan

Few pages, but the right ones.

Page Its job Schema
Home Says who you are in one sentence; links to every important page Organization, WebSite
Situation pages One per customer situation; the answer in the first sentence Service, FAQPage, BreadcrumbList
Pricing Prices in plain text, the same numbers as llms.txt Service, Offer
Comparison guide A neutral answer to “which tools do X?”, competitors included Article, ItemList
FAQ and About Real questions; who is behind it; the not-X note FAQPage, AboutPage
Guide or PDF Something others want to link to Article
llms.txt and 404 A summary for assistants; a real 404 status —

Login, signup, checkout, thank-you and site-search pages get noindex,follow and stay out of the sitemap. On a new domain, publish 5–10 distinct pages a week, and stop any template whose “Crawled – currently not indexed” rate passes about 30%.

Anatomy of a situation page

  1. Title: situation first, brand last, about 60 characters. The meta description is the sentence you want the assistant to say.
  2. H1: the customer’s own sentence; the URL uses the same words.
  3. First 1–3 sentences: the answer, in four parts. This is the block assistants quote.
  4. One immediate action: a file drop box, a trial or a price.
  5. Proof: one verifiable number with its date.
  6. How it works: 3–5 steps in plain HTML text.
  7. Who it’s not for: 2–3 lines.
  8. Alternatives, named honestly.
  9. FAQ: 5–8 questions in the customer’s words, each answered in its first sentence.
  10. Related pages: text links; every page gets at least one inbound link.
  11. A real update date (moved only when the words change), an author and valid JSON-LD.

The brief you hand to your coding tool before writing:

Situation:  [the customer's sentence]
URL:        /[words-from-the-sentence]     Title: [situation] — [brand]
First line: [brings] → [we do] → [they get]. [fear unnecessary].
Action:     [file box / trial / price]
Proof:      [number, source, date]
Not for:    [2–3 lines]
Alternatives: [competitor: who it suits]
FAQ:        [5–8 questions in the customer's words]
Related:    [3–5 URLs]

katman_page_brief fills this in from your research file.

Don’t ask the visitor again what they want

A visitor from ChatGPT arrives with the situation they already described. On our sample site (own measurement, 21–27 September 2026):

  • The first quiz question lost about 40% of visitors, so visitors from ChatGPT now skip the quiz.
  • A file drop box went on the two pages ChatGPT linked to most; 52 of the first 68 generations used the visitor’s own file.
  • Four people who arrived with a file bought a plan that didn’t accept files, and two cancelled within an hour. Checkout now opens on the plan that matches their intent.

The rule: don’t make someone from ChatGPT explain themselves twice. The page’s job is to start solving their situation in the first minute.

Step 3: Build with the prompt book

Give the prompts to your AI coding tool in order and don’t move on until the acceptance criterion passes. P1 and P14 change nothing; they only check.

Prompt Job Accept when
P0 Context at the start of every session The tool summarises research.md and gets your OK on the page plan before writing code
P1 Audit without changing code Every public page is in the table, with clear answers on 404s, rendering and orphan pages
P2 Move text into HTML With JavaScript off, every page’s H1 and first paragraph are readable
P3 Head tags from one source A test shows no two pages share a title or description; og:image opens
P4 robots.txt and sitemap.xml No Disallow: /; every sitemap URL returns 200 and is canonical; no noindex page in the sitemap
P5 Schema (JSON-LD) No errors in Google’s Rich Results Test; every price and claim in the schema is on the page
P6 Write a situation page The first three sentences answer alone; no [FILL] left; at least one page links to it
P7 Comparison guide with competitors Every competitor fact has a source and date; our own weakness is written too
P8 llms.txt and the not-X note No price or claim in llms.txt contradicts the pages
P9 Images No <img> without alt; nothing over 200 KB; CLS under 0.1
P10 Internal and broken links 0 orphan pages, 0 broken internal links
P11 404s, redirects, preview URLs A missing page returns 404; http, www and preview URLs redirect to the main address or return noindex
P12 Speed and mobile LCP ≤ 2.5 s and CLS ≤ 0.1 on three pages; no horizontal scroll at 360 px
P13 Count ChatGPT visitors and bots The ChatGPT channel counts visits without a referrer; bot counts come from the server
P14 Final check before every publish Every cell of the check table passes, and the script is in the repo

katman_prompt returns each prompt filled with your own data, and Katman’s audit and lint tools check the criterion (all tools).

Step 4: Verify

Don’t take “done” from your coding tool on trust. Run the checks yourself: the one-minute tests are on My vibe-coded site is invisible to ChatGPT.

Tell the search engines

Where What to do What we saw on 29 Sep 2026
Google Search Console Domain property via DNS; submit the sitemap; request indexing for key pages About 10 requests a day; find out why a page isn’t indexed before resubmitting
Bing Webmaster Tools Import from Search Console; submit the sitemap; URL Submission 100 URLs a day; Copilot reads Bing
IndexNow Key file at the root; send only URLs whose text changed The sample site first sent all 173 URLs on every deploy
Brave Search search.brave.com/submit-url, one URL at a time No IndexNow; follows your Googlebot rules
Cloudflare or other CDN AI bot block, Bot Fight Mode, AI Labyrinth, managed robots.txt katman.pro’s training-bot block was on; we turned it off

After 14 days, “Discovered – currently not indexed” usually means missing internal links: that was the cause for 35 pages on the sample site, fixed with footer links. “Crawled – currently not indexed” means the pages aren’t distinct enough.

Measure the right way

  • Question set: 12 unbranded questions (3 situation, 2 tool, 2 “best X”, 2 alternative, 2 language, 1 problem) and 2 diagnostics: “What is [brand]?” and “What is [brand] ([domain])?”.
  • Human filter: a session counts as human only if it scrolled, saw more than 2 pages, finished a step, signed up or paid. In the sample site’s first week, 528 of 1,546 sessions passed (own measurement).
  • Channel rule: ChatGPT means a chatgpt.com referrer or utm_source=chatgpt.com in the link; 79% of the sample site’s ChatGPT visitors had no referrer.
  • Bots on the server: crawlers don’t run your analytics script, so count them from server logs.
  • Official reports: Search Console’s generative AI performance report (Google) and Bing’s AI Performance report (Bing).
  • Re-ask every 14 days. One run is a small sample; see visibility runs.

Publish YouTube explainers on the pages they explain, get listed in real directories, and ask the assistant “which articles did you use?” so you can send each list author one short, factual note. On Reddit: no fake accounts, disclose every mention, and only help for the first 14 days. Don’t buy links or reviews: Google’s spam policies cover link schemes and attempts to manipulate AI answers, and the UK’s DMCC Act 2024 bans fake reviews. Our own weak spot: katman.pro had 3 external links from 2 sites in Search Console on 29 September 2026.

What worked and what didn’t

Own measurement on our sample site, 21–29 September 2026. The strength labels are ours.

Practice Evidence Strength
Situation pages, answer first 59% of ChatGPT visitors landed on two of them; 8 of 17 payers came from one Strong
One sentence in first line, meta description and llms.txt ChatGPT repeated all four parts Strong
Open robots.txt, HTML without JavaScript OpenAI bots made 750+ requests with 0 errors Strong
Honest list guides 24 ChatGPT visitors in week 1 Medium
Two-word name and a not-X line Perplexity recognised the domain within 2 days Medium
Perplexity Named in 0 of 12 buyer questions Didn’t work yet
“Best X” questions, Bing and Copilot Big brands named; 0 Bing pages on 24 Sep Didn’t work yet
Claude 122 page opens, 0 clicks Read, not clicked

Mistakes we made

The book lists 21; these cost us the most:

  • Every date was launch day in the sitemap, Article schema and RSS. Dates now move only when the words change.
  • llms.txt contradicted a page, with two prices for one feature. Pages and llms.txt now come from one facts file.
  • A claim bigger than the proof: “we pick the best model for every category and language”, based on 7 samples rated by 1 person. We narrowed it and stated the test size.
  • One fix broke another: Cache-Control: no-transform switched off HTML compression, and pages went out about 4× larger.
  • Counting bots as people: a PDF link checker created 704 fake sessions in one day.
  • Scaled AI blogging: another of our sites published 203 AI-generated posts on a new domain between 19 July and 10 September 2026. By 10 September, 103 of its 106 non-indexed pages were “Crawled – currently not indexed” (own Search Console data).

The full numbers are in the case study, and all 21 mistakes are in the book.

Sources. The Katman book (29 September 2026); Google Search Central (AI optimization guide, spam policies, JavaScript SEO basics); Bing Webmaster Guidelines; IndexNow. Sample-site figures come from the site’s own analytics (21–28 September 2026, human sessions only); the site is Rnify Limited’s own product, not a client. Written by the Katman team, Rnify Limited.

Frequently asked questions

Do I need Katman to use the method?

No. The method is on this page and in the Katman book. Katman is an MCP server that runs it inside your AI coding tool and checks each acceptance criterion for you.

How long does the method take?

The book’s plan is 30 days: research and a first measurement in week 1, technical fixes in week 2, situation pages in week 3, measurement and off-site work in week 4. After that, re-measure every 14 days.

Why does every prompt have an acceptance criterion?

Because an AI coding tool told to “optimize SEO” adds a meta tag and stops. A measurable job with a pass-or-fail check, such as “no two pages share a title”, is something you can verify.

What is a situation page?

A page written for one situation a customer describes to an assistant, with the H1 in the customer’s words and the answer in the first 1–3 sentences. On our sample site, 59% of ChatGPT visitors landed on two such pages (own measurement, 21–27 September 2026).

How many pages should I publish per week?

On a new domain, 5–10 distinct pages a week. If a template’s “Crawled – currently not indexed” rate passes about 30%, stop producing pages from it and merge instead.

Does the method work for Perplexity and Claude too?

The gates are the same, but our evidence there is weak. Our sample site was named in 0 of 12 Perplexity questions, and Claude opened its pages 122 times without sending a click (own measurement, 21–27 September 2026).

What should I do first?

Test the first gate. Check that GPTBot, OAI-SearchBot and ClaudeBot get a 200 from your home page and that your text is in the HTML without JavaScript; if either fails, fix that before anything else.