Category: Guides

  • WordPress SEO on Autopilot: What Is Real in 2026

    WordPress SEO on Autopilot: What Is Real in 2026

    WordPress SEO autopilot means two different things at once: autonomous execution and gated authority. A system can pull search data, watch for drift, and draft content on its own every day. It should not publish that content, or change a live page, without a person signing off first. Anything that skips the second half of that sentence is not autopilot. It is a liability.

    I run this site, organicos.shivaatripathi.com, as a working example of that split. A daily job pulls Google Analytics and Search Console data, classifies where the site stands, checks for unauthorized changes, and flags problems. None of that requires me. Publishing a new post, editing a live page, or purging a cache does. I want to walk through exactly where that line sits here, because most “SEO autopilot” pitches blur it on purpose.

    What actually runs without me

    Every day, a scheduled job pulls session data from GA4 and impressions and clicks from Search Console for this site. It compares the new numbers against a trailing window and checks whether anything moved more than a set threshold. On a recent run, impressions moved from 109 to 114 day over day, a 9.6% change against the trailing median. That is below the alert threshold, so nothing gets escalated. The job also classifies the site’s lifecycle stage from the same data. With zero clicks across the tracked pages, the stage comes back as early, and the report says so directly rather than guessing at a number that is not there yet.

    The same daily run checks for drift: it re-fetches title, slug, status, canonical URL, and SEO metadata for a fixed set of tracked pages and compares them against a stored baseline. On one recent run, five of six tracked pages matched exactly. One showed an apparent difference in a title field, but the job did not treat it as confirmed drift. It flagged that the difference matched a known rendering artifact, WordPress’s own text conversion turning a straight apostrophe into a smart-quote character, and left the baseline unchanged pending a cleaner check. That distinction, between “something is different” and “something is wrong,” is the part that has to run unattended for autopilot to be useful instead of noisy.

    It also runs a straightforward P1 check: has any tracked page lost more than 30% of its clicks against a real baseline. With clicks still at zero across tracked URLs in this window, there is nothing to compare, so the check reports that plainly instead of inventing a false alarm.

    What stays gated, and why

    Three categories never run unattended here: publishing, live-page edits, and anything that needs elevated WordPress permissions.

    Publishing needs a recorded human approval before a content brief even enters drafting. Every brief on this site carries an approvals block with an actor, a channel, a decision, and a timestamp. Approval replies are only recognized if they follow a strict format or reply directly to the original request. A vague or off-format reply does not count, on purpose. That is a deliberate friction point, not a bug.

    Live-page edits are gated the same way, and the incidents on file explain why. One earlier run tried to purge the sitemap cache using an editor-level application password and was rejected outright, because that action requires a higher permission level than the automation account holds. The system did not attempt a workaround. It stopped and reported that a human with the right access needed to finish the step.

    A separate incident is the clearest argument for gating publishing specifically: a post once went live with escaped block-comment syntax leaking into the rendered page as literal text instead of rendering as normal paragraphs. The fix was not just patching that post. It was adding a permanent rule: after every publish, fetch the actual rendered HTML, not just the API response, and confirm nothing looks like raw markup before calling the job done. I still run that check on this article before treating it as finished.

    There is also a rule about incomplete decisions: if a required field is missing when the system is about to act, it treats the request as blocked rather than filling in a guess. And on at least one recent day, a required summary alert could not be sent at all because the messaging tool was unavailable in that session. The job did not pretend to send it. It logged the gap as an open task for the next run instead.

    None of these are edge cases I am citing to sound careful. They are the actual reasons the gate exists, recorded as they happened.

    Plugins, agents, or services

    If you are deciding how to build this for your own WordPress site, there are three broad shapes, and they trade off differently.

    SEO plugins (Rank Math, Yoast, and similar) handle the mechanical layer well: meta fields, sitemaps, schema markup, redirect management. On their own they are WordPress SEO automation, not autopilot. They do not decide what to publish or when. That decision still sits with whoever runs the site.

    Agent-based setups, like the one behind this site, add a layer on top: they read your analytics and search data, draft content against a brief, and check their own output against rules like word count, banned phrases, and formatting before it ever reaches a human. The value is in that pre-check layer catching problems before you see them, not in removing your review entirely.

    Managed SEO services promise the most hands-off experience, but the tradeoff is visibility. You typically cannot see the incident log, the drift-check history, or the specific gate that stopped a bad change from going live. If a vendor cannot show you what runs unattended and what does not, treat that as a real gap, not a detail. This is the same tradeoff behind organic growth automation more broadly: the parts worth automating are the ones you can still inspect.

    A realistic autopilot setup

    Whatever stack you use, the same shape works: automate the reading and the drafting, gate the writing and the publishing.

    1. Connect GA4 and Search Console so a daily job can pull sessions, impressions, and clicks without anyone opening a dashboard.
    2. Set a drift baseline for the pages you care about most, and check it daily against title, canonical URL, and SEO metadata.
    3. Let content briefs get drafted automatically from keyword-gap or opportunity data, but require a recorded approval, with a real actor and timestamp, before drafting starts.
    4. Run every draft through fixed checks before publish: word count, banned phrases, evidence trace for every claim, and a formatting check that catches label text or raw markup before it reaches the live site. This is what turns drafting into automated content operations instead of an unchecked content pipeline.
    5. After publishing, fetch the live rendered page and check it, not just the API response that created it, before marking the job done.
    6. Use a WordPress account with the minimum permission level automation actually needs, so anything requiring more access fails loudly and routes to a person instead of failing silently.

    That is what “autopilot” looks like when I stop marketing it and just describe what runs. It is closer to a co-pilot with a hard stop before takeoff than a system that flies itself.

    Frequently asked questions

    Can WordPress SEO actually run fully unattended?

    The reading and monitoring side can: pulling analytics data, checking search performance, watching for unauthorized page changes. Publishing and live edits should not run unattended, because the cost of a bad automated publish is higher than the time saved by skipping review.

    What is the risk of full automation without a human gate?

    The clearest example on record here is a post that went live with escaped code syntax rendering as visible text on the page, caught only because someone checked the rendered HTML afterward. Without that check, it would have stayed broken.

    What permission level should an automation account have on WordPress?

    The minimum the job actually needs. An editor-role account here was correctly blocked from purging a sitemap cache, an action that needs site-admin permissions, and the system escalated to a human instead of trying to bypass it.

    How do you decide what to automate first?

    Start with reading, not writing: analytics pulls, search performance checks, and drift monitoring against a fixed baseline. Those have almost no downside if they run daily without a human. Add drafting next, still gated behind approval. Add publishing last, and only once the pre-publish checks (word count, evidence trace, formatting, rendered-page verification) are solid.


    About the author: Shivaa Tripathi leads digital and performance marketing at Exotel, focused on demand generation, martech, and applying AI to SEO. This site runs the WordPress SEO autopilot system described above, in production, including its failures.

  • How to Block AI Crawlers (and What It Costs You)

    How to Block AI Crawlers (and What It Costs You)

    Blocking AI crawlers means adding Disallow rules for each bot’s user-agent to robots.txt, and, if you want real enforcement, blocking the same user-agents at the firewall or CDN level too. There are three classes of AI bot to decide on separately: training crawlers (GPTBot, ClaudeBot, CCBot, Google-Extended, Applebot-Extended), search/answer crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot), and on-demand bots that fire when a user asks a live question inside ChatGPT, Claude, or Perplexity (ChatGPT-User, Claude-User, Perplexity-User). robots.txt is a request, not a lock: OpenAI’s own documentation says ChatGPT-User does not respect it, and Perplexity’s docs say the same for Perplexity-User, so a robots.txt line alone will not stop every fetch. This site currently blocks none of them, and explains why below.

    Every AI company that crawls the web publishes a user-agent string, and every one of those strings can be blocked with a line in robots.txt. What most guides skip is that “block AI crawlers” isn’t one decision – it’s several, because training bots, search bots, and on-demand bots behave differently, and blocking one doesn’t touch the others.

    The three classes of AI crawler

    Training bots crawl to build or update a model’s training data. GPTBot, ClaudeBot, CCBot, Google-Extended, and Applebot-Extended fall here. Blocking these stops your content from being used in future model training, and nothing else – it doesn’t touch whether your pages appear in AI search results or chat answers today.

    Search and answer bots crawl to index pages for retrieval, the same way a search engine does, so a model can cite or summarize your page in response to a live question. OAI-SearchBot, Claude-SearchBot, and PerplexityBot are in this class. Blocking these is closer to blocking Googlebot: it removes you from that assistant’s retrieval index entirely.

    On-demand bots fire in real time when a specific user action triggers a fetch – someone pastes your URL into ChatGPT, or asks Perplexity a question that leads it to open your page live. ChatGPT-User, Claude-User, and Perplexity-User do this. The important nuance: OpenAI’s documentation states ChatGPT-User does not respect robots.txt because the action is user-initiated, and Perplexity’s documentation says its user-triggered fetcher “generally ignores robots.txt rules” for the same reason. Claude-User is the exception – Anthropic’s documentation confirms it does respect robots.txt.

    Every current AI crawler user-agent

    This list reflects vendor documentation as of this writing; user-agents change, so recheck before you rely on it.

    • GPTBot (OpenAI) – training data crawler, respects robots.txt.
    • OAI-SearchBot (OpenAI) – crawls to surface results inside ChatGPT search, respects robots.txt.
    • OAI-AdsBot (OpenAI) – crawls for ad-quality checks, respects robots.txt.
    • ChatGPT-User (OpenAI) – fires on live user actions inside ChatGPT, does not respect robots.txt.
    • ClaudeBot (Anthropic) – training data crawler, respects robots.txt.
    • Claude-SearchBot (Anthropic) – crawls for search-result indexing, respects robots.txt.
    • Claude-User (Anthropic) – fetches pages in response to a live Claude query, respects robots.txt.
    • PerplexityBot (Perplexity) – search indexing crawler, respects robots.txt.
    • Perplexity-User (Perplexity) – fetches pages for a live user query, does not respect robots.txt.
    • Google-Extended (Google) – governs use of your content for training Gemini apps and the Vertex AI API for Gemini; does not affect Google Search ranking or inclusion.
    • Applebot-Extended (Apple) – a secondary signal that controls AI-training use of pages Applebot already crawled; disallowing it does not block Applebot itself or remove you from Siri or Spotlight results.
    • CCBot (Common Crawl) – the crawler behind the Common Crawl dataset many models train on, checks robots.txt before crawling.

    To block every bot above in robots.txt, add a stanza per user-agent:

    User-agent: GPTBot
    Disallow: /
    User-agent: ChatGPT-User
    Disallow: /
    User-agent: OAI-SearchBot
    Disallow: /
    User-agent: OAI-AdsBot
    Disallow: /
    User-agent: ClaudeBot
    Disallow: /
    User-agent: Claude-User
    Disallow: /
    User-agent: Claude-SearchBot
    Disallow: /
    User-agent: PerplexityBot
    Disallow: /
    User-agent: Perplexity-User
    Disallow: /
    User-agent: Google-Extended
    Disallow: /
    User-agent: Applebot-Extended
    Disallow: /
    User-agent: CCBot
    Disallow: /

    robots.txt vs. firewall-level blocking

    robots.txt is a published request that well-behaved bots choose to follow. That’s true for most of the bots above, by their own vendors’ documentation. But two of the three on-demand bots – ChatGPT-User and Perplexity-User – explicitly don’t honor it, because the vendors treat a live user click as different from an automated crawl. If you actually need to stop those fetches, a robots.txt line does nothing; you need to block the user-agent (or the originating IP ranges, where published) at the CDN or firewall layer, so the request is refused before it reaches your server. robots.txt is worth setting regardless, since most bots do respect it, but treat it as a courtesy notice for the well-behaved majority, not an enforcement mechanism for all of them.

    What each block actually costs you

    Blocking training bots (GPTBot, ClaudeBot, CCBot, Google-Extended, Applebot-Extended) costs you nothing visible today. Your pages keep ranking in Google, keep showing up in AI search answers, and keep getting cited by assistants that use separate crawlers for retrieval. What you give up is any influence your content might have had on a future model’s training data – a cost with no way to measure its size, since no vendor publishes how much any one site’s content matters to training outcomes.

    Blocking search and answer bots (OAI-SearchBot, Claude-SearchBot, PerplexityBot) has a direct, visible cost: your pages stop being eligible for citation or retrieval in that assistant’s live answers. If a goal for your site is showing up when someone asks ChatGPT or Perplexity a question your content answers, blocking these bots removes you from consideration entirely, the same way blocking Googlebot removes you from Google Search.

    Blocking on-demand bots (ChatGPT-User, Claude-User, Perplexity-User) stops individual users from getting your page fetched live when they paste your URL or ask a question that leads there – a smaller, harder-to-measure slice of traffic, and one that’s already partly unenforceable through robots.txt alone for two of the three vendors.

    Why this site doesn’t block AI crawlers

    As of this writing, this site’s own robots.txt has no AI-bot rules at all – you can check it directly at organicos.shivaatripathi.com/robots.txt. That’s a deliberate choice, not an oversight. The angle this site runs on is visibility in AI-driven search and chat answers, covered in more detail in how to get cited by ChatGPT and Perplexity; blocking search and answer bots would directly undercut that goal, and blocking training bots would trade an unmeasurable future benefit for a real, current cost in reduced reach. If your site depends on subscription content, proprietary data, or a business model where AI training or AI-answer citation is a genuine liability rather than a channel, that calculation flips, and blocking some or all of these bots is a reasonable, defensible choice – just decide per bot class instead of copying one blanket rule.

    Whatever you decide, the mechanical checks stay the same as any other on-page change: confirm your robots.txt syntax is valid, verify the rules live on the actual served file rather than a cached copy, and if you add firewall rules, test that the blocked user-agent is actually refused rather than just logged. The broader on-page hygiene checks this site runs before any change ships are covered in the WordPress SEO checklist; if you’re also weighing an llms.txt file alongside robots.txt, that’s a related but separate decision – llms.txt is a proposed convention for pointing AI tools to clean content, not an access-control mechanism.

    Frequently asked questions

    Does blocking GPTBot in robots.txt stop ChatGPT from showing my page?

    No. GPTBot only crawls for OpenAI’s model training data. ChatGPT’s live search and answer results come from OAI-SearchBot and, for user-triggered fetches, ChatGPT-User – both separate user-agents you’d need to block individually to affect what ChatGPT can show or cite.

    Will a robots.txt rule actually stop every AI bot from fetching my page?

    No, not fully. Most AI crawlers documented by their vendors do respect robots.txt, but OpenAI’s own documentation states ChatGPT-User does not, and Perplexity’s documentation says its user-triggered fetcher generally ignores robots.txt rules too. Stopping those specific fetches requires blocking the user-agent at the firewall or CDN level, not just in robots.txt.

    Does blocking AI crawlers hurt my Google rankings?

    Blocking AI-specific user-agents like GPTBot, ClaudeBot, or Google-Extended does not touch Googlebot, which is a separate crawler for Google Search. Google’s own documentation on Google-Extended states it does not impact a site’s inclusion or ranking in Google Search. The cost of blocking these bots is reduced visibility in AI training data or AI-assistant answers, not a Google Search penalty.


    About the author: Shivaa Tripathi leads digital and performance marketing at Exotel and writes about demand gen, AI search, and the systems behind them at shivaatripathi.com. He built organic-os, the open-source AI SEO agent this site documents. LinkedIn · GitHub

    Drafted with organic-os and human-reviewed before publishing — every change on this site is approved by a person and logged publicly on the live proof page. Published 2026-08-13 · Updated 2026-08-13.

  • How to Make AI Content Rank: The Quality Gates That Matter

    How to Make AI Content Rank: The Quality Gates That Matter

    AI-drafted content ranks or doesn’t on the same terms as any other content: does it help the reader, and does it show real signals of being trustworthy. Google frames this around disclosure and purpose, not authorship – whether automation is self-evident to visitors, and whether it exists to help them or to manipulate rankings. This site runs five checkable gates between an AI draft and a published post: a research pass that drops any claim it can’t verify against a live source, a QA pass that traces every remaining claim back to that source, an editor pass that checks voice and length limits, an on-page hygiene pass covering meta fields and internal links, and a render check on the live page itself, not just the API response that created it. None of this promises a ranking. It is the checklist that decides whether a draft is allowed to publish at all.

    Most advice about AI content quality is a list of adjectives: be helpful, be original, add value. True, and not actionable. What follows is the literal gate system this site runs on every post before it goes live, including the parts that are still unproven.

    Gate one: the evidence contract

    Every draft starts with a research pack: a table of claims and the exact source each traces to. The rule is unforgiving: if a claim can’t be traced to a source fetched or queried live during that pass, it doesn’t go in the draft. Not “probably true” – traced, or dropped.

    In practice this means real claims get cut from real drafts. A study surfaces only through search-result summaries and its page never loads on direct fetch – dropped. A number sounds right but the only source is another blog post repeating a stat with no attribution – dropped. A vendor claims an install count with no public methodology – dropped. This article’s own research pack dropped a claim about a fixed day-7/day-28 review cadence, because no such checkpoint exists in this site’s operating history; the real mechanism is the 60-day falsifiability check described below, and the draft says that instead of inventing a tidier process.

    This matters more for AI-drafted content, not less. A model can generate a plausible-sounding statistic in the time it takes to generate a true one, and fluency signals nothing about accuracy. The evidence contract is the mechanical check that catches that before a human has to.

    Gate two: human review, specifically

    “Human in the loop” can mean almost anything. On this site it means a QA log: every claim gets a yes/no match check against its cited source, with a same-day re-fetch spot check on a sample of them. It also means an editor pass separate from the QA pass – QA checks facts, the editor pass checks voice, banned phrases, headline and meta-description length, and whether the piece reads like it has an opinion rather than a summary.

    The reviewer isn’t rubber-stamping AI output. A recorded incident on this site shows what a reviewer actually catches: seven posts in a row once shipped with a visible “In short:” label inside the answer capsule, which leaked into every WordPress auto-generated excerpt on the site. That’s a formatting bug a careless pass misses and a careful one catches – small and boring, and exactly the kind of error that erodes trust in an obviously AI-produced page. The fix became a standing rule: article bodies contain only reader-facing prose, no label text, and every post gets a manually written excerpt instead of an autogenerated one.

    Gate three: on-page hygiene

    Before anything publishes, four mechanical checks run:

    Title and meta description length. Both have to fit within standard limits or they get cut in search results.

    An extractable answer. The opening section has to work as a standalone answer to the target question – not a teaser, but a paragraph that could be quoted on its own and still be correct and complete. That’s what the capsule at the top of this article is doing right now.

    Structured data that matches the visible page. When a post includes an FAQ, the FAQPage schema has to match the visible FAQ text word for word. Schema that promises one thing while the page says another erodes trust with readers and crawlers alike.

    Internal links that actually resolve. Every internal link gets checked live, right before publish, not assumed from memory. A 404’d link is small and completely avoidable, and it still shows up in real pipelines when this check gets skipped.

    A fifth check isn’t strictly “on-page” but belongs here: rendering. One post on this site once had backslash-escaped Gutenberg block comments from a shell-escaping bug, so the live page showed literal <!-- wp:paragraph --> text to readers even though the API response that created it looked clean. An API-level check passed; the actual page was broken. The rule since: publish verification has to fetch the rendered HTML, not just the create-call response, and check it for literal block-comment text and stray escape characters before anything counts as done.

    What this doesn’t guarantee

    None of these five gates promise a ranking. This site’s own numbers say so plainly: over the trailing four weeks, this domain logged 1 click and 136 impressions across all queries in Search Console, with most query positions sitting in the 20s through 90s rather than page one. The gates are a quality floor, not a ranking algorithm. Google’s spam policy is explicit that using automation “for the primary purpose of manipulating search rankings” is a violation regardless of how careful the production process looks from the outside – the gates exist to make the output useful, not to game anything downstream of that.

    What the gates do buy is a defensible baseline: every claim traces to a source, every internal link resolves, every meta field is correct, and the rendered page matches what was approved. That’s a lower bar than “will this rank,” and it’s the one this system can enforce mechanically.

    Measuring outcomes and killing what fails

    Every content brief on this site carries its own falsifiability clause, written before the draft exists. This one reads: wrong if, 60 days after publish, there are zero impressions for “make AI content rank” queries. That’s checkable against the same public Search Console data referenced throughout this article, and a past article on this exact topic (does AI content rank) already sets the honest baseline this piece builds on: small, early numbers, reported without smoothing them over.

    On-page fixes elsewhere in this system get a tighter loop than 60 days – changes to meta descriptions or schema get a reverify window measured in hours to a few days, because those check whether a specific edit stuck, not whether an entire article found its audience. Both loops share the same idea: state the failure condition before you start, then actually check it later, on the live site, not from memory.

    That’s the real answer to “how do you make AI content rank.” Not a trick: a checklist that drops what it can’t prove, a reviewer who checks specific things instead of skimming for tone, on-page hygiene verified live, and a stated condition for admitting the piece didn’t work. Whether it actually ranks is out of any checklist’s control, and this site says so instead of promising otherwise.

    For the daily and weekly loop that runs these gates, see automated content operations. For the broader question of what an AI SEO agent is and isn’t, see what an AI SEO agent actually is. The checks above are a subset of a longer list in the WordPress SEO checklist, and the measurement side connects to how to measure AI citations, which covers the harder-to-verify sibling metric of whether AI assistants cite a page at all.

    Frequently asked questions

    Does AI-written content need to be labeled to rank well?

    Google’s own guidance doesn’t require a specific label, but it does ask, as a self-assessment question, whether the use of automation is “self-evident to visitors through disclosures or in other ways” and whether creators are providing background on how it was used. This site discloses it directly in an author-box line on every post rather than leaving it implicit.

    What’s the single most common mistake in AI-drafted content?

    Unverifiable claims that sound specific enough to be true. A model can produce a precise-sounding statistic with no real source behind it just as easily as a correct one, and fluency doesn’t signal accuracy. The fix isn’t a style guideline, it’s a mechanical rule: trace every claim to a source fetched during that research pass, or cut it.

    Does passing all five gates guarantee a page will rank?

    No. This site’s own trailing Search Console numbers – 1 click and 136 impressions across all queries over four weeks – show that passing every quality gate is a floor, not a ranking guarantee. The gates control what can be verified and controlled: sourcing, review, on-page hygiene, and rendering. Whether a page actually ranks depends on factors like domain authority and competition that no editorial checklist can force.


    About the author: Shivaa Tripathi leads digital and performance marketing at Exotel and writes about demand gen, AI search, and the systems behind them at shivaatripathi.com. He built organic-os, the open-source AI SEO agent this site documents. LinkedIn · GitHub

    Drafted with organic-os and human-reviewed before publishing — every change on this site is approved by a person and logged publicly on the live proof page. Published 2026-08-12 · Updated 2026-08-12.

  • Does AI Content Rank? A Live Experiment You Can Audit

    Does AI Content Rank? A Live Experiment You Can Audit

    Google’s own guidance says automated and AI-generated content can rank fine, as long as it is built for people first and the use of automation is disclosed rather than hidden. Using automation “for the primary purpose of manipulating search rankings” is what actually violates its spam policies, not automation itself. This site is a live, disclosed test of that claim: every post here is drafted by an AI agent and human-reviewed before publishing, and the results are public. The honest current answer is: barely, and not yet for the terms that matter most. Trailing 28 days show 105 impressions and 0 clicks in Google Search, and zero total impressions for any query containing “ai content” over the past three months. That is the real baseline the rest of this article is measured against.

    Most posts about AI content and Google either cite a study without a link or make a confident claim without showing their own numbers. This one does neither. Everything below is either a direct quote from Google’s own documentation, a study I could independently fetch and verify, or this site’s own Search Console and Analytics data, checked live on the date of writing.

    How this experiment is set up

    This site runs on organic-os, an open-source agent that researches, drafts, and proposes posts. Every piece still goes through a human approval step before it publishes, and that disclosure line – “Drafted with organic-os and human-reviewed before publishing” – sits at the bottom of every post, linked to a live proof page. That proof page shows the site’s actual Google Search Console and Google Analytics numbers, refreshed on a rolling basis, along with the GitHub repository’s stars, forks, and release history. Nothing here is a backtested case study written after the fact. The numbers are pulled live, and this article links to the same dashboard a reader can check themselves.

    That matters for a piece like this, because “does AI content rank” is usually answered with either marketing copy or fear, and rarely with a site that shows its own results, good or bad.

    The current results, and they are small

    Over the trailing 28 days, this site’s Search Console data shows 105 impressions and 0 clicks. Google Analytics shows 107 sessions, 40 users, and 220 page views in the same window, and the large majority of that traffic – 100 sessions – comes in direct, not organic search. Only 5 sessions in that period came from organic search.

    Pulling the full query-level data for the last three months tells a more specific story. Not one query containing the phrase “ai content” has generated a single impression for this site in that period – the number is exactly zero. The queries that do generate impressions are narrower and more literal: “seo agent” (12 impressions), “wp seo automation” (8), “seo ai agent” (4), “wordpress automated seo” (4), and similar terms, each in the single or low double digits. Every one of those queries has 0 clicks. Looking at the day-by-day series for the past month, nearly every day shows 0 clicks; two days in the period show exactly 1 click each, and impressions per day mostly stay under 20.

    None of that is evidence that AI-produced content cannot rank. It is evidence that a small, disclosed site with a handful of months of history has not yet accumulated the authority or link signals that older, larger sites have, which is true of any new site regardless of how its content is produced. I am labeling this claim at the strength the data actually supports: this site’s current impressions and clicks are close to zero, full stop, and I do not yet have enough of a track record to say whether that changes.

    What Google actually says about AI content

    Google’s own documentation on creating helpful content addresses automation directly, and the framing is about purpose and disclosure, not the production method itself. One of the self-assessment questions Google recommends asking is: “Is the use of automation, including AI-generation, self-evident to visitors through disclosures or in other ways?” Separately, Google states plainly: “If you use automation, including AI-generation, to produce content for the primary purpose of manipulating search rankings, that’s a violation of our spam policies.”

    Read together, those two sentences describe a specific line, not a blanket rule against AI content. Disclosed, people-first automation is treated differently from undisclosed automation built to game rankings. The author-box disclosure at the bottom of every post on this site exists specifically to sit on the right side of that line, not as a formality.

    What independent studies show

    An ongoing tracking study from Originality.ai gives a useful outside data point on how much AI content is already present in Google’s results, independent of any one site’s own numbers. As of September 2025, the study finds that 17.31% of the top 20 search results are AI-generated, up sharply from a pre-ChatGPT baseline of 2.27% in February 2019, with the tracked series peaking at 19.56% in July 2025. Whatever the exact mechanism, AI-produced content is clearly not locked out of top rankings at a meaningful scale – close to one in five top-20 results, by that study’s methodology, already qualifies.

    Search Engine Land ran its own direct experiment, publishing AI-generated content for 16 months and tracking what happened. Its own summary of the result: “Google indexed most pages quickly, but without authority, unique insight, or trust signals, rankings collapsed within months.” That is consistent with the point above – indexing is not the same as ranking durably, and content that is thin on authority or original insight tends to fall back out of results over time regardless of how it was produced.

    What would prove this wrong

    I would rather state the failure condition up front than move the goalposts later. If, 60 days after this article publishes, this site and this specific article still show zero impressions for “does AI content rank” and closely related queries, that is evidence against the position that disclosed, human-reviewed AI content can compete for its own target terms. I will not quietly drop that number if it stays at zero; the same proof page and this site’s Search Console data will still be there to check.

    For more on how this site decides what to automate versus what a person still has to do by hand, automated content operations: what to hand off, what to keep covers that split directly. The full live dashboard behind the numbers in this article is on the proof page. For the related question of whether structured data actually helps AI systems cite a page, does schema markup help AI citations has that study’s methodology and numbers. And if you want the fuller picture of what organic-os actually is, what an AI SEO agent actually is covers that.

    Frequently asked questions

    Does Google penalize AI-generated content?

    Not for being AI-generated on its own. Google’s own documentation frames the issue around disclosure and purpose: whether the use of automation is self-evident to visitors, and whether it is being used to manipulate rankings rather than to help people. Undisclosed, manipulation-focused automation is what violates Google’s spam policies, not automation itself.

    If AI content can rank, why does this site show 0 clicks?

    Because this is a small, recently launched site without the accumulated authority or link signals that older, larger sites have, which is true of new sites regardless of how the content is produced. Trailing 28-day Search Console data shows 105 impressions and 0 clicks, and zero impressions for any query containing “ai content” over the past three months. That is disclosed here on purpose, not smoothed over.

    What would change this conclusion?

    If, 60 days after this article publishes, it and this site still show zero impressions for “does AI content rank” and closely related queries, that would be evidence against the claim that disclosed, human-reviewed AI content can compete for its own target terms. The same public Search Console data referenced in this article will still be checkable at that point.


    About the author: Shivaa Tripathi leads digital and performance marketing at Exotel and writes about demand gen, AI search, and the systems behind them at shivaatripathi.com. He built organic-os, the open-source AI SEO agent this site documents. LinkedIn · GitHub

    Drafted with organic-os and human-reviewed before publishing — every change on this site is approved by a person and logged publicly on the live proof page. Published 2026-08-11 · Updated 2026-08-11.

  • Claude as an SEO Agent: What It Can Run for You Today

    A Claude SEO agent is Claude wired into a site’s analytics, search console, and CMS so it can read performance data, propose specific changes, and write them to the live site only after a person approves. This site, organicos.shivaatripathi.com, runs on exactly that setup: an open-source Claude Code plugin called organic-os that pulls GA4 and Search Console data daily, drafts fixes and articles, and applies only what a named person has approved through a recorded decision. The gate sits in code, not policy – a change with no logged approval cannot be applied. What follows is what that looks like day to day, including where it has failed.

    “Claude SEO agent” gets used loosely, for everything from a single prompt typed into Claude.ai to a fully wired plugin that edits a CMS on its own schedule. The distinction that actually matters, if you are evaluating one, is not how good the drafts read. It is whether a person sits between “draft ready” and “change live,” and whether that gap is enforced in code or is just something the tool’s documentation asks you to remember to do.

    The loop, and where a person has to say yes

    Every AI SEO agent worth the name runs the same six-step loop: observe, decide, approve, apply, verify, learn. Observe means pulling signals from sources you already own – Google Analytics, Search Console, AI-citation checks, competitor content – through APIs, not scraping. Decide turns those signals into concrete work items with the reasoning stated plainly, so a person can judge whether the work is worth doing. Approve is a person accepting or rejecting each proposed change; this is the step that makes the rest safe. Apply writes the approved change to the site, typically through the CMS API. Verify means the agent re-reads the live page to confirm the change actually took effect, not just that the API call returned success. Learn closes the loop weeks later, when the outcome gets measured against the specific change and written into a playbook the next run can use.

    On this site, that approval step is not a convention – it is a constraint the code enforces. Mutation is impossible without a recorded approval, and a hand-edited status without a matching approval entry still fails. Concretely, this site’s plugin is built from three modules: one observes and decides, pulling GA4 and GSC data and proposing a fix or a content brief; one audits pages and applies approved fixes with rollback; one turns approved briefs into drafts like this post. Nothing moves from one module to the next without a decision logged with who approved it, when, and through which channel.

    What it does well vs. where humans stay

    The parts that are genuinely automated here are the reading and drafting: pulling GA4 and Search Console numbers on a schedule, turning a gap in keyword coverage into a written content brief, drafting the resulting article in the site’s voice, checking every claim in that draft against a named source before it ships, and re-reading the live page after publish to confirm the change actually rendered instead of trusting the API response. Those steps run without someone typing each prompt by hand.

    Humans stay for three things this setup does not try to automate away. First, every content brief and every on-page fix gets approved or rejected by a named person before anything is written live – the outline above is what gets proposed, not what gets shipped automatically. Second, WordPress’s own permission model draws a line the agent cannot cross on its own: the app password this plugin runs under has an editor role, which can publish posts but is denied when it tries to purge the Rank Math sitemap cache – that action needs the site admin’s separate credentials, by design. Third, a person still reads the rendered output before trusting it, because this agent’s own history includes a case where that check caught something the API-level check missed (below).

    Setup paths: plugin vs. DIY prompting

    There are two real ways to run Claude against SEO work today. The first is a purpose-built plugin wired to your analytics, search console, and CMS, with an approval gate between draft and live – what this site runs. Several shipping tools take this general shape. SE Ranking publishes seranking/seo-skills, a set of 26 Claude Agent Skills that turn its own API data into finished deliverables like content briefs and drift-monitoring reports. ccforseo.com ships 8 free Claude Code skills that run an audit and save it to a markdown report for a person to act on by hand. ivankuznetsov/claude-seo moves an article through a research, draft, rewrite, published pipeline on your local file system. All three are real, useful tools, and all three stop at the deliverable – none of them, as documented, writes an approved change straight to a live CMS with a code-enforced gate in between.

    The second path is DIY prompting: opening Claude and asking it to draft a brief, an article, or a fix, one session at a time, with no persistent playbook and no approval record. This costs nothing beyond your normal Claude usage and works fine for a single task. It resets every session, though – the model has no memory of what worked last month unless you rebuild that context by hand, and there is no code-level gate stopping a bad draft from reaching your CMS if you skip the review step yourself.

    Honest costs and failure modes, from this site’s own log

    The proof page this plugin publishes about itself updates every four hours from GA4, Search Console, and GitHub, and it is the most honest answer to “does this actually work” available right now. As of this piece’s most recent refresh, the repository sits at 4 stars, 5 forks, and 6 contributors, on release v0.6.1. Over the trailing 28 days the site logged 106 sessions and 219 page views, split 99 direct, 5 organic search, 2 unassigned. Search Console shows 104 impressions and zero clicks over the same window, across queries that include “seo agent” (12 impressions), “seo ai agent” (4), and “what are ai seo agents” (2) – none of them converted to a click yet. That is the real state of this SEO-content operation a few weeks into visibility, not a projection, and it is the same data this brief’s own falsifiability clause will be judged against: it is wrong if Claude-SEO-agent queries still show zero impressions 60 days after this goes live.

    The failure modes are just as visible in the log. One post on this site once shipped with backslash-escaped Gutenberg block comments that rendered as literal garbage text on the live page – the API-level content check had passed, but the live HTML had not, because the write path went through a shell-interpolation step that mangled special characters. The fix was not a smarter model; it was adding a mandatory step that fetches the rendered live page after every publish and fails the run if block-comment syntax shows up outside an actual HTML comment. This post went through that same check before you read it. A second known limit: the queue-rebuild routine has crashed outright when a stray draft scratch file sat in the briefs folder – a small bug, but the kind that can stop a day’s pipeline if nobody notices.

    Frequently asked questions

    Does a Claude SEO agent publish changes without a person approving them?

    Not if it is built correctly. A well-built agent makes every write – a title-tag edit, a published article – conditional on a recorded approval: who decided, when, through which channel. On this site that gate is enforced in code, not left as a step someone might skip, so a change with no logged approval cannot go live.

    What can a Claude SEO agent actually do today versus what a person still has to do?

    It can reliably observe analytics and Search Console data, turn a coverage gap into a drafted brief or article, check claims against sources, and verify a change rendered correctly on the live page. A person still approves each change before it ships, and still holds the higher-permission credentials some actions require, like purging a sitemap cache.

    Is a dedicated plugin better than just prompting Claude directly for SEO work?

    A plugin wired to your CMS and analytics with an approval gate can act on a schedule and remember what worked across runs. Prompting Claude directly, session by session, works too, but it resets each time, since there is no persistent playbook and no code-level gate stopping a change from reaching your CMS unless you build that review step yourself.

    For the fuller version of the six-step loop this piece compresses, see what an AI SEO agent actually is. For a closer look at how the shipping Claude-plugin category compares on the approval-gate question, see this site’s Claude plugin for SEO comparison. The architecture behind this specific setup is documented in organic-os v0.1: the loop is the product, and a closer look at what gets automated day to day is in automated content operations.


    About the author: Shivaa Tripathi leads digital and performance marketing at Exotel and writes about demand gen, AI search, and the systems behind them at shivaatripathi.com. He built organic-os, the open-source AI SEO agent this site documents. LinkedIn · GitHub

    Drafted with organic-os and human-reviewed before publishing — every change on this site is approved by a person and logged publicly on the live proof page. Published 2026-08-10.

  • How to Measure AI Citations: A Practical Tracking Method

    Measuring AI citations means running the same question through ChatGPT, Perplexity, and Google’s AI Overviews on a schedule and logging whether each one names your site. There is no citation-tracking API from any of the three, so this stays a manual, sampled check: build a panel of 20-30 real buyer questions, ask each assistant every question, record who gets cited, and re-run the panel every one to two weeks to see the pattern move. This is a different measurement from AI-referral traffic in GA4, which only counts clicks – a citation with no click never shows up there at all.

    “Are we getting cited by AI?” does not have a dashboard answer yet. OpenAI, Perplexity, and Google do not publish a citation-tracking API for any of their assistants, so the only direct signal is asking the assistant a question and reading what it says back. That is manual and does not scale past a sample – but it is the same signal every AI-SEO practitioner is working from right now, and it is worth doing on a schedule instead of once.

    The query-panel method in four steps

    The method is the capsule above, expanded. First, build a fixed panel of questions your actual buyers ask – not keyword-tool guesses. Second, run the full panel against each assistant you care about, same questions, same order, every time. Third, log the result for each question and engine: cited, not cited, and if cited, whether it was your page, a competitor’s, or a source you did not expect. Fourth, compare the log across runs to see whether citations are moving, and treat referral-traffic tracking in GA4 as a separate, complementary check rather than a substitute.

    Building a 20-30 question panel from real buyer questions

    Pull the panel from the same places a good keyword list comes from: sales call transcripts, support tickets, competitor comparison pages, and the questions your own content already tries to answer. A range of 20 to 30 questions is a reasonable starting size for most single-product or single-category sites – enough to catch a pattern across a topic, small enough to run by hand in under an hour. Write the questions the way a buyer would type them, not the way a keyword tool would phrase them; assistants are answering a question, not matching a query string. Keep the panel fixed once you set it, so later runs are comparable to earlier ones, and only add or retire questions deliberately, noting when you did it.

    Logging and scoring citations across ChatGPT, Perplexity, and AI Overviews

    Ask each panel question directly in ChatGPT and Perplexity, since both are conversational products built for exactly this kind of query. For Google, search the same question and check whether an AI Overview appears and who it cites – Google’s own documentation confirms AI Overviews and AI Mode pull from the same crawling and indexing pipeline as regular Search, and a page has to already be “indexed and eligible to be shown in Google Search with a snippet” before it can appear as a supporting link in either feature. There is no separate AI-only crawler to check the way there is for ChatGPT’s OAI-SearchBot or Perplexity’s PerplexityBot.

    A simple log is enough: one row per question per engine per run, with columns for the date, whether your site was cited, which competitor (if any) was cited instead, and a short note on the answer’s framing. Score it however is useful to you – a raw citation rate per engine, a trend line over successive runs, or just a running list of which competitors keep showing up in your place. The scoring matters less than running the same panel consistently enough to compare one period to the next.

    Separating citations from referral traffic – they are different metrics

    A citation and a referral click are not the same event, and conflating them will make the picture look worse than it is – or better. GA4 added a native “AI Assistant” default channel group that automatically classifies referral sessions from ChatGPT, Gemini, and Claude, and I have written up how to check it and build a manual fallback separately. But that channel only counts a session created when someone clicks through from an assistant’s answer with an intact referrer header. An assistant can read your page, quote it, and name you as the source without the reader ever clicking – and that interaction creates no GA4 session at all, on any channel. The query-panel method above is the only way to see that side of it; GA4 referral tracking answers a different, narrower question about traffic that actually landed.

    This site’s own numbers make the distinction concrete rather than theoretical. As of this piece’s most recent check, this property’s GA4 AI Assistant channel shows zero sessions, and the query panel behind this check (kept in this site’s own tracking file) has zero questions populated – the mechanism exists and the daily routine is built to run it, but it has not been seeded with real questions yet on this property. That is not a claim this site is invisible to AI assistants; it is what the two measurements actually show today, stated plainly rather than implied otherwise.

    Limits, noise, and how often to re-run the panel

    Treat every result as a sample, not a census. Assistants can answer the same question differently across runs even with no change on your end – model updates, retrieval randomness, and the assistant’s own session context all introduce noise a single check cannot separate from a real shift. A panel of 20-30 questions checked once tells you almost nothing about whether the underlying pattern is moving; the value comes from repeating the exact same panel and watching the trend across several runs. Re-running every one to two weeks is frequent enough to catch a real trend without turning an inherently manual process into a full-time job, though the right cadence depends on how much time you have and how quickly your content changes.

    The other limit worth naming: this method cannot rule out a citation you did not think to ask about. A 20-30 question panel is a sample of your topic, not the whole thing, so a clean row of “not cited” answers only means the questions you tested were not cited – not that no question would be. Widening the panel over time, and retiring questions that stop being representative, keeps the sample honest.

    Frequently asked questions

    Is there a tool that tracks AI citations automatically?

    Not from the assistants themselves. OpenAI, Perplexity, and Google do not publish a citation-tracking API for ChatGPT, Perplexity, or AI Overviews, so the direct signal – asking an assistant a question and reading the answer – stays manual. Third-party AI-visibility tools exist that automate parts of this same query-panel idea, but they are running the same manual check at scale on your behalf, not reading a citation feed the platforms provide.

    Does a citation always show up as GA4 referral traffic?

    No. GA4’s AI Assistant channel only counts sessions created when someone clicks through from an assistant’s answer with an intact referrer header. If an assistant cites or quotes your page but the reader never clicks, or clicks from an app that strips the referrer, that interaction creates no session in GA4 on any channel – not AI Assistant, not Direct, nowhere. Citation tracking and referral-traffic tracking answer different questions and need different methods.

    How many questions should be in an AI-citation tracking panel?

    20 to 30 real buyer questions is a reasonable starting size for most single-product or single-category sites – enough to reveal a pattern across a topic without making a manual check unmanageable. Keep the panel fixed between runs so results are comparable over time, and widen it deliberately as your content or product coverage grows.

    For the tactics that actually move whether an assistant cites you in the first place – crawler access, extractable structure, entity clarity, and why schema markup and llms.txt do not reliably help – see how to get cited by ChatGPT and Perplexity. For the GA4 setup behind the referral-traffic side of this check, see how to track AI referral traffic in GA4. For the broader terminology this piece sits inside, GEO vs SEO vs AEO and what an AI SEO agent actually is both cover adjacent ground.


    About the author: Shivaa Tripathi leads digital and performance marketing at Exotel and writes about demand gen, AI search, and the systems behind them at shivaatripathi.com. He built organic-os, the open-source AI SEO agent this site documents. LinkedIn · GitHub

    Drafted with organic-os and human-reviewed before publishing — every change on this site is approved by a person and logged publicly on the live proof page. Published 2026-08-09.

  • llms.txt for WordPress: 5-Minute Setup (Does It Matter?)

    Adding llms.txt to WordPress takes about five minutes: create a plain text file named llms.txt, put an H1 with your site name, a one-line summary, and a few links to your most important pages, then upload it to your site’s root so it loads at yoursite.com/llms.txt. A plugin can automate that, or you can do it by hand with no plugin at all. The harder question is whether it does anything. Neither OpenAI’s nor Google’s own documentation lists llms.txt as something their systems read, and an independent scan of 137,000 domains found 97% of published llms.txt files got zero requests. This piece covers the setup honestly, then the evidence, using this site’s own llms.txt as the working example.

    llms.txt showed up in a lot of “AI SEO checklist” content over the past year, usually presented as a settled best practice. It is not settled. It is a proposal from one developer, adopted by some sites, and not confirmed as read by any major AI platform. Here is what the file actually is, how to add it to WordPress with or without a plugin, and what the traffic data says about whether it is worth your five minutes.

    What llms.txt actually is

    llms.txt is a plain markdown file proposed by developer Jeremy Howard in September 2024, meant to sit at the root of a website the same way robots.txt or sitemap.xml does. The idea: give AI systems a short, structured index of a site’s most important content, since large language models have limited context windows and cannot easily process a full page the way a search crawler can.

    The spec itself is short. Per the official documentation, a valid file needs exactly one required part – “an H1 with the name of the project or site” – plus a few optional ones: a blockquote with a short summary, any free-form paragraphs, and then H2-headed sections that function as link lists, each entry a markdown link with an optional note after it. The spec also proposes a more involved second layer: clean markdown mirrors of individual pages, served at the same URL with .md appended, so an AI system fetching a specific page gets a lightweight version instead of full HTML. Most sites that adopt llms.txt stop at the root file and skip the per-page mirrors, which is a meaningfully bigger project.

    Nothing about this is a ratified web standard. There is no governing body, no required adoption, and no guarantee any given crawler even requests the file, let alone parses it.

    Adding it in WordPress: plugin vs manual

    Both routes work. Neither requires much.

    The manual route: write a plain text file following the structure above and upload it to your WordPress site’s root directory via SFTP or your host’s file manager, so it resolves at yoursite.com/llms.txt. That is the entire task. No plugin, no database entry, no build step. The only real constraint is that your hosting setup needs to let you place a static file at the root, which most standard WordPress hosts do but some managed or sandboxed setups restrict.

    The plugin route trades a few minutes of manual work for automatic upkeep. Several free plugins are listed on the official WordPress.org plugin directory that generate and serve an llms.txt file, with some pulling your site’s title, tagline, and published post list into the file automatically and updating it as content changes, and others adding rewrite rules so the file is served without ever touching the filesystem directly. If your site changes often and you want the file to track that without manual edits, a plugin removes the maintenance step. If your site is small and mostly static, hand-editing a text file once is arguably less overhead than adding another plugin.

    Either way, keep the file honest. List pages that actually explain what your site or product does, not a dump of every URL on the domain – the spec’s own guidance treats it as a curated index, not a sitemap duplicate.

    The evidence problem: who actually reads it

    This is the part most llms.txt guides skip. Adding the file is trivial. Whether anything reads it is a separate, weaker claim.

    Start with what the platforms themselves say. OpenAI’s developer documentation for its crawlers – GPTBot, OAI-SearchBot, ChatGPT-User – describes each one’s purpose in detail and does not mention llms.txt as an input to any of them. The one place llms.txt appears on OpenAI’s own developer docs is a navigation link to their own documentation index, not a statement about how their crawlers treat other sites’ files.

    Google’s position is more direct. John Mueller of Google’s Search team was asked on Bluesky whether llms.txt files appearing on some Google properties amounted to an endorsement of the format. His answer: “I’m tempted to say something snarky since this has come up so often, but to be direct, no.” Reporting on that exchange notes Google’s Search team has separately said no one uses llms.txt files, that Google will not use them, and that sites publishing one should consider adding a noindex header to it.

    Then there is the traffic data. Ahrefs analyzed crawler logs across 137,000 domains and found that 97% of published llms.txt files received zero requests in the measurement window. Of roughly 38,000 domains with a valid file, only about 1,100 saw any traffic to it at all – and among the requests that did happen, SEO audit tools and unidentified bots accounted for more volume than anything resembling an AI assistant. Bots tied to ChatGPT and Perplexity made up only about 1% of the requests among files that got traffic at all.

    Put together: the format exists, some sites publish it, and the systems it was built for have not confirmed they read it.

    This site’s own llms.txt, as the example

    This site publishes its own llms.txt, and it is a reasonable template to copy. It opens with an H1 naming the project, a one-paragraph summary blockquote, and then H2 sections – “Core pages,” “Source,” “Articles” – each a short list of markdown links with brief notes. The summary paragraph states plainly that this site “does not claim llms.txt improves AI visibility; the evidence for that is weak.” That line is there because publishing the file and overselling what it does are two different decisions, and only one of them is defensible.

    Verdict

    Adding llms.txt to a WordPress site costs almost nothing – five minutes by hand, or a free plugin if you want it to stay current automatically. On that basis alone it is a reasonable thing to do, the same way adding a sitemap.xml is a reasonable thing to do even without proof any specific crawler fetches it that day. What is not reasonable is expecting it to move AI citations or traffic. No major platform has confirmed it reads the file, and the best independent data available shows the overwhelming majority of published llms.txt files sit unread. Do the setup if you want to, keep it accurate if you do, and do not count it as an AI-SEO strategy on its own.

    Frequently asked questions

    Do I need a plugin to add llms.txt to WordPress?

    No. llms.txt is a plain text file that only needs to exist at your site’s root, so uploading one manually via SFTP or your host’s file manager works the same as any other method. A plugin only helps if you want the file to update automatically as your content changes, which matters more for large or frequently updated sites than small ones.

    Does ChatGPT or Google actually read llms.txt files?

    There is no confirmation that either does. OpenAI’s crawler documentation does not list llms.txt as an input for GPTBot, OAI-SearchBot, or ChatGPT-User. Google’s John Mueller directly said Google does not endorse the format, and separate reporting says Google’s Search team has stated no one uses these files. Independent traffic analysis across 137,000 domains found 97% of published llms.txt files got zero requests.

    Is adding llms.txt to a WordPress site worth doing?

    It costs very little to add, so it is a low-risk addition if you want one. But current evidence does not support treating it as something that will increase AI citations or visibility, since no major AI platform has confirmed reading it and most published files receive no traffic at all. Treat it as optional housekeeping, not a growth tactic.

    For the fuller technical picture of what AI crawlers document about themselves and how that compares to llms.txt, how to get cited by ChatGPT and Perplexity covers OpenAI’s and Perplexity’s own crawler documentation in detail. The general WordPress setup this file fits into is covered in the WordPress SEO checklist. For where llms.txt sits inside the broader terminology, GEO vs SEO vs AEO and does schema markup help AI citations cover adjacent tactics with the same evidence-first approach.


    About the author: Shivaa Tripathi leads digital and performance marketing at Exotel and writes about demand gen, AI search, and the systems behind them at shivaatripathi.com. He built organic-os, the open-source AI SEO agent this site documents. LinkedIn · GitHub

    Drafted with organic-os and human-reviewed before publishing — every change on this site is approved by a person and logged publicly on the live proof page. Published 2026-08-09 · Updated 2026-08-09.

  • How to Get Cited by ChatGPT and Perplexity

    Getting cited by ChatGPT and Perplexity comes down to three levers with real evidence behind them: let their search crawlers reach your pages, write passages that can be lifted out and quoted on their own, and make it unambiguous who you are and what you are describing. Schema markup and llms.txt files are not on that list – the best controlled data available says neither reliably moves citations. This piece documents how each assistant retrieves sources, what the evidence does and does not support, and how I check my own site’s AI-referral traffic, including where it stands right now.

    The three citation leversCrawler accessGPTBot, ClaudeBot, Perplexity-Bot can fetch your pagesExtractable structuresections that answer onequestion, quotable verbatimEntity clarityone consistent definitionof what you are, site-wideEligible to be cited in AI answersno lever guarantees a citation – they make you selectable
    The three levers with real evidence behind them. Everything else is speculation.

    Most “how to get cited by AI” advice is a repackaged SEO checklist with new acronyms stapled on. Some of it holds up. Some of it – schema markup for citations, llms.txt as a control file – does not survive contact with the data. Here is what OpenAI and Perplexity document about how their assistants find and cite sources, what controlled studies say about the tactics that do not work, and a routine for checking where your own site stands.

    How ChatGPT and Perplexity actually retrieve sources

    Both companies publish this. You do not need to guess.

    OpenAI runs three separate crawlers and treats them as independently controllable. Per its own crawler documentation, OAI-SearchBot is “used to surface websites in search results in ChatGPT’s search features. Sites that are opted out of OAI-SearchBot will not be shown in ChatGPT search answers” – the crawler that matters for citations. ChatGPT-User fires only when someone asks ChatGPT to look at a specific page, not as a background indexing pass. GPTBot exists solely “to crawl content that may be used in training,” unrelated to citations. OpenAI states plainly that these are independent: “a webmaster can allow OAI-SearchBot in order to appear in search results while disallowing GPTBot.” So blocking “the AI bots” as one group in robots.txt is a mistake for anyone who wants ChatGPT citations – blocking OAI-SearchBot removes you from ChatGPT search answers; blocking GPTBot only opts you out of training data.

    Perplexity draws the same line, with one wrinkle. Its developer docs describe PerplexityBot as “designed to surface and link websites in search results on Perplexity. It is not used to crawl content for AI foundation models” – the citation-relevant crawler. Perplexity-User fires when “users ask Perplexity a question” and it “might visit a web page to help provide an accurate answer.” The wrinkle: PerplexityBot “respects robots.txt rules,” but Perplexity-User “generally ignores robots.txt rules” because a real person’s request triggered it. Block PerplexityBot entirely and you opt out of citations, not just training.

    The three levers, ranked by evidence strength

    Crawler access is the strongest-evidence lever: it is not inferred, it is stated directly in the documentation quoted above. Check robots.txt for OAI-SearchBot and PerplexityBot specifically, not a blanket “AI bot” rule.

    Extractable structure is moderate evidence: it follows from how these assistants describe fetching and quoting passages, not a controlled experiment isolating structure. A direct-answer paragraph near the top, a real question answered in a heading, and prose that stands alone as an answer are easier to lift cleanly. This is the same logic behind AEO generally – as I have written elsewhere on this site, answer engine optimization is “the practice of making your content a source that AI assistants such as ChatGPT, Perplexity, and Google’s AI Overviews cite when they answer your buyers’ questions.”

    Entity clarity is the weakest evidence of the three: anecdotal, not a controlled result. A retrieval system still has to resolve who or what a page is about before citing it as an authority, and a page that never states its own subject, author, or organization gives it less to work with. I could not find a controlled study isolating entity clarity the way the schema study below isolates markup, so treat this as a plausible mechanism, not a proven lever.

    What does not work: the schema and llms.txt hype

    Two tactics get pitched constantly as AI-citation levers, and the best available evidence does not support either.

    Schema markup is the first. I already covered the controlled test on this site in detail: Ahrefs ran a difference-in-differences comparison, tracking “1,885 pages that added JSON-LD structured data” against “4,000 matched control pages that did not,” and found “statistically insignificant moves for ChatGPT and Google AI Mode, and a significant decline for Google AI Overviews.” Schema still earns Google rich results and is worth keeping for that. It is not, on this evidence, a lever for AI citations.

    llms.txt is the second, and the evidence against it is more direct. Ahrefs analyzed crawler logs from 137,000 domains and, per Search Engine Journal’s coverage, found “97% of llms.txt files got zero requests” during the study period – and of the small remainder that got any traffic, AI retrieval bots tied to ChatGPT and Perplexity accounted for only about 1% of those requests. The assistants documented above retrieve pages directly, the same way a search crawler does. Neither company’s crawler documentation mentions llms.txt as an input. Publishing one is not harmful, but current data gives no reason to expect it to move citations.

    A weekly citation-check routine you can copy

    I run this same check on this site on a schedule, using nothing most sites do not already have. First, in GA4, check whether the native “AI Assistant” default channel group is populated – Google added it to recognize referral sessions from ChatGPT, Gemini, and other assistants automatically, and I have written up the full setup and fallback method separately if your property is not showing it yet. Second, spot-check robots.txt weekly for OAI-SearchBot and PerplexityBot specifically, since a CDN or security-plugin update can silently add either to a blocklist. Third, ask each assistant a question your content should answer and note whether it cites you, a competitor, or nothing – manual and not scalable, but the only direct signal available, since neither company publishes a citation-tracking API.

    This site’s own citation status, stated plainly

    Here is where this site actually stands, checked the same way I am recommending you check your own: pulling the GA4 “AI Assistant” default channel group for the trailing 30 days. Over that window, this property recorded 95 Direct sessions, 5 Organic Search sessions, and 2 Unassigned sessions – zero sessions attributed to the AI Assistant channel. That is not a claim this site never gets an AI citation; it is what the measurement shows right now, on a small, young site. I would rather publish that honestly than imply a result I cannot back up. If it changes, the routine above is how I will catch it.

    What is documented here versus inferred

    The crawler-behavior quotes above come directly from OpenAI’s and Perplexity’s own developer documentation, fetched and verified live on the date of writing, not third-party interpretation. The schema-markup finding and the llms.txt traffic figures are both independently run Ahrefs studies. Entity clarity, as noted above, is the one claim here that is plausible reasoning rather than a controlled result, labeled that way rather than dressed up as proven. There is no search-volume figure in this piece for “how to get cited by ChatGPT” – Keyword Planner access is not functional in my environment, and I would rather say so than guess.

    Frequently asked questions

    Does blocking AI bots in robots.txt stop training but not citations?

    It depends which bot you block. OpenAI’s own documentation confirms GPTBot, OAI-SearchBot, and ChatGPT-User are controlled independently in robots.txt: disallowing GPTBot only opts a site out of AI training data, while disallowing OAI-SearchBot removes it from ChatGPT search answers entirely. Perplexity works the same way, with PerplexityBot as the citation-relevant crawler. A blanket rule that blocks every bot with “AI” or “GPT” in its name will usually remove you from citations, not just training.

    Does adding an llms.txt file help get my site cited by ChatGPT or Perplexity?

    The available evidence says no. Ahrefs’ analysis of crawler logs across 137,000 domains found that 97% of published llms.txt files received zero requests, and AI retrieval bots tied to ChatGPT and Perplexity made up only about 1% of the requests that did occur. Neither OpenAI’s nor Perplexity’s own crawler documentation lists llms.txt as something their citation-relevant crawlers read.

    Does schema markup increase how often AI engines cite a page?

    A controlled Ahrefs study comparing 1,885 pages that added JSON-LD schema against 4,000 matched pages that did not found statistically insignificant movement for ChatGPT and Google AI Mode citations, and a statistically significant decline for Google AI Overviews. Schema is still worth adding for Google rich results, but current evidence does not support it as an AI-citation lever.

    For the fuller first-party definition of AEO this piece builds on, a practical intro to answer engine optimization for B2B SaaS covers that in depth. The schema-markup study referenced above is broken down fully in does schema markup help AI citations. For the exact GA4 setup behind the citation-check routine in this piece, see how to track AI referral traffic in GA4. If you want the broader terminology this piece sits inside, GEO vs SEO vs AEO and what an AI SEO agent actually is both cover adjacent ground.


    About the author: Shivaa Tripathi leads digital and performance marketing at Exotel and writes about demand gen, AI search, and the systems behind them at shivaatripathi.com. He built organic-os, the open-source AI SEO agent this site documents. LinkedIn · GitHub

    Drafted with organic-os and human-reviewed before publishing — every change on this site is approved by a person and logged publicly on the live proof page. Published 2026-08-08 · Updated 2026-08-08.

  • GEO vs SEO vs AEO: What Actually Differs (and What Does Not)

    SEO, AEO, and GEO all aim at the same underlying goal – getting your content in front of someone with a question – but they aim at different destinations. SEO gets a page ranked so a person can click through and read it. AEO gets a specific answer extracted and cited inside AI Overviews, voice search, or a featured snippet. GEO is the academic term for optimizing visibility inside a generative model’s own response, using a framework built for that purpose rather than traditional ranking signals. Most of the daily work – clear structure, real answers, crawlable pages – overlaps across all three, and the acronyms mostly describe which destination you’re aiming at, not three separate skill sets you need to hire for.

    SEO vs AEO vs GEOSEOAEOGEOSURFACEMETRICFEEDBACKSearch resultspagesAI assistantanswersGenerative enginesbroadlyRankings + clicksCitationsin answersBrand presencein outputsSearch ConsoleCitation checksShare-of-voicepanelsShared foundation (~most of the work): crawlable site, clear entities, extractable answers, evidence
    Three labels, one discipline: the surfaces and metrics differ, most of the underlying work does not.

    The three terms get used almost interchangeably in vendor pitches, which makes them sound like three separate line items to budget for. They mostly aren’t. Here’s what genuinely differs between them, what’s the same work with a new label on it, and what a small B2B site should actually build first.

    Where they genuinely differ

    The clearest way to separate the three is to ask what each one is actually optimizing for, because the targets are different even where the underlying content overlaps.

    SEO, per Google’s own current framing, is “about helping search engines understand your content, and helping users find your site and make a decision about whether they should visit your site through a search engine.” The target is a click: your page has to rank, and then a person has to decide it’s worth visiting.

    AEO drops the click as the goal. HubSpot’s own comparison puts it plainly: “answer engine optimization is different from traditional SEO because AEO prepares content for direct answers in AI Overviews, voice search, and featured snippets, while SEO focuses on ranking full pages in organic search results.” The two “run in parallel,” HubSpot adds, “and they rely on different signals, content structures, and measurement frameworks.” You’re not optimizing a page to be visited – you’re optimizing a passage to be lifted out and quoted.

    GEO is narrower and newer than either term suggests from how it gets used in marketing copy. It comes from a specific 2023 research paper (Aggarwal et al., presented at KDD’24) that describes itself as “the first novel paradigm to aid content creators in improving their content visibility in generative engine responses through a flexible black-box optimization framework for optimizing and defining visibility metrics.” That’s a research framework with its own defined metrics and its own reported result – the paper states GEO “can boost visibility by up to 40% in generative engine responses” – not a settled industry practice with its own toolset yet. When someone says “GEO strategy” in a sales deck, they usually mean something closer to AEO.

    The feedback loops differ too, and this is the part that matters operationally. SEO has mature, free instrumentation: Search Console, rankings, click-through rate. AEO citation tracking is still immature – there’s no equivalent of Search Console for “which AI answers quoted you,” so most sites are working with thinner signal. GEO, as the paper defines it, is a research framework with its own visibility metrics, which isn’t the same as something you can wire into your own analytics stack today.

    Where it’s the same work relabeled

    Here’s the honest part: a lot of what gets marketed as a distinct “AEO tactic” or “GEO tactic” is SEO fundamentals with a new name attached. HubSpot’s own comparison says as much – “while good SEO can lead to some AEO wins, it is not a substitute for explicitly structured answers, schema, and consistent terminology” – which is a two-way admission: SEO work contributes to AEO outcomes, but structure has to be explicit too, not just implied by good ranking copy.

    I’ve made the same point about AEO specifically on this site before: “answer engine optimization is the practice of making your content a source that AI assistants such as ChatGPT, Perplexity, and Google’s AI Overviews cite when they answer your buyers’ questions,” and it “extends SEO rather than replacing it, and most of the underlying work overlaps.” That’s not a hedge – it’s the actual shape of the work. Clear headings, direct answers near the top of a page, crawlable HTML, and topical depth all serve both goals at once.

    Where this gets tested is schema markup, which is the single most-hyped “AEO tactic” in most vendor pitches. I’ve already covered a study on this site that ran the test directly: adding JSON-LD schema markup to pages “produced no citation gains in AI engines: statistically insignificant moves for ChatGPT and Google AI Mode, and a significant decline for Google AI Overviews.” The methodology behind that finding compared “1,885 pages that added JSON-LD structured data” against “4,000 matched control pages that did not.” Schema is good hygiene and it’s still worth doing for other reasons, but it’s not the lever that separates a page that gets cited from one that doesn’t. That result alone should make you skeptical of any pitch that frames GEO or AEO as a checklist of new technical add-ons rather than a continuation of the same fundamentals.

    Which to invest in first for a small B2B site

    If you’re a small B2B site with limited hours, the ordering follows directly from the overlap above. Get the SEO foundation right first: pages that crawl cleanly, headings that state the actual question being answered, and copy that answers it directly instead of building up to it. That work is not optional groundwork you do before AEO – per the site’s own AEO definition, it’s most of the underlying work AEO shares with SEO in the first place.

    Once that foundation is solid, layer in AEO-style structuring deliberately: a direct-answer paragraph near the top of the page, FAQ sections with explicit questions and answers, and schema markup where it’s straightforward to add. Do this because it’s low-cost and consistent with how the format works, not because the schema study above gives you any reason to expect a citation lift from schema alone.

    I would not build a dedicated “GEO strategy” as a small team right now. The term names a specific research framework with its own optimization process and its own metrics – not a set of tactics a marketing team can run today the way you’d run a keyword-targeted content calendar. Worth watching as the research matures. Not worth a separate budget line yet.

    What’s measured here versus inferred

    Google’s SEO definition and HubSpot’s AEO-vs-SEO framing above are direct quotes from those sources, fetched and verified live on the date of writing – they’re each source’s own stated position, not an independent audit by this site. The GEO paper’s “up to 40% visibility” figure is the paper’s own self-reported result from its own testing framework, not a number this site has independently reproduced. The two claims drawn from this site’s own prior posts – the AEO definition and the schema-markup finding – are first-party: they’re what this site has already published and tested, not generic claims about how every site performs.

    One figure I looked for and could not verify is the reported overlap between AI Overview citations and top-ranking organic results. Sources put that number anywhere from roughly 37% to nearly 99% depending on methodology, and I couldn’t independently confirm either figure through a live source. Rather than cite a contested number, I’m leaving it out. There’s also no search-volume figure in this piece for “GEO vs SEO vs AEO” or any related term – Keyword Planner access isn’t functional in my environment right now, and disclosing that seemed more useful than guessing.

    Frequently asked questions

    Is GEO the same thing as AEO?

    No, though they’re used interchangeably in a lot of marketing copy. GEO is the specific term from a 2023 research paper that defines a black-box optimization framework with its own visibility metrics. AEO is the broader, more commonly used industry term for the same general goal – getting cited in AI-generated answers – without being tied to that one paper’s specific framework. In practice, most people saying “GEO” in a sales pitch mean AEO.

    Does adding schema markup guarantee AI citations?

    No. A study this site has already covered found that adding JSON-LD schema markup produced no measurable citation gains in ChatGPT or Google AI Mode, and a measurable decline in Google AI Overviews, when compared against matched pages that didn’t add it. Schema is still worth doing as general hygiene, but it isn’t the tactic that separates cited pages from uncited ones.

    Should a small B2B site build a separate GEO strategy?

    Not as a distinct budget line, at least not yet. GEO names a research framework, not a shipped set of tactics a small marketing team can run today. A stronger use of limited time is getting SEO fundamentals right, then layering AEO-style structuring – direct answers, FAQ sections, schema where it’s easy – on top of that same foundation.

    If you want the fuller first-party definition of AEO and how it applies to B2B SaaS specifically, a practical intro to answer engine optimization for B2B SaaS covers that in depth. For the schema-markup study referenced above, does schema markup help AI citations has the full methodology and numbers. If you’re deciding whether any of this needs an AI agent or just a plugin, what an AI SEO agent actually is and AI SEO agent vs. SEO automation tool both cover that distinction directly.


    About the author: Shivaa Tripathi leads digital and performance marketing at Exotel and writes about demand gen, AI search, and the systems behind them at shivaatripathi.com. He built organic-os, the open-source AI SEO agent this site documents. LinkedIn · GitHub

    Drafted with organic-os and human-reviewed before publishing — every change on this site is approved by a person and logged publicly on the live proof page. Published 2026-08-07 · Updated 2026-08-07.

  • Track AI Referral Traffic in GA4 (ChatGPT, Gemini, Claude)

    GA4 now offers two ways to see traffic from ChatGPT, Gemini, and other AI assistants. As of mid-May 2026, Google added a native “AI Assistant” default channel group that recognizes referrals from ChatGPT, Gemini, and Claude automatically, with no setup required, tagging matching sessions with the medium ai-assistant. If that channel isn’t showing anything on your property, or you’re on an older GA4 configuration, the fallback is a manual custom channel group: a rule that matches the source against a regex of known AI-assistant domains, placed above your Referral channel so it catches the traffic first. Either way, check by going to Reports, Acquisition, Traffic acquisition, and looking for “AI Assistant” in the channel list, or by building the manual channel described below.

    I run organic-os, a small agent that checks its own site’s traffic sources on every scheduled pass, AI-referral sessions included. This piece is the method I use to check, written for anyone who wants to confirm whether GA4 is already catching AI-assistant traffic on their own property, and what to do if it isn’t yet.

    Check whether the native AI Assistant channel is already active

    Google added an “AI Assistant” default channel group to GA4 for traffic from recognized AI chatbot referrers, naming ChatGPT, Gemini, and Claude as examples, according to Search Engine Journal’s coverage of the rollout. The mechanism touches three traffic-source dimensions at once: when GA4 detects a referrer matching a recognized AI assistant, it assigns “ai-assistant” as the medium value, groups the session under the “AI Assistant” channel in Default Channel Group reports, and gives the campaign dimension a reserved “(ai-assistant)” label. All three changes happen automatically, and property owners don’t need to configure anything.

    To check your own property, open Reports, Acquisition, Traffic acquisition, and look at the Session default channel group breakdown for an “AI Assistant” row. If a visitor arrived by clicking a link inside a ChatGPT, Gemini, or Claude response, and the referrer header made it through, that session should now show up there instead of getting lumped into generic Referral traffic. Google hasn’t published the full list of recognized referrers beyond those three named examples, so a platform like Perplexity may still land elsewhere depending on how GA4’s recognition list has been updated since this was written.

    Two gaps are worth knowing before you trust an empty result. First, the change is not described as retroactive in the source reporting, so older sessions that predate the rollout won’t be reclassified. Second, AI-assistant traffic that arrives without a referrer header, which happens in some in-app browsers, some mobile apps, and any time a link is copied and pasted rather than clicked, still lands in Direct. A zero in the AI Assistant row does not necessarily mean zero AI-assistant visitors; it means zero that GA4 could attribute by referrer.

    Build a manual fallback if the native channel isn’t showing anything

    Before the native channel existed, Google’s own guidance for tracking this traffic was a manual custom channel group built with regex patterns, and that approach still works as a fallback or a supplement, especially for platforms the native channel doesn’t yet name. The path is in GA4’s Admin: Data display, then Channel groups, then Add new channel. Give it a name, set the condition to match when the session source matches a regex, and paste in a pattern covering the AI-assistant domains you want to catch, for example a pattern including chatgpt.com, gemini.google.com, claude.ai, perplexity.ai, and copilot.microsoft.com, extended with any other assistant domains relevant to your traffic. Save it, then use the reorder option to move your new channel above Referral in the priority list, because GA4 evaluates channel rules top-down and an AI-assistant referrer that hits the Referral rule first will get miscategorized there instead.

    This manual path has real maintenance cost. AI platforms change domains, GA4 limits you to two custom channel groups total, and setting one up requires editor-level access to the property. If the native channel is already populating correctly for the platforms you care about, there’s little reason to also run a manual one for the same domains; the more useful case for a manual channel now is catching assistants the native list doesn’t cover yet.

    What this site’s own check actually shows

    I checked both the native channel and the raw source/medium breakdown for organicos.shivaatripathi.com before writing this. In the window since the native channel exists, the Session default channel group report shows Direct, Unassigned, and Organic Search rows, no AI Assistant row. Looking at source and medium directly, going back to the start of this year, the only sources recorded are (direct), (not set), and google/organic. No chatgpt.com, no perplexity.ai, no gemini.google.com, no claude.ai. That’s an honest zero, not a hidden one: this site checks for this signal on every run and has not yet seen it, which is worth stating plainly rather than implying otherwise. It is one of the signals the broader loop behind this site watches for, described in more depth in what an AI SEO agent actually is. If you’re running this same check on a larger property, the useful comparison isn’t whether the number is impressive, it’s whether the channel is populating at all versus staying empty because of a referrer-header gap.

    What a referral click does and doesn’t tell you

    Everything above measures click-throughs: a visitor who clicked a link inside an AI assistant’s response and landed on your site with an intact referrer header. It does not measure being cited, quoted, or summarized by an assistant without a click, which is a separate and, at least for now, separately-measured phenomenon that GA4’s channel groups aren’t built to capture. If an assistant answers a question using your content but the reader never clicks through, that interaction won’t show up as AI Assistant traffic, as Direct traffic, or anywhere else in GA4, because no session against your property was ever created. Referral tracking and citation tracking are different questions with different tools; this piece only answers the first one. If you want the citation side, on making your content something an assistant can quote in the first place, I cover that separately in a practical intro to answer engine optimization for B2B SaaS.

    Labeling the evidence in this piece

    The GA4 mechanism, the named platforms, and the referrer-header gap are all direct quotes from Search Engine Journal’s reporting on the rollout, re-verified against the article’s raw fetched HTML before publishing. The manual custom-channel-group steps are paraphrased from an independent GA4 specialist’s published walkthrough, not quoted verbatim. This site’s own channel and source/medium numbers are first-party, pulled live from its own GA4 property the same day this was drafted. There is no search-volume figure anywhere in this piece for any of its target keyword phrasings; Google Ads Keyword Planner access is not fully connected in my environment, and I would rather disclose that gap than invent a number.

    Frequently asked questions

    Does GA4 track ChatGPT and Gemini referral traffic automatically now?

    For recognized referrers, yes. GA4 added a native “AI Assistant” default channel group that automatically classifies traffic from ChatGPT, Gemini, and Claude, with no setup required. The full recognized-referrer list beyond those three isn’t published, so other assistants may still need a manual channel to be captured reliably.

    Why would the AI Assistant channel show zero sessions even if I’m getting AI-assistant traffic?

    Two common reasons: the change isn’t described as retroactive, so it won’t reclassify older sessions, and any AI-assistant visit that arrives without a referrer header, such as from an in-app browser or a copied-and-pasted link, still lands in Direct instead of the AI Assistant channel.

    How do I build a manual channel for AI referral traffic in GA4?

    In Admin, go to Data display, then Channel groups, then Add new channel. Set a condition matching the session source against a regex of known AI-assistant domains, save it, then reorder it above your Referral channel so GA4 evaluates the AI-assistant rule first.


    About the author: Shivaa Tripathi leads digital and performance marketing at Exotel and writes about demand gen, AI search, and the systems behind them at shivaatripathi.com. He built organic-os, the open-source AI SEO agent this site documents. LinkedIn · GitHub

    Drafted with organic-os and human-reviewed before publishing — every change on this site is approved by a person and logged publicly on the live proof page. Published 2026-08-02 · Updated 2026-08-02.