1793642039

How to Get Cited by ChatGPT, Perplexity and Claude


Nobody can promise you a citation. Anyone who does is selling a course. I spent most of last spring convinced there was a trick. I run two small platforms by myself, chat-to.dev and Comuniq, and when I noticed that a Perplexity answer about a niche programming question had linked to a competitor's forum thread instead of mine, it stung out of all proportion. My thread was better. I had read both. That was when I stopped treating this as marketing and started treating it as a debugging problem, which is the only mode in which I am any use. The first thing nobody tells you is that "being cited by an AI" is several different mechanisms wearing one coat. There is the training data, which you can't touch and which mostly produces vague familiarity rather than links. There is live retrieval, where the tool takes the question, fires off a search, pulls back a handful of pages and writes an answer over the top with footnotes. And there is the fuzzy middle where the model "knows" your brand exists because other pages mentioned it. The clickable citations come almost entirely from the second one. So the question gets much more boring and much more tractable: how do you end up in the small set of pages a retrieval step hands to a model in the two seconds before it starts writing? Honestly, it starts with being fetchable, and that's where I lost the most time. One Sunday night in March, cold coffee beside me, I grepped the access logs for user agents. I wanted to see who was actually showing up. What I found was embarrassing. Over a 30 day window, roughly 37% of the requests that identified as AI-related were getting a 403 or a 429 from me, not because I had decided anything, but because of a rate limiting rule I wrote months earlier for a scraper problem and then forgot. I had built a bouncer who turned away the one guest I wanted. Cloudflare also started blocking a number of AI crawlers by default for new domains in 2025, so plenty of people who never touched a setting are invisible without knowing it. Check this before you do anything clever. Check it before you read another article about this, including this one. The robots.txt side is its own small swamp. As far as I can tell, the big players now split their crawlers by purpose: one agent for training, another for building a search index, another that fires when a user's request triggers a fetch. Names and behaviour shift, so read the current documentation rather than trusting my memory. The useful part is that you can block training and still allow search, and a lot of people who panicked in 2023 and pasted a blanket Disallow are now quietly excluded from the answers they wanted to appear in. I felt the same instinct, about my articles being swallowed whole. But if the goal is citations, the search agents need to get in. The rest is a values decision you can make separately. Now rendering, where I'm less sure, so take it loosely. Several of these fetchers, in my testing, don't execute JavaScript the way a browser does, or do it patchily. chat-to.dev is a real-time chat product, which means big parts of it are assembled on the client, and for a while the pages I most wanted cited looked, to a plain HTTP fetch, like an empty shell with a spinner and a script tag. I ran curl against one of my own best articles and the body was nearly bare. Four point two seconds of hydration for the human, nothing at all for the machine. I moved the article pages to server-rendered HTML, kept the chat itself on the client because that is the point of the product, and the difference in what showed up took about three weeks to appear. I can't prove it was only that change. I changed other things too, which is the usual sin. Here is where I contradict myself a little. I said this is a boring technical problem, and the plumbing really is. But once it works, what separates a cited page from an ignored one stops being technical and gets uncomfortably close to the old question of whether the page is any good. The retrieval step doesn't read your whole article the way a person would. It pulls passages. A paragraph, maybe two, that look like they answer the exact thing the user typed. So the pages that get lifted tend to contain a self-contained block that states the answer plainly, with the specifics attached, before wandering off into nuance. I resisted this for ages because it felt like writing for a robot, and I hate writing for robots. Then I rewrote one of my Comuniq tutorials, an infrared people counter on an Arduino, so that the paragraph about the wiring and the debounce logic could survive being cut out of the page. Same content. No dangling "as mentioned above". It began appearing in answers within a couple of weeks. A paragraph that survives being quoted out of context is also just better writing, so I stopped resenting it. Specifics beat generalities by a mile, and this is the thing I'd tattoo somewhere if I were the tattooing type. A generic explainer is the most replaceable object on the internet right now. The model already has a decent one in its head and doesn't need you for it. What it can't produce is your measurement, your error message, the number you got when you ran the test yourself. I had a post comparing response times on a shared Hostinger plan before and after I tuned the cache headers, with the real figures, and it was cited far more than any of my nicely written opinion pieces. Opinion is cheap. A table of something you actually measured is a small piece of original data, and that's the only thing that gives a retrieval system a reason to prefer you. I used to think "original research" was a pompous phrase reserved for people with labs. It mostly means you ran a thing and wrote down what happened. That's the whole bar, and almost nobody clears it. Something slightly deflating, too. The models lean heavily on places where other people talk. Forum threads, comment sections, pages where a stranger says "no, that's wrong, here's what worked for me". A lot of the citations I saw going to competitors weren't polished publisher sites at all, they were threads. For someone running a community platform that is either wonderful news or an existential joke, depending on the day. It also suggests that being mentioned elsewhere, by real people with their own accounts, probably counts for more than anything you do on your own domain, and you can't fake that for long. I once wrote a whole notes file on how Reddit and Stack Overflow manufactured their early activity, and what I took from it was that the shortcuts were smaller than the legend suggests. Slower and real won, mostly. Which brings me to the part I think is mostly noise. There's a growing cottage industry around "generative engine optimization", and some of it is SEO with a new label and a higher day rate. People will sell you schema markup as if it were a spell, or an llms.txt file as if any major engine were confirmed to read it. I put an llms.txt up because it took ten minutes and I was curious, and I saw nothing in my logs suggesting anything meaningful requested it. Maybe that changes. Maybe it already did and I missed it. Structured data does seem to help with the ordinary search index some of these tools sit on, so I'd keep it for that reason and not the one on the sales page. I'd also distrust any number anyone quotes about the traffic this brings. A citation is not a click. In my analytics, a page that appeared as a source sent visitors at a rate that made me laugh out loud, something like one visit for every dozen or so appearances I could infer. The ones who do click are strangely good, though. They arrive with a specific problem, they stay on the page, and the ones landing on chat-to.dev signed up more often than the average organic visitor. Small volume, high quality, the opposite of what the hype implied, and oddly reassuring. You can't easily see any of this in a dashboard, which is where people lie to themselves. What I ended up doing is crude: a list of about forty questions my pages ought to answer, run by hand in each tool every couple of weeks, with a note on whether I appeared. It's tedious and it's the only honest signal I've found. Out of those forty, I went from appearing in maybe six to appearing in fourteen over roughly four months. Not a revolution. Real, though. I keep going back and forth on whether it's worth the effort. Part of me thinks it's chasing a channel that will be rearranged under my feet within a year, the way every channel is. Another part notes that everything that helped, the fetchability, the self-contained paragraphs, the real measurements, the genuine mentions, would have helped in plain search ten years ago and will probably help in whatever comes next. That's the closest thing to a reason I have. Nothing I did was a trick, and nothing I did would embarrass me if the whole system were switched off tomorrow. The competitor's forum thread that started all this still gets cited. I stopped caring somewhere around June, mostly because I read it properly and, annoyingly, one of the replies was better than mine.

(1) Comments

Welcome to Chat-to.dev, a space for both novice and experienced programmers to chat about programming and share code in their posts.

About | Privacy | Donate
[2026 © Chat-to.dev]