{"id":309440,"date":"2026-05-15T06:33:56","date_gmt":"2026-05-15T06:33:56","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/kcitservice-ai-site-beacon\/"},"modified":"2026-05-15T06:31:04","modified_gmt":"2026-05-15T06:31:04","slug":"kcitservice-ai-site-beacon","status":"publish","type":"plugin","link":"https:\/\/te.wordpress.org\/plugins\/kcitservice-ai-site-beacon\/","author":16046934,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.7","stable_tag":"1.0.7","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"KCITService \u2013 AI Site Beacon","header_author":"KC IT Service","header_description":"Make your WordPress site AI-readable in 8 languages. Generates llms.txt, llms-full.txt, structured indexes, robots.txt entries, and ai.txt with per-bot training controls. CJK-aware for Chinese, Japanese, and Korean sites.","assets_banners_color":"35709b","last_updated":"2026-05-15 06:31:04","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/kc-itservice.com\/plugins\/ai-site-beacon\/","header_author_uri":"https:\/\/kc-itservice.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.7":{"tag":"1.0.7","author":"kangc3000","date":"2026-05-15 06:31:04"}},"upgrade_notice":{"1.0.7":"<p>Fixes <code>\u4e82\u78bc<\/code> (garbled characters) when viewing <code>\/llms.txt<\/code> or <code>\/llms-full.txt<\/code> directly in a browser on sites with Chinese, Japanese, Korean, or other non-ASCII content. Adds a UTF-8 BOM so the encoding is detected without depending on the server&#039;s Content-Type charset.<\/p>","1.0.6":"<p>Fixes raw HTML entities (like <code>&amp;#8211;<\/code> and <code>&amp;#038;<\/code>) leaking into generated files. Affects sites whose post titles use en-dashes, ampersands, or other characters WordPress stores as numeric character references. Safe in-place upgrade.<\/p>","1.0.5":"<p>WordPress.org submission compliance fixes: text domain matches the plugin slug, Tested up to bumped to 6.9, Plugin URI corrected. No functional changes; safe in-place upgrade.<\/p>","1.0.4":"<p>Plugin renamed for WordPress.org Plugin Directory submission. The folder slug changed from <code>ai-site-beacon<\/code> to <code>kcitservice-ai-site-beacon<\/code>, so this upload installs alongside the old plugin rather than replacing it. Deactivate and delete the old &quot;AI Site Beacon&quot; entry after activating this one \u2014 your settings carry over automatically because they live in the WP options table, not in the plugin folder.<\/p>","1.0.3":"<p>Bug fixes for CJK-language sites: clean TOC anchors, summaries no longer leak Markdown markers, and titleless posts get a sensible fallback. Safe in-place upgrade.<\/p>","1.0.2":"<p>Adds \/ai.txt support \u2014 opt-in file for AI training permissions with per-bot controls. Safe in-place upgrade \u2014 no data migration required.<\/p>","1.0.1":"<p>Adds robots.txt integration, 7 bundled translations, settings versioning, and a top-level admin menu. Safe in-place upgrade \u2014 no data migration required.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3532702,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3532702,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3532702,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3532702,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.7"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Overview tab showing scan and generation status.","2":"Content sources configuration.","3":"Preview of the generated llms.txt before publishing."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2353,263012,239487,244604,247962],"plugin_category":[],"plugin_contributors":[263013],"plugin_business_model":[],"class_list":["post-309440","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-ai-readable","plugin_tags-llms","plugin_tags-llms-txt","plugin_tags-machine-readable","plugin_contributors-kangc3000","plugin_committers-kangc3000"],"banners":{"banner":"https:\/\/ps.w.org\/kcitservice-ai-site-beacon\/assets\/banner-772x250.png?rev=3532702","banner_2x":"https:\/\/ps.w.org\/kcitservice-ai-site-beacon\/assets\/banner-1544x500.png?rev=3532702","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kcitservice-ai-site-beacon\/assets\/icon-128x128.png?rev=3532702","icon_2x":"https:\/\/ps.w.org\/kcitservice-ai-site-beacon\/assets\/icon-256x256.png?rev=3532702","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>KCITService \u2013 AI Site Beacon generates the four standard AI-readable files (<code>llms.txt<\/code>, <code>llms-full.txt<\/code>, <code>llms-index.json<\/code>, <code>llms-sitemap.xml<\/code>) plus an optional <code>\/ai.txt<\/code> for training permissions, and integrates with your <code>\/robots.txt<\/code>. Where it differs from other plugins in this category:<\/p>\n\n<h4>How this plugin is different<\/h4>\n\n<ul>\n<li><strong>Multilingual UI out of the box<\/strong> &mdash; 8 bundled language packs (English, Simplified Chinese, Traditional Chinese, Japanese, Korean, Spanish, French, German). No separate language pack downloads, no machine-translated strings &mdash; every UI label, button, help text, and FAQ entry was hand-translated.<\/li>\n<li><strong>CJK-aware processing<\/strong> &mdash; the word counter and summary builder correctly handle Chinese, Japanese, and Korean characters. Most llms.txt generators undercount CJK content (counting an entire 1,000-character Chinese article as \"1 word\") or produce mangled URL-encoded TOC anchors. We don't.<\/li>\n<li><strong>All three signal files in one plugin<\/strong> &mdash; <code>llms.txt<\/code> for content discovery, <code>robots.txt<\/code> integration for crawl signals, and <code>ai.txt<\/code> (Spawning.ai format) for training permissions. One admin area, consistent UX, single generation pipeline.<\/li>\n<li><strong>Per-bot training controls<\/strong> &mdash; the ai.txt tab ships with a curated list of 13 known AI user-agents (OpenAI's GPTBot\/ChatGPT-User\/OAI-SearchBot, Anthropic's ClaudeBot, Google-Extended, Common Crawl's CCBot, PerplexityBot, ByteDance's Bytespider, Applebot-Extended, Amazonbot, Meta-ExternalAgent, cohere-ai) with default\/allow\/disallow radios for each.<\/li>\n<li><strong>Settings version history with rollback<\/strong> &mdash; every settings change is snapshotted (last 20 versions kept), and one click rolls back to any prior state. The rollback itself is reversible.<\/li>\n<li><strong>Privacy-first<\/strong> &mdash; the free version makes zero external API calls. Everything is processed locally inside WordPress. Customer\/order\/account data from WooCommerce is never read.<\/li>\n<\/ul>\n\n<h4>Generated files<\/h4>\n\n<ul>\n<li><code>\/llms.txt<\/code> &mdash; concise Markdown guide and index<\/li>\n<li><code>\/llms-full.txt<\/code> &mdash; fuller Markdown content package<\/li>\n<li><code>\/llms-index.json<\/code> &mdash; structured machine-readable index<\/li>\n<li><code>\/llms-sitemap.xml<\/code> &mdash; XML list of AI-readable resources<\/li>\n<li><code>\/ai.txt<\/code> &mdash; optional Spawning.ai-style training permissions file<\/li>\n<li><code>\/robots.txt<\/code> &mdash; integrated via WordPress's <code>robots_txt<\/code> filter (does not write a physical file, plays well with SEO plugins)<\/li>\n<\/ul>\n\n<h4>Standard features<\/h4>\n\n<ul>\n<li>Clean Markdown conversion of your public WordPress content<\/li>\n<li>Two deployment modes: static files written to your site root, or virtual endpoints if root is not writable<\/li>\n<li>Per-post include \/ exclude control via a sidebar meta box<\/li>\n<li>Category, tag, and URL pattern exclusions<\/li>\n<li>Manual or scheduled regeneration via WP-Cron (daily, weekly, monthly)<\/li>\n<li>Live preview of the generated files before publishing<\/li>\n<\/ul>\n\n<h4>What this plugin does NOT claim<\/h4>\n\n<p>This plugin does not claim that ChatGPT, Claude, Gemini, Perplexity, or any specific AI system will automatically crawl, index, train on, or use the generated files. The <code>llms.txt<\/code> and <code>ai.txt<\/code> conventions are emerging standards and adoption by individual AI providers is voluntary. Treat this plugin as making your signals available, not as a guarantee of how any specific AI service will behave.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>kcitservice-ai-site-beacon<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Go to <strong>AI Site Beacon<\/strong> in the admin menu (top level, megaphone icon) to configure and generate your files.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>No. Files are generated on demand or on a schedule, and served as static files when possible.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20keep%20the%20plugin%20active%20for%20the%20files%20to%20work%3F\"><h3>Do I need to keep the plugin active for the files to work?<\/h3><\/dt>\n<dd><p>If files are deployed as static files in your site root, they remain accessible even if the plugin is deactivated. In virtual endpoint mode, the plugin must remain active to serve the URLs.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20multisite%3F\"><h3>Does this work with multisite?<\/h3><\/dt>\n<dd><p>The MVP targets single-site WordPress. Multisite is not officially supported in 1.0 but should not break.<\/p><\/dd>\n<dt id=\"will%20it%20expose%20private%20content%3F\"><h3>Will it expose private content?<\/h3><\/dt>\n<dd><p>No. Drafts, private posts, password-protected posts, trashed items, and revisions are excluded by default. WooCommerce cart, checkout, account, and order data are also excluded.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fixed: <code>llms.txt<\/code> and <code>llms-full.txt<\/code> now start with a UTF-8 byte-order mark (BOM) so browsers viewing the file directly render CJK and other non-ASCII characters correctly even when Apache serves the static file without an explicit <code>charset=utf-8<\/code> Content-Type header. JSON and XML outputs are deliberately left BOM-free per their respective specs.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Fixed: HTML numeric character references in post titles and excerpts (<code>&amp;#8211;<\/code> for en-dash, <code>&amp;#038;<\/code> for ampersand, etc.) are now decoded to their actual characters before being written into llms.txt, llms-full.txt, and llms-index.json. Previously some WordPress-stored titles leaked raw <code>&amp;#NNNN;<\/code> markup into the generated files.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed: text domain changed from <code>ai-site-beacon<\/code> to <code>kcitservice-ai-site-beacon<\/code> to match the plugin slug (WordPress.org Plugin Directory requirement). All 8 language packs renamed accordingly.<\/li>\n<li>Fixed: <code>Tested up to<\/code> bumped to WordPress 6.9.<\/li>\n<li>Fixed: <code>Plugin URI<\/code> updated to a working URL.<\/li>\n<li>Improved: readme description rewritten to lead with what makes this plugin different from the 150+ other plugins in this category.<\/li>\n<li>No functional changes &mdash; settings, version history, and generated files carry over.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Renamed plugin to \"KCITService \u2013 AI Site Beacon\" and changed the folder slug to <code>kcitservice-ai-site-beacon<\/code> to comply with WordPress.org Plugin Directory naming guidelines.<\/li>\n<li>Updated author attribution to KC IT Service with the official kc-itservice.com domain.<\/li>\n<li>No functional changes; existing settings, version history, generated files, and language preferences are preserved automatically because internal option keys, hooks, and the text domain remain unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed: Table-of-contents anchors in llms-full.txt no longer URL-encode CJK characters (<code>%e6%88%91...<\/code> is now <code>\u6211\u5011\u7684\u5718\u968a<\/code>).<\/li>\n<li>Fixed: Item summaries strip Markdown syntax (headers, lists, bold\/italic, links) so excerpts read as clean prose instead of leaking <code># ##<\/code> markers.<\/li>\n<li>Fixed: Posts\/pages with empty titles now fall back to the URL slug or the post-type label, preventing empty <code>[](#)<\/code> entries.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added: \/ai.txt generation \u2014 Spawning.ai-style AI training permissions file.<\/li>\n<li>Added: ai.txt admin tab with per-bot allow\/disallow controls for OpenAI (GPTBot, ChatGPT-User, OAI-SearchBot), Anthropic (ClaudeBot, anthropic-ai), Google (Google-Extended), Common Crawl (CCBot), Perplexity (PerplexityBot), ByteDance (Bytespider), Apple (Applebot-Extended), Amazon (Amazonbot), Meta (Meta-ExternalAgent), and Cohere (cohere-ai).<\/li>\n<li>Added: default policy + custom additions textarea for ai.txt.<\/li>\n<li>Added: ai.txt deploys via the same static-or-virtual mechanism as the other generated files.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added: robots.txt integration with admin tab and customizable directives.<\/li>\n<li>Added: 7 bundled language packs (zh_CN, zh_TW, ja, ko_KR, es_ES, fr_FR, de_DE).<\/li>\n<li>Added: Versions tab \u2014 every settings change is snapshotted and rollback is one click.<\/li>\n<li>Added: Help tab with quick-start, FAQ, and per-feature explanations.<\/li>\n<li>Added: top-level admin menu with megaphone icon (was nested under Settings).<\/li>\n<li>Added: version tracking and one-time rewrite-rules flush on upgrade.<\/li>\n<li>Improved: word counter now correctly counts CJK (Chinese, Japanese, Korean) characters.<\/li>\n<li>Improved: HTML\u2192Markdown conversion no longer relies on DOM <code>getElementById<\/code> which fails without DTD ID declaration.<\/li>\n<li>Fixed: activation <code>flush_rewrite_rules()<\/code> now runs after rules are registered.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"AI-readable file suite for multilingual sites: llms.txt + ai.txt + robots.txt integration, 8 bundled UI languages, CJK-aware.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/309440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=309440"}],"author":[{"embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kangc3000"}],"wp:attachment":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=309440"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=309440"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=309440"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=309440"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=309440"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=309440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}