{"id":292250,"date":"2026-03-28T14:16:59","date_gmt":"2026-03-28T14:16:59","guid":{"rendered":"https:\/\/ja.wordpress.org\/plugins\/rapls-ai-chatbot\/"},"modified":"2026-10-02T13:51:47","modified_gmt":"2026-10-02T13:51:47","slug":"rapls-ai-chatbot","status":"publish","type":"plugin","link":"https:\/\/lij.wordpress.org\/plugins\/rapls-ai-chatbot\/","author":23425763,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.21.0","stable_tag":"1.21.0","tested":"7.1.3","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Rapls AI Chatbot \u2013 Self-Hosted RAG & MCP Server","header_author":"Rapls","header_description":"AI Chatbot plugin with OpenAI\/Claude\/Google support and automatic site content learning.","assets_banners_color":"9386f3","last_updated":"2026-10-02 13:51:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/raplsworks.com\/plugins\/rapls-ai-chatbot\/","header_author_uri":"https:\/\/raplsworks.com\/","rating":4.9,"author_block_rating":0,"active_installs":70,"downloads":5481,"num_ratings":9,"support_threads":7,"support_threads_resolved":7,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.10.0":{"tag":"1.10.0","author":"rapls","date":"2026-06-29 10:41:13","revision":3589899},"1.11.1":{"tag":"1.11.1","author":"rapls","date":"2026-07-03 10:52:55","revision":3595113},"1.14.0":{"tag":"1.14.0","author":"rapls","date":"2026-07-09 13:15:42","revision":3601534},"1.14.1":{"tag":"1.14.1","author":"rapls","date":"2026-07-12 02:45:25","revision":3604411},"1.15.0":{"tag":"1.15.0","author":"rapls","date":"2026-07-17 09:41:36","revision":3611264},"1.15.1":{"tag":"1.15.1","author":"rapls","date":"2026-07-20 09:39:23","revision":3614485},"1.15.2":{"tag":"1.15.2","author":"rapls","date":"2026-08-02 12:31:38","revision":3631762},"1.15.3":{"tag":"1.15.3","author":"rapls","date":"2026-08-12 06:35:55","revision":3642922},"1.15.4":{"tag":"1.15.4","author":"rapls","date":"2026-08-20 07:35:12","revision":3656127},"1.16.0":{"tag":"1.16.0","author":"rapls","date":"2026-08-23 03:17:46","revision":3661329},"1.16.1":{"tag":"1.16.1","author":"rapls","date":"2026-08-23 23:45:53","revision":3662441},"1.16.2":{"tag":"1.16.2","author":"rapls","date":"2026-08-25 03:45:09","revision":3664524},"1.17.0":{"tag":"1.17.0","author":"rapls","date":"2026-08-25 14:38:25","revision":3665511},"1.18.1":{"tag":"1.18.1","author":"rapls","date":"2026-08-31 15:42:21","revision":3674582},"1.19.2":{"tag":"1.19.2","author":"rapls","date":"2026-09-04 08:56:37","revision":3680925},"1.19.3":{"tag":"1.19.3","author":"rapls","date":"2026-09-11 06:33:54","revision":3690912},"1.19.4":{"tag":"1.19.4","author":"rapls","date":"2026-09-14 14:58:48","revision":3695462},"1.19.6":{"tag":"1.19.6","author":"rapls","date":"2026-09-15 08:40:01","revision":3696511},"1.19.7":{"tag":"1.19.7","author":"rapls","date":"2026-09-17 09:24:24","revision":3699924},"1.20.0":{"tag":"1.20.0","author":"rapls","date":"2026-09-17 23:48:51","revision":3701118},"1.20.1":{"tag":"1.20.1","author":"rapls","date":"2026-09-18 00:32:31","revision":3701142},"1.20.2":{"tag":"1.20.2","author":"rapls","date":"2026-09-18 14:22:34","revision":3702131},"1.20.3":{"tag":"1.20.3","author":"rapls","date":"2026-09-20 05:17:42","revision":3703897},"1.20.4":{"tag":"1.20.4","author":"rapls","date":"2026-09-22 10:35:20","revision":3707077},"1.20.5":{"tag":"1.20.5","author":"rapls","date":"2026-09-24 14:30:50","revision":3711513},"1.21.0":{"tag":"1.21.0","author":"rapls","date":"2026-10-02 13:51:47","revision":3724913},"1.5.10":{"tag":"1.5.10","author":"rapls","date":"2026-04-19 13:09:24","revision":3510088},"1.5.11":{"tag":"1.5.11","author":"rapls","date":"2026-04-19 13:21:28","revision":3510092},"1.5.12":{"tag":"1.5.12","author":"rapls","date":"2026-04-20 12:15:59","revision":3510847},"1.5.13":{"tag":"1.5.13","author":"rapls","date":"2026-04-21 03:30:04","revision":3511333},"1.5.14":{"tag":"1.5.14","author":"rapls","date":"2026-04-21 13:41:52","revision":3511887},"1.5.18":{"tag":"1.5.18","author":"rapls","date":"2026-04-29 09:06:06","revision":3518190},"1.5.20":{"tag":"1.5.20","author":"rapls","date":"2026-04-29 09:20:35","revision":3518215},"1.5.21":{"tag":"1.5.21","author":"rapls","date":"2026-04-29 14:27:50","revision":3518537},"1.5.6":{"tag":"1.5.6","author":"rapls","date":"2026-03-28 14:59:09","revision":3493414},"1.5.7":{"tag":"1.5.7","author":"rapls","date":"2026-04-17 14:08:05","revision":3508969},"1.5.9":{"tag":"1.5.9","author":"rapls","date":"2026-04-19 13:09:24","revision":3510088},"1.6.4":{"tag":"1.6.4","author":"rapls","date":"2026-04-30 12:32:26","revision":3519521},"1.6.5":{"tag":"1.6.5","author":"rapls","date":"2026-04-30 12:44:03","revision":3519529},"1.7.1":{"tag":"1.7.1","author":"rapls","date":"2026-05-01 10:08:10","revision":3520260},"1.7.5":{"tag":"1.7.5","author":"rapls","date":"2026-05-03 04:07:35","revision":3521212},"1.7.6":{"tag":"1.7.6","author":"rapls","date":"2026-05-03 08:02:19","revision":3521294},"1.7.7":{"tag":"1.7.7","author":"rapls","date":"2026-05-17 15:02:23","revision":3534628},"1.8.0":{"tag":"1.8.0","author":"rapls","date":"2026-05-21 00:24:48","revision":3540358},"1.8.1":{"tag":"1.8.1","author":"rapls","date":"2026-05-25 13:00:17","revision":3547635},"1.8.2":{"tag":"1.8.2","author":"rapls","date":"2026-05-30 02:16:23","revision":3554281},"1.9.0":{"tag":"1.9.0","author":"rapls","date":"2026-06-07 14:20:13","revision":3563729},"1.9.1":{"tag":"1.9.1","author":"rapls","date":"2026-06-12 14:11:30","revision":3570207},"1.9.2":{"tag":"1.9.2","author":"rapls","date":"2026-06-16 13:25:08","revision":3574570},"1.9.3":{"tag":"1.9.3","author":"rapls","date":"2026-06-19 14:38:02","revision":3578801},"1.9.4":{"tag":"1.9.4","author":"rapls","date":"2026-06-22 04:16:29","revision":3581156}},"upgrade_notice":{"1.21.0":"<p>Gemini 2.0 Flash, the former default, was shut down by Google; sites still using it resume on Gemini 3.6 Flash. Adds GPT-6, Claude Sonnet 5.5 and Opus 5.5 and Gemini 3.x, and warns before a selected model is retired.<\/p>","1.20.5":"<p>If your site uses Claude Sonnet 4 or Claude Opus 4.1, which Anthropic has retired, chats resume on their successors after this update. Also corrects Claude usage costs, which were overcounted for Haiku 4.5.<\/p>","1.20.4":"<p>The Site Learning screen no longer says it learns custom fields, which it has not done since 1.19.3.<\/p>","1.20.3":"<p>Stops an unrelated page being matched (and shown as a reference card) because of an everyday English word such as &quot;need&quot; in the question.<\/p>","1.20.2":"<p>Stops encrypted text appearing as a chat reply when Pro&#039;s response cache and message encryption are both on, and warns when the reCAPTCHA secret key can no longer be decrypted.<\/p>","1.20.1":"<p>Gives a clear message to a visitor whose browser is mistaken for a crawler, instead of the generic &quot;currently unavailable&quot; text.<\/p>","1.20.0":"<p>Adds an optional wp-config.php key so your API key and Pro license survive WordPress salt changes, and explains the cause when decryption does fail.<\/p>","1.19.7":"<p>Stops search-engine crawlers from creating fake conversations (and AI requests) by following deep-link question URLs.<\/p>","1.19.6":"<p>Fixes the background page being locked at the top on desktop when the chat is open, on sites with the optional &quot;iOS keyboard fix&quot; enabled.<\/p>","1.19.5":"<p>Fixes reference cards showing an unrelated page when the answer was grounded by vector search. Only affects sites with Vector Search enabled.<\/p>","1.19.4":"<p>Fixes System Health showing &quot;Last crawl: Never run yet&quot; while Site Learning was actually crawling. Each crawl run now records its own timestamp.<\/p>","1.19.3":"<p>Stops Site Learning from indexing third-party plugin metadata (e.g. Rank Math SEO fields) that could surface in chatbot answers. Re-run Site Learning after updating to clean already-indexed pages.<\/p>","1.19.2":"<p>Fixes the close (\u00d7) button not working when the chat is embedded on another site via the script. Recommended if you use the cross-site embed.<\/p>","1.19.1":"<p>Minor fix for the cross-site embed: the Google reCAPTCHA badge no longer covers the send button. Only relevant if you use reCAPTCHA and embed the chat on another site via the script.<\/p>","1.19.0":"<p>Large uploaded documents (TXT, MD, PDF, DOCX) are now split into parts automatically so each embeds on its own \u2014 no more cutting big files up by hand, and better answers from long documents. Existing entries are unchanged.<\/p>","1.18.1":"<p>Recommended bug-fix release. Fixes embedding that could keep sending requests to your AI provider without end \u2014 and, on a metered API key, keep incurring charges \u2014 when a document could not be embedded (too large, or a PDF with no extractable text). Also stops an oversized document from blocking the rest of a batch, shows why an entry failed to embed, and keeps the message avatar at its intended size. If you have uploaded large documents, update.<\/p>","1.18.0":"<p>Fixes a bug where embedding could keep sending requests to your AI provider without end \u2014 and, on a metered API key, keep incurring charges \u2014 when a document could not be embedded (too large, or a PDF with no extractable text). If you have uploaded large documents, update.<\/p>","1.17.0":"<p>The &quot;Limit reached&quot; usage message can now include a safe subset of HTML (links and basic emphasis) when you enable it, so you can send blocked visitors to a login or upgrade page. Off by default; existing setups are unchanged.<\/p>","1.16.2":"<p>Adds an optional text label beside the launcher icon (for example &quot;Contact us here&quot;) so visitors know what the button does. Leave it empty to keep the icon-only button. New option only; existing setups are unchanged.<\/p>","1.16.1":"<p>Fixes the OpenAI-compatible provider (Qwen\/DashScope, DeepSeek, Zhipu): chat no longer reports &quot;AI API key is not configured&quot; when the key is set. Recommended for anyone using that provider.<\/p>","1.16.0":"<p>Adds an OpenAI-compatible provider (use Alibaba Qwen\/DashScope, DeepSeek, or Zhipu for both chat and RAG) and deep-link auto-send (a ?raplsaich_q= URL opens the chat and sends the question). New features only; existing setups are unchanged.<\/p>","1.15.4":"<p>Stops WordPress repeatedly offering an update you have already installed. Also a shorter plugin name. No behaviour changes.<\/p>","1.15.3":"<p>Fixes a stray &quot;Choose file&quot; upload control that could appear in the public chat widget on some themes. Recommended for all users.<\/p>","1.15.2":"<p>Fixes a JavaScript error that could appear as a chat message after the bot replied on sites running the Pro add-on. Recommended for all Pro users.<\/p>","1.15.0":"<p>Failed AI calls are now classified and visible to admins \u2014 an error badge in the conversation view and a 24-hour provider-error summary in System Health. Recommended for all users.<\/p>","1.14.1":"<p>Chat errors now show their real cause (API key, model, provider, or quota) instead of one generic message, and the custom quota message setting works again. Recommended for all users.<\/p>","1.14.0":"<p>Adds an &quot;Add to knowledge&quot; button on unanswered questions, a &quot;Create draft page&quot; button for generated FAQs, and a dashboard System Health panel. Recommended for all users.<\/p>","1.13.0":"<p>Adds visitor-initiated chat history deletion (privacy), an Unanswered Questions report, a one-click FAQ draft generator, optional GA4 events, and WP-CLI commands. All new data features are off by default. Recommended for all users.<\/p>","1.12.0":"<p>Adds a setup checklist, a demo preview, industry starter templates, page context, a monthly Cost Guard, model fallback, and an optional weekly summary email. Recommended for all users.<\/p>","1.11.1":"<p>Blocked messages now say which limit was reached (quota, credits, token, daily, or rate limit). Recommended for sites using Usage Control.<\/p>","1.11.0":"<p>Adds optional &quot;Grounded Answers Only&quot; (anti-hallucination) and &quot;Usage Control&quot; (per-visitor\/user caps to protect your API spend). Both off by default. Recommended for all users.<\/p>","1.10.0":"<p>Adds an optional &quot;AI-smell score&quot; for Japanese bot replies in the Conversations log (detection only; replies are never changed). Recommended for all users.<\/p>","1.9.4":"<p>Feedback buttons (\ud83d\udc4d\ud83d\udc4e) on bot messages now default to off for new installs. Existing settings are unchanged.<\/p>","1.9.3":"<p>Adds support for Google&#039;s new &quot;AQ.&quot; Gemini API keys (the legacy &quot;AIza&quot; format is being retired by Google) and warns if your current Gemini key needs migrating. Recommended for all Gemini users.<\/p>","1.9.2":"<p>The free onboarding now lets you choose between OpenRouter free models and the Google Gemini free tier, each with an up-front data-handling note. Recommended for all users.<\/p>","1.9.1":"<p>Fixes a chat freeze when AI responses contain markdown tables, and API key deletion on WordPress 7.0 sites. Recommended for all users.<\/p>","1.9.0":"<p>Adds a one-minute onboarding flow that lets new users connect a free OpenRouter API key (no credit card) and start chatting immediately. Includes automatic fallback when free models are rate-limited upstream.<\/p>","1.8.2":"<p>Documentation refresh \u2014 updated description, features, and FAQ. No functional changes.<\/p>","1.8.1":"<p>Fixes a PHP &quot;Undefined array key&quot; warning in the chatbot widget. Recommended for all.<\/p>","1.8.0":"<p>Adds the WordPress 7.0 &quot;AI Client (Connectors)&quot; provider option. Recommended for WordPress 7.0 sites.<\/p>","1.5.0":"<p>Major release: Gutenberg block, Abilities API, language auto-detect. Recommended for all users.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":1,"5":8},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3493381,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3493381,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3493381,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3493381,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"rapls-ai-chatbot\/chatbot":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"rapls-ai-chatbot\/chatbot","version":"1.5.0","title":"AI Chatbot","category":"widgets","icon":"format-chat","description":"Embed an AI chatbot inline on your page.","keywords":["chat","ai","chatbot","assistant","rapls"],"supports":{"html":false,"multiple":false},"attributes":{"height":{"type":"string","default":"500px"},"theme":{"type":"string","default":""},"bot":{"type":"string","default":""}},"textdomain":"rapls-ai-chatbot","editorScript":"file:.\/editor.js","render":"file:.\/render.php"}},"tagged_versions":["1.10.0","1.11.1","1.14.0","1.14.1","1.15.0","1.15.1","1.15.2","1.15.3","1.15.4","1.16.0","1.16.1","1.16.2","1.17.0","1.18.1","1.19.2","1.19.3","1.19.4","1.19.6","1.19.7","1.20.0","1.20.1","1.20.2","1.20.3","1.20.4","1.20.5","1.21.0","1.5.10","1.5.11","1.5.12","1.5.13","1.5.14","1.5.18","1.5.20","1.5.21","1.5.6","1.5.7","1.5.9","1.6.4","1.6.5","1.7.1","1.7.5","1.7.6","1.7.7","1.8.0","1.8.1","1.8.2","1.9.0","1.9.1","1.9.2","1.9.3","1.9.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3594068,"resolution":"1","location":"assets","locale":"","width":800,"height":1074},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3597591,"resolution":"10","location":"assets","locale":"","width":2412,"height":1204},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3597591,"resolution":"2","location":"assets","locale":"","width":1332,"height":1682},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3597591,"resolution":"3","location":"assets","locale":"","width":1832,"height":1684},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3493381,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3493381,"resolution":"5","location":"assets","locale":"","width":1286,"height":800},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3594068,"resolution":"6","location":"assets","locale":"","width":1280,"height":850},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3594068,"resolution":"7","location":"assets","locale":"","width":1280,"height":860},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3594068,"resolution":"8","location":"assets","locale":"","width":1269,"height":800},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3597591,"resolution":"9","location":"assets","locale":"","width":2432,"height":1296}},"screenshots":{"1":"Chat widget \u2014 the front-end chatbot answering a visitor from your site content.","2":"Start for free \u2014 the onboarding panel connects a no-credit-card OpenRouter or Google Gemini free key in about a minute, with each option's data-handling trade-off shown up front.","3":"Dashboard \u2014 setup checklist, conversation\/index\/knowledge stats, System Health panel (API key, cron, REST reachability), and 30-day token usage with an estimated cost.","4":"Knowledge base \u2014 add custom text\/Q&amp;A or import TXT, CSV, MD, PDF, or DOCX files.","5":"Conversations \u2014 review, filter, archive, and export visitor conversations with lead and status details.","6":"Analytics \u2014 conversation, message, cost, and quality metrics (Pro).","7":"Site Learning \u2014 auto-crawl posts, pages, and custom post types so the bot answers from your own content.","8":"AI Settings \u2014 choose your provider (OpenAI, Anthropic Claude, Google Gemini, or OpenRouter), enter your API key, pick a model, and enable Vector Embedding (RAG).","9":"Unanswered Questions \u2014 questions the bot could not answer from your content, with one-click \"Add to knowledge\" and an AI-generated FAQ draft you can save as a draft page.","10":"Cost controls \u2014 Monthly Cost Guard with budget warnings, per-visitor usage limits, and model fallback so API bills never run away."}},"plugin_section":[],"plugin_tags":[191735,2364,216196,242115,70446],"plugin_category":[],"plugin_contributors":[253146],"plugin_business_model":[],"class_list":["post-292250","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-chatbot","plugin_tags-chatbot","plugin_tags-chatgpt","plugin_tags-mcp","plugin_tags-rag","plugin_contributors-rapls","plugin_committers-rapls"],"banners":{"banner":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/banner-772x250.png?rev=3493381","banner_2x":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/banner-1544x500.png?rev=3493381","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/icon-128x128.png?rev=3493381","icon_2x":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/icon-256x256.png?rev=3493381","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-1.png?rev=3594068","caption":"Chat widget \u2014 the front-end chatbot answering a visitor from your site content."},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-2.png?rev=3597591","caption":"Start for free \u2014 the onboarding panel connects a no-credit-card OpenRouter or Google Gemini free key in about a minute, with each option's data-handling trade-off shown up front."},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-3.png?rev=3597591","caption":"Dashboard \u2014 setup checklist, conversation\/index\/knowledge stats, System Health panel (API key, cron, REST reachability), and 30-day token usage with an estimated cost."},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-4.png?rev=3493381","caption":"Knowledge base \u2014 add custom text\/Q&amp;A or import TXT, CSV, MD, PDF, or DOCX files."},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-5.png?rev=3493381","caption":"Conversations \u2014 review, filter, archive, and export visitor conversations with lead and status details."},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-6.png?rev=3594068","caption":"Analytics \u2014 conversation, message, cost, and quality metrics (Pro)."},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-7.png?rev=3594068","caption":"Site Learning \u2014 auto-crawl posts, pages, and custom post types so the bot answers from your own content."},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-8.png?rev=3594068","caption":"AI Settings \u2014 choose your provider (OpenAI, Anthropic Claude, Google Gemini, or OpenRouter), enter your API key, pick a model, and enable Vector Embedding (RAG)."},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-9.png?rev=3597591","caption":"Unanswered Questions \u2014 questions the bot could not answer from your content, with one-click \"Add to knowledge\" and an AI-generated FAQ draft you can save as a draft page."},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-10.png?rev=3597591","caption":"Cost controls \u2014 Monthly Cost Guard with budget warnings, per-visitor usage limits, and model fallback so API bills never run away."}],"raw_content":"<!--section=description-->\n<p><strong>Add an AI chatbot that answers visitors from <em>your own<\/em> content \u2014 and admits when it doesn't know.<\/strong> Rapls AI Chatbot searches your posts, pages, and knowledge base first, then replies in natural language, in the visitor's own language. With Grounded Answers Only mode, if your content has no answer, the bot says so instead of making something up.<\/p>\n\n<p><strong>You can be live in about five minutes, for free, with no credit card.<\/strong> On first setup a guided \"Start for free\" panel hands you a free key from OpenRouter or the Google Gemini free tier, tests it, auto-selects a working model, and switches the chatbot on \u2014 no AI or API experience needed.<\/p>\n\n<p><strong>Watch the setup, start to finish:<\/strong><\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=6mFve1lxvuw<\/p>\n\n<p><strong>No monthly SaaS fee \u2014 and no runaway bill.<\/strong> It runs on your own API key with no markup, and built-in Usage Control caps daily usage per visitor, so you can open the bot to the public without worrying about your API spend. A Monthly Cost Guard lets you set a hard budget, and Model Fallback keeps the bot answering on a lightweight model when your main model hits its quota. Conversations and keys stay on your own server.<\/p>\n\n<p>Built for site owners, agencies, and developers who want control over the model, the data, and the cost. Connect OpenAI, Anthropic Claude, Google Gemini, or OpenRouter, or any OpenAI-compatible endpoint such as Alibaba Tongyi Qwen (DashScope) \u2014 useful where OpenAI and Gemini are hard to reach \u2014 and switch anytime.<\/p>\n\n<h4>Why site owners pick Rapls<\/h4>\n\n<ul>\n<li><strong>Free to try, fast to launch.<\/strong> Guided onboarding gets you from install to a working chatbot in minutes, with a no-credit-card OpenRouter or Gemini key.<\/li>\n<li><strong>Grounded answers, or an honest \"I don't know.\"<\/strong> RAG hybrid search grounds replies in your actual posts, pages, and knowledge base \u2014 and Grounded Answers Only mode keeps the bot from inventing answers your site doesn't contain.<\/li>\n<li><strong>Your bill can't run away.<\/strong> Self-hosted and BYOK with no markup, plus per-visitor daily caps (Usage Control) so public traffic can't drain your API budget.<\/li>\n<li><strong>Replies that don't sound like a robot.<\/strong> An optional AI-smell score reviews the bot's Japanese replies for machine-sounding wording, so you can tune the tone. (Detection only \u2014 replies are never altered.)<\/li>\n<li><strong>No lock-in.<\/strong> Switch between OpenAI, Claude, Gemini, and OpenRouter whenever you want.<\/li>\n<li><strong>Speaks your visitors' language.<\/strong> Automatic multi-language replies, so one bot serves an international audience.<\/li>\n<\/ul>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li>Bring your own key: OpenAI, Anthropic Claude, Google Gemini, OpenRouter, or any OpenAI-compatible endpoint (Alibaba Qwen\/DashScope, DeepSeek, Zhipu), switchable per site.<\/li>\n<li>Site learning: indexes your posts and pages so the bot answers from your content.<\/li>\n<li>Knowledge base: add Q&amp;A or upload TXT\/MD\/PDF\/DOCX files (large documents are split into parts automatically so they embed reliably), with priority over general answers.<\/li>\n<li>RAG hybrid search: combines keyword and semantic retrieval for grounded replies.<\/li>\n<li>Grounded Answers Only: an optional mode that makes the bot reply \"I couldn't find that\" instead of inventing an answer your content doesn't support.<\/li>\n<li>Web search: lets the bot pull current information when configured.<\/li>\n<li>MCP tools: exposes 5 Model Context Protocol tools, so agents such as Claude or ChatGPT can read and act on your site through conversation.<\/li>\n<li>Usage dashboard: tracks conversations, messages, and API cost.<\/li>\n<li>Usage Control: optional per-visitor daily caps so public traffic can't run up your API bill.<\/li>\n<li>Unanswered Questions: records what the bot could not answer, with one-click \"Add to knowledge\" and an AI-drafted FAQ page.<\/li>\n<li>AI-smell score: an optional read-only score that flags machine-sounding wording in Japanese replies (detection only \u2014 replies are never altered).<\/li>\n<li>Industry starter templates: one click applies a ready-made system prompt and preset questions for hotels, shops, clinics, professional services, or company sites.<\/li>\n<li>Gutenberg block: drop the chatbot into any page or post.<\/li>\n<li>Deep-link auto-send: a <code>?raplsaich_q=<\/code> URL opens the chatbot and sends the question automatically, so end-of-article \"suggested questions\" become one-click conversations.<\/li>\n<\/ul>\n\n<h4>Turns visitor questions into content<\/h4>\n\n<p>The bot doesn't just answer \u2014 it tells you what your site is missing. Questions it could not answer from your content are recorded on the dashboard, one click turns them into a knowledge entry, and another click drafts an FAQ page from the last 30 days of real visitor questions. Answer gaps become content, content improves the bot, and the same pages work for SEO and AI search (LLMO).<\/p>\n\n<h4>Self-hosted and private<\/h4>\n\n<p>Conversations and keys stay on your own WordPress install. You are billed by your AI provider directly, so cost is transparent and there is no markup. Visitors can delete their own chat history from the widget (optional), and retention is configurable \u2014 GDPR-friendly by design.<\/p>\n\n<h4>Free and Pro<\/h4>\n\n<p><strong>Free \u2014 not a trial.<\/strong> The free version is the full product: chatbot, site learning, knowledge base, RAG hybrid search, Grounded Answers Only, MCP server (5 tools), a usage dashboard (conversations, messages, and cost), and per-visitor daily caps. Run it forever at no cost on a free-tier key.<\/p>\n\n<p><strong>Pro \u2014 for sites that run the bot as a business tool:<\/strong><\/p>\n\n<ul>\n<li><strong>Lead capture automation<\/strong> \u2014 collect contacts from conversations, with Google Sheets and Slack sync.<\/li>\n<li><strong>Analytics<\/strong> \u2014 conversation, cost, and quality metrics at a glance.<\/li>\n<li><strong>Usage Control suite<\/strong> \u2014 role-based limits, per-user monthly credits with auto-reset, and a usage-control dashboard to grant and track credits, so members and guests each get a fair share of your API budget.<\/li>\n<li><strong>Extra MCP tools<\/strong> \u2014 product-search and analytics tools for AI agents, on top of the five in Free.<\/li>\n<li><strong>Context &amp; embedding controls<\/strong> \u2014 reprocess embeddings and shape the context retrieved for each reply.<\/li>\n<li><strong>LINE integration (add-on)<\/strong> \u2014 connect the chatbot to LINE messaging, the dominant messenger in Japan.<\/li>\n<\/ul>\n\n<h4>Up and running in about 5 minutes (free, no credit card)<\/h4>\n\n<p>You do not need an API key or any AI experience to start. On first setup the plugin shows a \"Start for free\" panel with two no-credit-card paths: an OpenRouter free key or a Google Gemini free-tier key.<\/p>\n\n<ol>\n<li>Pick OpenRouter or Gemini.<\/li>\n<li>Click through to get a free key (about a minute) and paste it in.<\/li>\n<li>Press Test Connection \u2014 the key is validated and saved, a working free model is auto-selected, and the chatbot is switched on.<\/li>\n<\/ol>\n\n<p>That's it. Each option states its data-handling trade-off up front (the Gemini free tier may use submitted content to improve Google's models), so you choose with eyes open. You can switch to your own OpenAI, Claude, or Gemini key at any time.<\/p>\n\n<p>Learn more: <a href=\"https:\/\/raplsworks.com\/plugins\/rapls-ai-chatbot\/\">Plugin details<\/a> | <a href=\"https:\/\/github.com\/rapls\/rapls-ai-chatbot\">Source code (GitHub)<\/a><\/p>\n\n<h4>See it in action<\/h4>\n\n<p>Watch the full setup \u2014 from install to first reply \u2014 in about 5 minutes, no credit card required:<\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=KWEeYuZ0uEg<\/p>\n\n<p>See it answer from your own content, and how that differs from plain ChatGPT:<\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=HgbYr6c_QlI<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the following external third-party services. <strong>No data is sent to any service until you configure an API key and enable the feature in the plugin settings.<\/strong> Each service requires the site administrator to create an account and obtain API credentials. By using these services, you agree to their respective terms and privacy policies listed below.<\/p>\n\n<h4>1. OpenAI (GPT models): AI Provider<\/h4>\n\n<p>Used when you select OpenAI as your AI provider. User messages and optionally site content are sent to generate AI responses.<\/p>\n\n<ul>\n<li>Service URL: <a href=\"https:\/\/api.openai.com\/\">https:\/\/api.openai.com\/<\/a><\/li>\n<li>Terms of Use: <a href=\"https:\/\/openai.com\/terms\/\">https:\/\/openai.com\/terms\/<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/openai.com\/privacy\/\">https:\/\/openai.com\/privacy\/<\/a><\/li>\n<\/ul>\n\n<h4>2. Anthropic (Claude models): AI Provider<\/h4>\n\n<p>Used when you select Anthropic Claude as your AI provider. User messages and optionally site content are sent to generate AI responses.<\/p>\n\n<ul>\n<li>Service URL: <a href=\"https:\/\/api.anthropic.com\/\">https:\/\/api.anthropic.com\/<\/a><\/li>\n<li>Terms of Use: <a href=\"https:\/\/www.anthropic.com\/terms\">https:\/\/www.anthropic.com\/terms<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/www.anthropic.com\/privacy\">https:\/\/www.anthropic.com\/privacy<\/a><\/li>\n<\/ul>\n\n<h4>3. Google (Gemini models): AI Provider<\/h4>\n\n<p>Used when you select Google Gemini as your AI provider. User messages and optionally site content are sent to generate AI responses.<\/p>\n\n<ul>\n<li>Service URL: <a href=\"https:\/\/generativelanguage.googleapis.com\/\">https:\/\/generativelanguage.googleapis.com\/<\/a><\/li>\n<li>Terms of Use: <a href=\"https:\/\/policies.google.com\/terms\">https:\/\/policies.google.com\/terms<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/policies.google.com\/privacy\">https:\/\/policies.google.com\/privacy<\/a><\/li>\n<\/ul>\n\n<h4>4. OpenRouter: AI Provider<\/h4>\n\n<p>Used when you select OpenRouter as your AI provider. OpenRouter is a unified API gateway that routes requests to various AI models.<\/p>\n\n<ul>\n<li>Service URL: <a href=\"https:\/\/openrouter.ai\/api\/\">https:\/\/openrouter.ai\/api\/<\/a><\/li>\n<li>Terms of Use: <a href=\"https:\/\/openrouter.ai\/terms\">https:\/\/openrouter.ai\/terms<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/openrouter.ai\/privacy\">https:\/\/openrouter.ai\/privacy<\/a><\/li>\n<\/ul>\n\n<h4>5. OpenAI-compatible endpoints (e.g. Alibaba Qwen\/DashScope, DeepSeek, Zhipu): AI Provider<\/h4>\n\n<p>Used only if you select the \"OpenAI-compatible\" provider and enter a base URL. User messages, and optionally your site content (including indexed content for RAG embeddings), are sent to the endpoint you configure to generate responses or embeddings. Because the endpoint is chosen by you, please review the terms and privacy policy of the specific provider you connect to. For example, Alibaba Cloud Model Studio (DashScope), which powers Tongyi Qwen:<\/p>\n\n<ul>\n<li>Service URL: <a href=\"https:\/\/www.alibabacloud.com\/help\/en\/model-studio\/\">https:\/\/www.alibabacloud.com\/help\/en\/model-studio\/<\/a><\/li>\n<li>Terms of Use: <a href=\"https:\/\/www.alibabacloud.com\/help\/en\/legal\/\">https:\/\/www.alibabacloud.com\/help\/en\/legal\/<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/www.alibabacloud.com\/help\/en\/legal\/latest\/alibaba-cloud-privacy-policy\/\">https:\/\/www.alibabacloud.com\/help\/en\/legal\/latest\/alibaba-cloud-privacy-policy\/<\/a><\/li>\n<\/ul>\n\n<h4>6. Google reCAPTCHA v3 (Optional)<\/h4>\n\n<p>Used only if you enable reCAPTCHA in the plugin settings for spam protection. The visitor's IP address and interaction data are sent to Google for verification.<\/p>\n\n<ul>\n<li>Service URL: <a href=\"https:\/\/www.google.com\/recaptcha\/\">https:\/\/www.google.com\/recaptcha\/<\/a><\/li>\n<li>Terms of Use: <a href=\"https:\/\/policies.google.com\/terms\">https:\/\/policies.google.com\/terms<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/policies.google.com\/privacy\">https:\/\/policies.google.com\/privacy<\/a><\/li>\n<\/ul>\n\n<h4>7. LINE Messaging API (Pro Add-on, Optional)<\/h4>\n\n<p>Used only if you enable the LINE integration via the Pro add-on. Connects to the LINE Messaging API for chatbot-to-LINE messaging.<\/p>\n\n<ul>\n<li>Service URL: <a href=\"https:\/\/api.line.me\/\">https:\/\/api.line.me\/<\/a><\/li>\n<li>Terms of Use: <a href=\"https:\/\/terms.line.me\/\">https:\/\/terms.line.me\/<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/line.me\/en\/terms\/policy\/\">https:\/\/line.me\/en\/terms\/policy\/<\/a><\/li>\n<\/ul>\n\n<h4>Cross-Site Embed<\/h4>\n\n<p>The plugin includes an optional embed loader script (<code>embed-loader.js<\/code>) for embedding the chatbot on external websites via an iframe. This script does not load any external CDN resources or third-party scripts. It creates an iframe pointing back to your own WordPress site, and all data processing occurs on your server.<\/p>\n\n<h4>Data Transmitted to External Services<\/h4>\n\n<ul>\n<li><strong>User messages<\/strong>: Chat messages entered by visitors (sent to the configured AI provider only)<\/li>\n<li><strong>Site content<\/strong> (if Site Learning is enabled): Excerpts from your published posts\/pages (sent to the configured AI provider)<\/li>\n<li><strong>Knowledge base<\/strong> (if configured): Custom Q&amp;A entries you create (sent to the configured AI provider)<\/li>\n<li><strong>IP address<\/strong> (reCAPTCHA only): Sent to Google for spam verification<\/li>\n<\/ul>\n\n<h4>Data Storage<\/h4>\n\n<ul>\n<li><strong>Conversation history<\/strong>: Stored locally in your WordPress database (can be disabled)<\/li>\n<li><strong>Visitor IP<\/strong>: Stored as SHA-256 hash (not plain text) for rate limiting<\/li>\n<li><strong>Retention<\/strong>: Configurable auto-deletion period (default 90 days)<\/li>\n<\/ul>\n\n<h4>User Controls<\/h4>\n\n<p>You can disable these features in the plugin settings:\n* Conversation history saving\n* Site content crawling\/learning\n* Google reCAPTCHA verification\n* Web search<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>rapls-ai-chatbot<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate via Plugins menu<\/li>\n<li>Go to AI Chatbot &gt; Settings<\/li>\n<li>Follow the onboarding panel to start free with an OpenRouter or Google Gemini key, or paste your own OpenAI \/ Claude \/ Gemini key.<\/li>\n<li>Enable site learning or create knowledge base entries<\/li>\n<li>Insert Gutenberg block or enable sitewide display<\/li>\n<\/ol>\n\n<h4>Getting Started<\/h4>\n\n<ol>\n<li><strong>API Key<\/strong>: get a free OpenRouter or Google Gemini key from the onboarding panel, or your own key from <a href=\"https:\/\/console.anthropic.com\">console.anthropic.com<\/a>, OpenAI, or Google AI Studio.<\/li>\n<li><strong>Enable RAG<\/strong>: add site learning (auto-crawl) or create knowledge base entries.<\/li>\n<li><strong>Customize<\/strong>: set bot name, avatar, welcome message, system prompt.<\/li>\n<li><strong>Deploy<\/strong>: insert the Gutenberg block, paste the shortcode, or enable sitewide display.<\/li>\n<\/ol>\n\n<p>\ud83d\udc49 <strong>Plugin details:<\/strong> <a href=\"https:\/\/raplsworks.com\/plugins\/rapls-ai-chatbot\/\">Rapls AI Chatbot<\/a><\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"my%20api%20key%20stops%20working%20every%20few%20days%20and%20i%20have%20to%20re-enter%20it\"><h3>My API key stops working every few days and I have to re-enter it<\/h3><\/dt>\n<dd><p>The API key (and the Pro license) is encrypted with a key derived from your WordPress security salts (AUTH_KEY \/ AUTH_SALT). If something changes those salts, the stored key can no longer be read. WordPress uses salt values kept in the database whenever the wp-config.php constants are missing, still set to \"put your unique phrase here\", or reused across constants \u2014 and those database values can be regenerated without wp-config.php changing. Security plugins that rotate salts, a failing object cache, and restored database backups are the usual causes; you will normally be logged out of WordPress at the same time.<\/p>\n\n<p>To make the stored keys independent of the salts, add a long random string to wp-config.php, above the \"That's all, stop editing!\" line:<\/p>\n\n<pre><code>define('RAPLSAICH_ENCRYPTION_KEY', 'a-long-random-string-of-at-least-32-characters');\n<\/code><\/pre>\n\n<p>Existing keys are re-encrypted with it automatically the next time you open wp-admin, and they then survive any salt change. Keep the value backed up: losing it means re-entering your API key and license once.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20for%20free%3F\"><h3>Can I use it for free?<\/h3><\/dt>\n<dd><p>Yes \u2014 the plugin is free, and the onboarding panel connects a no-credit-card OpenRouter or Google Gemini free-tier key in about a minute. Free tiers have rate limits, so for production traffic you may want your own provider key.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20api%20key%3F\"><h3>Do I need an API key?<\/h3><\/dt>\n<dd><p>Yes. Rapls runs on your own API key so your data and cost stay under your control. If you do not have one, the plugin guides you to a free OpenRouter key or a free Google Gemini key on first setup \u2014 both need no credit card.<\/p><\/dd>\n<dt id=\"will%20the%20bot%20make%20things%20up%3F\"><h3>Will the bot make things up?<\/h3><\/dt>\n<dd><p>Not if you don't want it to. Turn on Grounded Answers Only and the bot replies \"I couldn't find that on this site\" whenever your content has no relevant answer, instead of answering from the model's general knowledge.<\/p><\/dd>\n<dt id=\"can%20visitors%20run%20up%20my%20api%20bill%3F\"><h3>Can visitors run up my API bill?<\/h3><\/dt>\n<dd><p>No. Usage Control caps daily usage per guest and per logged-in user on the server side, separate from rate limiting. Pro adds role-based limits and per-user credits.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20ai%20agents%20%28mcp%29%3F\"><h3>Does it work with AI agents (MCP)?<\/h3><\/dt>\n<dd><p>Yes. The free version ships an MCP (Model Context Protocol) server with 5 tools, so AI agents such as Claude or ChatGPT can search your posts, read knowledge entries, and act on your site through conversation. Pro adds product-search and analytics tools on top.<\/p><\/dd>\n<dt id=\"is%20my%20data%20private%20on%20the%20free%20options%3F\"><h3>Is my data private on the free options?<\/h3><\/dt>\n<dd><p>It depends on the provider you choose, and the plugin tells you before you pick. OpenRouter free models are served by various upstream providers, each with its own data-handling policy. The Google Gemini free tier may use your submitted content to improve Google's models \u2014 if you do not want that, use a paid Gemini tier or another provider. Either way, your conversations and keys are stored on your own WordPress install, not on Rapls servers.<\/p><\/dd>\n<dt id=\"my%20gemini%20key%20starts%20with%20%22aq.%22%20instead%20of%20%22aiza%22%20%E2%80%94%20is%20that%20ok%3F\"><h3>My Gemini key starts with \"AQ.\" instead of \"AIza\" \u2014 is that OK?<\/h3><\/dt>\n<dd><p>Yes. Google is moving Gemini API keys from the legacy \"AIza\" standard format to the new \"AQ.\" auth format, and Google AI Studio now issues \"AQ.\" keys by default. Rapls works with both. Google is retiring the standard format (unrestricted \"AIza\" keys are rejected from 2026-06-19, and all \"AIza\" keys from 2026-09), so if you still have an \"AIza\" key the plugin shows a notice with how to migrate. New keys created today are already \"AQ.\" keys and need no action.<\/p><\/dd>\n<dt id=\"can%20i%20use%20multiple%20ai%20providers%3F\"><h3>Can I use multiple AI providers?<\/h3><\/dt>\n<dd><p>Yes. Configure multiple providers in Settings and switch between them. WordPress 7.0 Connectors API also supports unified key management.<\/p><\/dd>\n<dt id=\"does%20it%20crawl%20my%20entire%20site%20automatically%3F\"><h3>Does it crawl my entire site automatically?<\/h3><\/dt>\n<dd><p>Yes. Enable \"Site Learning\" in Settings to crawl published content (posts, pages, custom post types, WooCommerce products). Configure crawl scope and frequency.<\/p><\/dd>\n<dt id=\"can%20i%20embed%20on%20external%20sites%3F\"><h3>Can I embed on external sites?<\/h3><\/dt>\n<dd><p>Yes. Configure cross-site embed in Display Settings. Use iframe or script loader.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20up%20wordpress%207.0%20connectors%20api%3F\"><h3>How do I set up WordPress 7.0 Connectors API?<\/h3><\/dt>\n<dd><p>In Settings &gt; AI Settings, Connectors UI appears if WP 7.0 is active. Register your Claude API key once; all Connectors-compatible plugins access it.<\/p><\/dd>\n<dt id=\"is%20there%20conversation%20history%3F\"><h3>Is there conversation history?<\/h3><\/dt>\n<dd><p>Yes. Data Management tab lets you save\/review all conversations. Configure retention period (30\/90\/365 days or indefinite).<\/p><\/dd>\n<dt id=\"troubleshooting%3A%20chat%20not%20appearing%3F\"><h3>Troubleshooting: chat not appearing?<\/h3><\/dt>\n<dd><ul>\n<li>Verify API key is valid (test in Settings)<\/li>\n<li>Check Gutenberg block or Display Settings (enable sitewide)<\/li>\n<li>Review Security Diagnostics for rate limit, IP detection, or consent issues<\/li>\n<\/ul><\/dd>\n<dt id=\"more%20questions%3F\"><h3>More questions?<\/h3><\/dt>\n<dd><p>See <a href=\"https:\/\/raplsworks.com\/plugins\/rapls-ai-chatbot\/\">Plugin details<\/a> or <a href=\"https:\/\/wordpress.org\/support\/plugin\/rapls-ai-chatbot\/\">WordPress.org Support<\/a><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.21.0<\/h4>\n\n<ul>\n<li>Fixed: Gemini 2.0 Flash, the default Gemini model, was shut down by Google on June 1, 2026, and Gemini 2.0 Flash-Lite and Gemini 3 Pro Preview have been shut down as well. A site still set to one of them now sends its chats to Google's replacement (Gemini 3.6 Flash, Gemini 3.1 Flash-Lite and Gemini 3.1 Pro Preview), and wp-admin says so until a model is chosen again. New installs use Gemini 3.5 Flash-Lite. The saved setting is not changed for you.<\/li>\n<li>Fixed: OpenAI shut down o3-mini on October 1, 2026, and shuts down GPT-4.1 nano and o4-mini on October 23 and GPT-5, GPT-5 mini, GPT-5 nano, GPT-5 Pro and o3 on December 11. From each date, a site still set to one of these models sends its chats to OpenAI's replacement (GPT-5.6 Sol, Terra or Luna). Claude Sonnet 4.5, which Anthropic retires on November 30, 2026, moves to Claude Sonnet 5.5 the same way.<\/li>\n<li>Added: a warning, on the settings screen and on the plugin's own admin screens, when the selected model has an announced retirement date. It says when, and which model will answer afterwards.<\/li>\n<li>Added: GPT-6 Astra, GPT-6.1 Sol, GPT-6 Luna and GPT-5.6 Sol, Terra and Luna; Claude Sonnet 5.5 (now the recommended Sonnet) and Claude Opus 5.5; Gemini 3.8 Flash (now recommended), 3.7 Flash, 3.6 Flash, 3.5 Flash, 3.5 Flash-Lite and 3.1 Flash-Lite. Models that are shut down or scheduled to be are removed from the lists; a site still using one keeps it selected, and a save no longer switches it to the first model in the list.<\/li>\n<li>Changed: retired Claude Sonnet and Opus models now go to Claude Sonnet 5.5 and Claude Opus 5.5 instead of the 4.6 models.<\/li>\n<li>Changed: GPT-6 and Gemini 3 models are sent without temperature (GPT-6 rejects it, and Google advises against lowering it on Gemini 3) and get more room for thinking, so replies are not cut off. Claude models that think by default, such as Sonnet 5.5 and Opus 5.5, are asked for low effort.<\/li>\n<li>Fixed: with web search on and nothing found in the site's content, Claude Opus 5.5 and Claude Fable 5.1 returned an error, because the plugin forced the search tool, which those models do not accept. They are now told to search in the prompt instead.<\/li>\n<li>Fixed: the OpenAI-compatible list offered deepseek-chat, which DeepSeek discontinued on July 24, 2026, and glm-4-plus, which no longer answers; the OpenRouter list offered deepseek\/deepseek-chat-v3, which does not exist. They are replaced by deepseek-flash, glm-5.3, qwen3.8-max and deepseek\/deepseek-chat, and the OpenRouter Claude entry is now Claude Sonnet 4.6. The model field's help text no longer names DeepSeek or GLM models, which change too often.<\/li>\n<li>Fixed: usage costs. GPT-4.1 models were counted at the GPT-4 price, up to 150 times too high, which could stop the chat early under Pro's monthly budget limit, and most current OpenAI, Claude and Gemini models had no price, so GPT-5.2 Pro, for example, was counted at about 1\/280 of its cost. Prices now follow each provider's pricing page.<\/li>\n<li>Changed: Model Fallback uses Gemini 3.1 Flash-Lite, and the free-tier setup picks a Gemini 3 Flash-Lite model, because Google now serves Gemini 2.5 only to projects that already used it.<\/li>\n<\/ul>\n\n<h4>1.20.5<\/h4>\n\n<ul>\n<li>Fixed: Claude Sonnet 4 and Claude Opus 4.1 were retired by Anthropic (June 15 and August 5, 2026) and stopped answering. Visitors saw \"The AI model is currently unavailable. Please contact the site administrator.\", and nothing in wp-admin said why. A site still set to a retired Claude model now sends its chats to the successor (Sonnet 4 to Sonnet 4.6, Opus 4 and 4.1 to Opus 4.6, Claude 3 Haiku models to Haiku 4.5), and wp-admin shows a notice until a model is chosen again. The saved setting is not changed for you. The same applies to a model typed in for a Pro bot.<\/li>\n<li>Added: Claude Sonnet 4.6, now the recommended Sonnet model. Claude Sonnet 4 and Claude Opus 4.1 are removed from the model list.<\/li>\n<li>Fixed: when the saved model was no longer in the list, the settings screen showed the first model instead, so saving the page for any other reason quietly switched the site to Claude Opus 4.6. It now shows the model that is actually answering.<\/li>\n<li>Fixed: usage costs for Claude Haiku 4.5, the default model, were counted at three times the real price, and Claude Opus 4.5 and 4.6 were also priced wrongly, so the Pro monthly budget limit could stop the chat early. Prices now follow Anthropic's pricing page.<\/li>\n<li>Changed: temperature is sent only to Claude models that accept it. Claude Opus 4.7 and later and Claude Sonnet 5 reject it, which matters for a model typed in for a Pro bot.<\/li>\n<\/ul>\n\n<h4>1.20.4<\/h4>\n\n<ul>\n<li>Fixed: the Site Learning screen said it learns custom fields. Since 1.19.3 custom fields are not indexed unless a site names them with the raplsaich_crawl_indexed_meta_keys filter, so the description now lists posts, pages and custom post types only. The Japanese translation of the same sentence, which repeated itself, is corrected too.<\/li>\n<\/ul>\n\n<h4>1.20.3<\/h4>\n\n<ul>\n<li>Fixed: an English question could pull in an unrelated page because an everyday word in it was enough for the keyword index to match. \"I need a stairlift\" searched for \"need\" as well, and \"need\" appears on most pages, so whichever page used it could come back as a result \u2014 and as a reference card. The English stopword list had 20 words and kept pronouns, prepositions, auxiliaries and opening verbs; it now covers them. Words that carry meaning on a real site (help, support, cost, price, service and the like) are deliberately still searched for. Japanese questions are unaffected.<\/li>\n<li>Fixed: when every word of an English question was a stopword (\"how do I know?\"), the remaining text was glued together into one keyword (\"howdoIknow\") that matches nothing. The plugin now searches for nothing in that case and leaves the answer to vector search. Japanese, which is written without spaces, still joins the remaining text as before. Thanks to @slafever for the report that led to both.<\/li>\n<\/ul>\n\n<h4>1.20.2<\/h4>\n\n<ul>\n<li>Fixed: with the Pro response cache and Pro message encryption both on, a repeated question could be answered with a long encrypted string (starting \"encg:\") instead of the reply. Every other place that reads stored messages decrypts them first; the cache lookup returned the stored row as-is. It now decrypts too, and an entry that cannot be decrypted is treated as a cache miss so a fresh answer is generated \u2014 encrypted text is never shown in the chat.<\/li>\n<li>Fixed: when the reCAPTCHA secret key could no longer be decrypted (for example after the WordPress security salts changed), every chat message was refused and visitors only saw \"This feature is currently unavailable.\" with no warning in wp-admin, because the decryption notice only checked the AI provider's API key. A separate notice now tells administrators to re-enter the reCAPTCHA secret key.<\/li>\n<li>Improved: the decryption notice no longer claims a key \"was most likely encrypted on another site\" when the salts are unchanged. The recorded fingerprint belongs to whichever key was saved last, so it now lists every way a value can be left under an old key. Thanks to Sander Rombout for the detailed report.<\/li>\n<\/ul>\n\n<h4>1.20.1<\/h4>\n\n<ul>\n<li>Fixed: a request rejected as automated (added in 1.19.7) showed the vague \"This feature is currently unavailable.\" message, because the <code>bot_request<\/code> error code had no entry in the message map. It now says the request looked automated and who to contact, which matters for the rare visitor whose browser is misidentified.<\/li>\n<\/ul>\n\n<h4>1.20.0<\/h4>\n\n<ul>\n<li>Added: <code>RAPLSAICH_ENCRYPTION_KEY<\/code> \u2014 an optional wp-config.php constant that decouples the stored API key and Pro license from the WordPress security salts. Sites whose salts are rotated (by a security plugin, a failing object cache, or a restored database) lost both every few days and had to re-enter them. Define the constant and existing keys are re-encrypted with it on the next wp-admin request; they then survive any salt change. Nothing changes for sites that do not define it. See the FAQ for details.<\/li>\n<li>Improved: the \"API key decryption failed\" notice now names the likely cause. It compares the current salts against a fingerprint recorded when the key was saved, so it can tell \"your salts changed on \" apart from \"your salts are unchanged, so this key was encrypted on another site\" instead of listing both possibilities. Thanks to Sander Rombout for the detailed report.<\/li>\n<\/ul>\n\n<h4>1.19.7<\/h4>\n\n<ul>\n<li>Fixed: search-engine crawlers that run JavaScript (for example Baiduspider-render) could create fake conversations. When a crawler followed a deep link such as <code>?raplsaich_q=\u2026<\/code>, the question was sent automatically, so every crawl showed up under Conversations as a new visitor and triggered a real AI request. Each crawl gets a new session, so per-visitor limits did not stop it. Known crawlers and automated browsers no longer auto-send deep-link questions, and the server refuses chat requests from crawler User-Agents before the AI is called or anything is saved. Developers can adjust detection with the new raplsaich_is_bot_request filter. Thanks to xyp for the detailed report.<\/li>\n<\/ul>\n\n<h4>1.19.6<\/h4>\n\n<ul>\n<li>Fixed: with the optional \"iOS keyboard fix\" enabled, opening the chat on desktop locked the background page at the top \u2014 the page could not be scrolled until the chat was closed. The scroll-cancel that keeps the mobile full-screen chat pinned was running on desktop too, where the widget is only a small floating panel. It is now limited to the mobile view, matching the body lock it belongs to. No effect unless \"iOS keyboard fix\" is turned on. Thanks to @slafever for the detailed report.<\/li>\n<\/ul>\n\n<h4>1.19.5<\/h4>\n\n<ul>\n<li>Fixed: a reference card below an answer could point to an unrelated page when the answer was actually grounded in a different page found by vector search. Reference cards and the sources list only showed pages that keyword search matched, so a page found only by semantic (vector) search \u2014 often the very page the answer came from \u2014 could never appear, and a weaker keyword hit was shown in its place. Vector matches that clear the grounding score are now eligible for reference cards and sources, so the card reflects the page the answer is based on. Only affects sites with Vector Search enabled. Thanks to @slafever for the detailed report.<\/li>\n<\/ul>\n\n<h4>1.19.4<\/h4>\n\n<ul>\n<li>Fixed: System Health showed \"Last crawl: Never run yet\" even though Site Learning was crawling on schedule and the content index was growing. The scheduled crawler runs incrementally \u2014 one batch per run, resuming across runs \u2014 but the \"Last crawl\" time was only recorded when an entire sweep finished (every post type, every batch). On sites where a sweep spans several runs (many post types, or a type with more than 100 posts) the field could sit at \"Never run yet\" for days while crawls were in fact running. Each crawl run now records its own timestamp, so the status reflects the most recent run. Thanks to @slafever for the detailed report.<\/li>\n<\/ul>\n\n<h4>1.19.3<\/h4>\n\n<ul>\n<li>Fixed: Site Learning (the site crawler) was adding third-party plugin metadata to the indexed content of a page, and it could surface in chatbot answers and reference cards. It walked every public custom field on a post and appended it under \"Additional Info\", filtering out only keys that start with an underscore. Plugins such as Rank Math SEO and page-builder themes store their data under plain keys (for example rank_math_focus_keyword or a theme's section layout flags), so that data slipped through and ended up in the knowledge base even though it never appeared in the page's visible content. The crawler no longer indexes arbitrary post meta; it indexes the title, excerpt, taxonomy terms, and page body. If you deliberately keep content in a custom field, you can opt specific keys back in with the new raplsaich_crawl_indexed_meta_keys filter. Run Site Learning again after updating to overwrite already-indexed pages. Thanks to @slafever for the detailed report.<\/li>\n<\/ul>\n\n<h4>1.19.2<\/h4>\n\n<ul>\n<li>Fixed: In the cross-site script embed, the close (\u00d7) button did nothing on other domains, so visitors could not close the chat. The chat window notified the host page to close via a browser message addressed to the wrong origin (this plugin's own site instead of the page it was embedded on), so the browser dropped it. The embed now sends the message to the host page's own origin, and the close button works on any site. Embedding the chat on its own site was unaffected.<\/li>\n<\/ul>\n\n<h4>1.19.1<\/h4>\n\n<ul>\n<li>Fixed: In the cross-site script embed, the Google reCAPTCHA v3 badge (shown when reCAPTCHA is enabled) could sit on top of the send button. Google pins the badge to the bottom-right corner, and the embedded chat window is narrow, so the badge landed right where the send button is. The badge is now lifted above the input bar so it no longer covers the send button. No change if you do not use reCAPTCHA.<\/li>\n<\/ul>\n\n<h4>1.19.0<\/h4>\n\n<ul>\n<li>Added: Large uploaded documents are now split into parts automatically. Until now a document had to fit the embedding model's single-request token limit or it would not embed; now the Knowledge Base splits a big TXT, MD, PDF, or DOCX into smaller parts on upload, and each part embeds on its own. You no longer need to cut a file up by hand before uploading. The Knowledge Base list shows the document as one item with a \"parts embedded\" badge, and deleting it removes every part. This also improves answers: the bot retrieves the most relevant passage of a long document instead of one blurred embedding of the whole thing. Existing entries are untouched \u2014 re-upload a document to split it.<\/li>\n<\/ul>\n\n<h4>1.18.1<\/h4>\n\n<ul>\n<li>Fixed: The bot avatar beside a message could occasionally render at full size (very large) on sites where a caching or CSS-optimization plugin combined and minified stylesheets. The avatar wrapper is now sized directly, so the icon stays at its intended size even if that one rule is dropped. If you see it oversized after updating, clear your caching plugin's cache once.<\/li>\n<\/ul>\n\n<h4>1.18.0<\/h4>\n\n<ul>\n<li><strong>Fixed: embedding could loop indefinitely, sending requests to your provider without end.<\/strong> The client kept asking for more as long as documents remained unembedded, so a single document that could never embed \u2014 one over the model's token limit, or a PDF with no extractable text \u2014 put the loop in a state it could not leave. On a metered API key that meant requests, and charges, with nothing to show for them. Permanent failures are now excluded from the next pass and the loop ends when it stops making progress. If you have uploaded a large document and left the Knowledge Base screen open, update.<\/li>\n<li>Fixed: Knowledge Base entries that failed to embed used to index silently \u2014 you saw 0 chunks with no reason. Each entry that cannot be embedded now shows why on the Knowledge Base list (for example, \"Too large to embed \u2014 split this entry into smaller documents\", or an API-key\/rate-limit note). Thanks to @publiastel for the clear report.<\/li>\n<li>Improved: When you embed several documents at once and one is too large for the embedding model's single-request limit, the oversized document no longer sinks the whole batch. The rest embed normally, and only the oversized one is flagged. Split it into smaller entries and it will embed on the next run.<\/li>\n<\/ul>\n\n<h4>1.17.0<\/h4>\n\n<ul>\n<li>Added: Optional HTML in the \"Limit reached\" message (Security, Usage Control). Turn on \"Allow a safe HTML subset\" to use links and basic emphasis in that message \u2014 for example, point a blocked visitor to a login or upgrade page: Please <a href=\"\/login\">log in<\/a> or go <a href=\"\/vip\">VIP<\/a>. Only a small allowlist is permitted (<a href>, <br \/>, <strong>, <em>); everything else is stripped on save, and the widget scrubs the message again before rendering. Off by default, so existing setups are unchanged.<\/em><\/strong><\/a><\/li>\n<\/ul>\n\n<h4>1.16.2<\/h4>\n\n<ul>\n<li>Added: Badge label. You can now show a short line of text next to the launcher icon \u2014 for example \"Contact us here\" \u2014 so first-time visitors understand what the button does instead of seeing an icon alone. Set it under Settings, Badge Label; leave it empty to keep the icon-only circle. The label is hidden on phones to save space.<\/li>\n<\/ul>\n\n<h4>1.16.1<\/h4>\n\n<ul>\n<li>Fixed: With the OpenAI-compatible provider selected (e.g. Alibaba Qwen\/DashScope), the chat widget returned \"AI API key is not configured\" even though the key was saved and Test Connection succeeded. The pre-send key check did not recognize the new provider and looked for an OpenAI key instead of the OpenAI-compatible one. Chat now reads the correct key. No settings changes are needed.<\/li>\n<\/ul>\n\n<h4>1.16.0<\/h4>\n\n<ul>\n<li>Added: OpenAI-compatible provider. Connect any service that speaks the OpenAI Chat Completions API \u2014 including Chinese providers such as Alibaba Tongyi Qwen (DashScope), DeepSeek, and Zhipu GLM \u2014 by entering a base URL, a model name, and an API key. Vector embeddings (RAG) are supported as well, so sites that cannot reach OpenAI or Gemini (for example inside mainland China) can run both chat and RAG on a domestic provider such as Qwen. When the embedding provider is set to Auto and chat runs on the OpenAI-compatible provider, embeddings use that same vendor. Changing the embedding provider now warns you to clear and regenerate embeddings.<\/li>\n<li>Added: Deep-link auto-send. A URL such as <code>?raplsaich_q=your+question<\/code> (a plain <code>?q=<\/code> also works) opens the chatbot and sends that question automatically, with no typing or copy-paste \u2014 ideal for turning end-of-article \"suggested questions\" into one-click conversations. The question is shown as a normal visitor message, and the parameter is removed from the URL after sending so a refresh does not resend it.<\/li>\n<\/ul>\n\n<p>Older versions (1.15.4 and earlier) are listed in <a href=\"https:\/\/plugins.svn.wordpress.org\/rapls-ai-chatbot\/trunk\/changelog.txt\">changelog.txt<\/a>.<\/p>","raw_excerpt":"Answers from your own posts and pages, says so when it doesn&#039;t know, and stops at the spending limit you set. Works with OpenAI, Claude or Gemini.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/292250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=292250"}],"author":[{"embeddable":true,"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rapls"}],"wp:attachment":[{"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=292250"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=292250"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=292250"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=292250"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=292250"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lij.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=292250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}