{"id":397557,"date":"2026-11-08T07:59:31","date_gmt":"2026-11-08T07:59:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/citolume\/"},"modified":"2026-11-08T08:05:35","modified_gmt":"2026-11-08T08:05:35","slug":"citolume","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/citolume\/","author":23556424,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.0","stable_tag":"0.2.0","tested":"7.1.4","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Citolume \u2013 AI Visibility","header_author":"Havoric","header_description":"Is your site cited when people ask ChatGPT, Gemini and Perplexity? Track AI citations, see which AI crawlers visit, and publish llms.txt.","assets_banners_color":"f7f8fa","last_updated":"2026-11-08 08:05:35","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/citolume.com","header_author_uri":"https:\/\/havoric.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":96,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.0":{"tag":"0.2.0","author":"havoric","date":"2026-11-08 08:05:35","revision":3790665}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3790665,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3790665,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3790665,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3790665,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3790665,"resolution":"1","location":"assets","locale":"","width":1478,"height":980},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3790665,"resolution":"2","location":"assets","locale":"","width":1487,"height":1047},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3790665,"resolution":"3","location":"assets","locale":"","width":1448,"height":743},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3790665,"resolution":"4","location":"assets","locale":"","width":1236,"height":1668},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3790665,"resolution":"5","location":"assets","locale":"","width":1237,"height":942},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3790665,"resolution":"6","location":"assets","locale":"","width":1234,"height":1478}},"screenshots":{"1":"The Overview: visibility score, the reachable \u2192 crawled \u2192 mentioned \u2192 cited funnel, and who is cited instead of you.","2":"Questions: every tracked question, per engine \u2014 cited, mentioned, not cited, or a coverage gap.","3":"\"What's weak on this page?\" \u2014 what stops an engine using your page, and how to fix it.","4":"AI readiness: fifteen checks, each linked to the WordPress setting that fixes it.","5":"Crawlers: which AI crawlers visit, the pages they read, and what robots.txt allows.","6":"llms.txt: generated from your content, with your own sections and site context."}},"plugin_section":[],"plugin_tags":[265528,246479,246076,216196,244604],"plugin_category":[],"plugin_contributors":[291463],"plugin_business_model":[],"class_list":["post-397557","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-citations","plugin_tags-ai-crawlers","plugin_tags-ai-visibility","plugin_tags-chatgpt","plugin_tags-llms-txt","plugin_contributors-havoric","plugin_committers-havoric"],"banners":{"banner":"https:\/\/ps.w.org\/citolume\/assets\/banner-772x250.png?rev=3790665","banner_2x":"https:\/\/ps.w.org\/citolume\/assets\/banner-1544x500.png?rev=3790665","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/citolume\/assets\/icon-128x128.png?rev=3790665","icon_2x":"https:\/\/ps.w.org\/citolume\/assets\/icon-256x256.png?rev=3790665","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/citolume\/assets\/screenshot-1.png?rev=3790665","caption":"The Overview: visibility score, the reachable \u2192 crawled \u2192 mentioned \u2192 cited funnel, and who is cited instead of you."},{"src":"https:\/\/ps.w.org\/citolume\/assets\/screenshot-2.png?rev=3790665","caption":"Questions: every tracked question, per engine \u2014 cited, mentioned, not cited, or a coverage gap."},{"src":"https:\/\/ps.w.org\/citolume\/assets\/screenshot-3.png?rev=3790665","caption":"\"What's weak on this page?\" \u2014 what stops an engine using your page, and how to fix it."},{"src":"https:\/\/ps.w.org\/citolume\/assets\/screenshot-4.png?rev=3790665","caption":"AI readiness: fifteen checks, each linked to the WordPress setting that fixes it."},{"src":"https:\/\/ps.w.org\/citolume\/assets\/screenshot-5.png?rev=3790665","caption":"Crawlers: which AI crawlers visit, the pages they read, and what robots.txt allows."},{"src":"https:\/\/ps.w.org\/citolume\/assets\/screenshot-6.png?rev=3790665","caption":"llms.txt: generated from your content, with your own sections and site context."}],"raw_content":"<!--section=description-->\n<p>People now ask ChatGPT, Gemini and Perplexity instead of searching, and those answers cite a handful of sites. <strong>Citolume tells you whether yours is one of them \u2014 and who is cited instead.<\/strong><\/p>\n\n<p><strong>Not an SEO plugin.<\/strong> No meta tags, no sitemaps, no schema engine, no redirects. Citolume does one job \u2014 AI visibility \u2014 and works alongside whatever SEO plugin you already use. It is small (under 1 MB, no frameworks) and adds nothing to your pages for human visitors.<\/p>\n\n<p>Free to start: connecting is one click, with no card, and tracks two questions. The crawler log and llms.txt work with no connection at all.<\/p>\n\n<h4>Track AI citations<\/h4>\n\n<p>Ask real AI engines the questions your customers ask, and see who gets cited \u2014 you, or someone else.<\/p>\n\n<ul>\n<li><strong>One funnel for the whole picture<\/strong> \u2014 reachable, crawled, mentioned, cited \u2014 so you always know which stage to work on.<\/li>\n<li><strong>Who owns your questions<\/strong> \u2014 the domains the engines cite instead of you, ranked.<\/li>\n<li><strong>Honest results.<\/strong> AI answers vary, so each question is reported as a frequency, with four states: cited, mentioned (named without a link), not cited, and \"the engine never searched\", which nobody can win and is never counted as a miss.<\/li>\n<li><strong>Read the engine's own words<\/strong> \u2014 the answer and the exact sources behind it, per engine.<\/li>\n<li><strong>Coverage gaps<\/strong> \u2014 questions no engine answers well yet: openings, not failures.<\/li>\n<li><strong>Re-check on demand<\/strong> with credits, outside the schedule \u2014 one credit, one question.<\/li>\n<\/ul>\n\n<p>Free tracks 2 questions monthly on Gemini. Starter ($9.99\/month) tracks 5 weekly and adds Perplexity; Growth ($24.99\/month) tracks 10 weekly and adds ChatGPT.<\/p>\n\n<h4>\"What's weak on this page?\"<\/h4>\n\n<p>For a question where you are not cited, one click reads the page on your site that best answers it and checks what stops an engine from using it \u2014 whether the answer is in the opening, the headings, structured data, llms.txt, crawler access. Each finding comes with the steps to fix it and, where one honestly exists, the exact code to paste. It reads your site only, so it costs no credit.<\/p>\n\n<h4>AI readiness<\/h4>\n\n<p>Fifteen checks on the technical floor, fetched from your live site: can AI crawlers reach you, can they index you, can they find your pages (sitemap, feed, llms.txt), and can they tell who you are (title, description, headings, language, canonical, organisation data). Every failing check links straight to the WordPress setting that fixes it. Free once connected.<\/p>\n\n<h4>See which AI crawlers visit<\/h4>\n\n<p>Every visit from a recognised AI crawler is recorded: which crawler, which page, and when \u2014 with the pages they read most and a 30-day trend. Recognised crawlers include GPTBot, OAI-SearchBot and ChatGPT-User (OpenAI), ClaudeBot and Claude-User (Anthropic), PerplexityBot, DuckAssistBot, Amazonbot, Bytespider, meta-externalagent and CCBot, each labelled with who runs it and why it visits. A robots.txt check shows which of them you are blocking.<\/p>\n\n<h4>Publish an llms.txt<\/h4>\n\n<pre><code>llms.txt is a plain-text index of your content at a fixed address, so an AI engine can find what matters without crawling everything. Citolume builds yours from your published content and serves it at `\/llms.txt`: nothing written to disk, updated whenever you publish. Add site context, write your own sections (they survive regeneration), and give each post its own description or leave it out.\n<\/code><\/pre>\n\n<h4>Honest about the limits<\/h4>\n\n<ul>\n<li>If your site uses page caching, cached pages are served without running WordPress, so those crawler visits cannot be counted. The plugin detects this and says so rather than showing a confident number that is wrong.<\/li>\n<li><code>llms.txt<\/code> is a proposal, not a standard. Not every AI engine reads it. It costs nothing to publish, but treat it as housekeeping, not a guarantee.<\/li>\n<li>Nothing here can promise a citation. Fixing what the checks find removes reasons an engine cannot use your page; whether it then cites you is the engine's call \u2014 and that is exactly what Citolume measures.<\/li>\n<\/ul>\n\n<h4>Private by design<\/h4>\n\n<p>Only recognised AI crawlers are recorded, and only the crawler name, the path it requested, and the date. No IP addresses, no logging of your human visitors, nothing that identifies a person.<\/p>\n\n<h4>External services<\/h4>\n\n<p>Citation tracking talks to our service at api.citolume.com, and only after you click Connect in the setup wizard \u2014 nothing is sent on install or activation. Connecting sends your site address and site name so the service can verify the site is yours and set up its free plan. The setup wizard also shows you the email address of the WordPress user running it and offers to create your Citolume account with it: if you leave it in place, that address and your WordPress first and last name are sent too, and the service emails you one link to set a password. Clear the field and none of it is sent \u2014 the site connects with no account, exactly as before. After that, requests carry the site's licence key and the questions you choose to track. When you run AI readiness, ask \"What's weak on this page?\" or ask for question suggestions, the service reads your site's public pages \u2014 robots.txt, the sitemap, the feed, llms.txt, the homepage and the page that best answers the question \u2014 exactly as any visitor could; nothing private is read. Once a day the plugin also checks in: that call carries the licence key, and \u2014 if the crawler log has recorded anything \u2014 the day's totals from it, which are the crawler name, the page path it visited, the date and a visit count. No visitor data and no page content. The check-in also keeps your site marked active so scans are not paused as dormant. If you bought a plan, claiming its key sends your site address and the email used at checkout. Uninstalling sends one final request so the service stops scanning this site; your history is kept for a reinstall. Billing itself lives in your account at app.citolume.com \u2014 the plugin only links there, and \"Manage subscription\" opens the billing portal your account provides. The plugin never handles payment details. The service is governed by the privacy policy at https:\/\/citolume.com\/privacy\/ and the terms at https:\/\/citolume.com\/terms\/. If it is unreachable, every free feature continues untouched.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin through <em>Plugins \u2192 Add New<\/em>, or upload the files to <code>\/wp-content\/plugins\/citolume<\/code>.<\/li>\n<li>Activate it. The setup wizard opens: connecting for citation tracking is one click and optional.<\/li>\n<li>Open <em>Citolume<\/em> in the admin menu.<\/li>\n<\/ol>\n\n<p>The crawler log starts immediately. <code>llms.txt<\/code> needs pretty permalinks; on plain permalinks the plugin says so and links to the setting.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20chatgpt%20cite%20my%20website%3F\"><h3>Does ChatGPT cite my website?<\/h3><\/dt>\n<dd><p>That is exactly the question Citolume answers. Add the questions your customers would ask, and each scan asks the AI engines on your plan \u2014 Gemini, Perplexity and ChatGPT \u2014 and records whether your site is among the sources each one cites, how often, and who is cited instead.<\/p><\/dd>\n<dt id=\"how%20is%20this%20different%20from%20yoast%2C%20rank%20math%20or%20other%20seo%20plugins%3F\"><h3>How is this different from Yoast, Rank Math or other SEO plugins?<\/h3><\/dt>\n<dd><p>SEO plugins optimise your pages for Google's search results. Citolume measures something they do not: whether AI answer engines cite you. It has no meta tags, sitemaps or schema of its own, so it never conflicts with your SEO plugin \u2014 use both.<\/p><\/dd>\n<dt id=\"is%20it%20free%3F\"><h3>Is it free?<\/h3><\/dt>\n<dd><p>Yes, to start. The crawler log and llms.txt are free with no connection at all. Connecting is free too \u2014 one click, no card \u2014 and adds AI readiness and citation tracking for two questions, scanned monthly on Gemini. Paid plans add questions, engines and weekly scans; billing lives in your account at app.citolume.com, never inside WordPress.<\/p><\/dd>\n<dt id=\"why%20does%20it%20say%20my%20numbers%20are%20too%20low%3F\"><h3>Why does it say my numbers are too low?<\/h3><\/dt>\n<dd><p>Because they are, if you run page caching. Caching plugins serve a saved copy of a page without starting WordPress, so the plugin never sees those requests. Anything cached is invisible to it, and the counts should be read as a floor rather than a total.<\/p><\/dd>\n<dt id=\"where%20is%20my%20llms.txt%20file%3F\"><h3>Where is my llms.txt file?<\/h3><\/dt>\n<dd><p>There is no file. It is generated when requested and served at <code>\/llms.txt<\/code>. That means it never goes stale, and it works on hosts where the web root is not writable. If you already have a real <code>llms.txt<\/code> file in your site root, that one is served instead and the plugin leaves it alone.<\/p><\/dd>\n<dt id=\"my%20llms.txt%20shows%20a%20404%20or%20an%20html%20page\"><h3>My llms.txt shows a 404 or an HTML page<\/h3><\/dt>\n<dd><p>Your site is using plain permalinks, so WordPress never receives the request. Pick any other option under <em>Settings \u2192 Permalinks<\/em>.<\/p><\/dd>\n<dt id=\"are%20you%20checking%20the%20real%20chatgpt%2C%20or%20something%20else%3F\"><h3>Are you checking the real ChatGPT, or something else?<\/h3><\/dt>\n<dd><p>Citation tracking asks each engine through its official API, with web search on. That is a close proxy for the app you use, but not identical \u2014 the consumer apps have their own retrieval on top. When an engine answers a question without searching at all, that is reported honestly rather than counted as though you were not cited. Answers vary, so paid plans ask each question twice per scan (free asks once) and results are reported as a frequency, never a yes\/no.<\/p><\/dd>\n<dt id=\"does%20this%20send%20my%20data%20anywhere%3F\"><h3>Does this send my data anywhere?<\/h3><\/dt>\n<dd><p>The crawler log, the crawler-block check and llms.txt work entirely inside your own site, with no account and no external service.<\/p>\n\n<p>Citation tracking talks to our service once you connect \u2014 an explicit click in the setup wizard, never automatic. From then on the plugin sends the site's licence key, the questions you chose to track, and once a day the crawler log's daily totals (crawler name, page path, date, count). If the service is unreachable, or you never connect, everything else carries on exactly as before.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20my%20site%20down%3F\"><h3>Does it slow my site down?<\/h3><\/dt>\n<dd><p>No. One small write per AI crawler visit, and nothing at all for human visitors. Visits are aggregated per crawler, per page, per day rather than stored one row per request, so the table stays small. Records older than 90 days are removed automatically.<\/p><\/dd>\n<dt id=\"can%20i%20block%20these%20crawlers%20instead%3F\"><h3>Can I block these crawlers instead?<\/h3><\/dt>\n<dd><p>Not with this plugin. Its job is to show you what is happening. Blocking is done through robots.txt.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>NEW: AI crawler logging, with per-crawler totals, most crawled pages, and a 30 day chart.<\/li>\n<li>NEW: Crawler-block check \u2014 whether robots.txt blocks any AI crawler, with honest \"cannot tell\" states.<\/li>\n<li>NEW: Virtual <code>\/llms.txt<\/code> with its own screen: site context, custom sections that survive regeneration, per-post descriptions and an exclude switch.<\/li>\n<li>NEW: Page cache detection, so undercounted figures are labelled rather than presented as fact.<\/li>\n<li>NEW: Citation tracking with a free tier \u2014 a funnel-led Overview (reachable, crawled, mentioned, cited), who owns your questions, and per-question per-engine results with frequency, mention, and honest unknown states.<\/li>\n<li>NEW: One-click connect \u2014 the plugin proves the site is yours and stores the key itself, nothing to paste.<\/li>\n<\/ul>","raw_excerpt":"Is your site cited when people ask ChatGPT, Gemini and Perplexity? Track AI citations, see which AI crawlers visit, and publish llms.txt.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/397557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=397557"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/havoric"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=397557"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=397557"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=397557"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=397557"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=397557"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=397557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}