{"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-03-28T14:59:09","modified_gmt":"2026-03-28T14:59:09","slug":"rapls-ai-chatbot","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/rapls-ai-chatbot\/","author":23425763,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.6","stable_tag":"1.5.6","tested":"6.9.4","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Rapls AI Chatbot","header_author":"Rapls Works","header_description":"AI Chatbot plugin with OpenAI\/Claude\/Google support and automatic site content learning.","assets_banners_color":"9386f3","last_updated":"2026-03-28 14:59:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/raplsworks.com\/rapls-ai-chatbot-guide\/","header_author_uri":"https:\/\/raplsworks.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":67,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.6":{"tag":"1.5.6","author":"rapls","date":"2026-03-28 14:59:09"}},"upgrade_notice":{"1.5.6":"<p>Response Language setting fix: AI now correctly responds in the configured language. Recommended for all users.<\/p>","1.5.5":"<p>Major update: Complete Free\/Pro code separation, 50% smaller frontend JS, security hardening (CSS escaping, output sanitization), and unique prefix. Recommended for all users.<\/p>","1.5.2":"<p>Plugin Check compliance fixes and artificial limits removed. Recommended update.<\/p>","1.5.0":"<p>Major update: Gutenberg block, Abilities API, language auto-detect, OpenRouter. Recommended update for all users.<\/p>","1.4.0":"<p>Feature release: Web search integration (AI auto-searches the web when knowledge base is insufficient), cross-site embed support, PDF\/DOCX knowledge upload, vector embedding hybrid search, and updated AI model lists. Recommended update for all users.<\/p>","1.3.2":"<p>Security hardening: session ID header transport, XSS prevention via DOM API, rate-limited logging, and offline message dedup. <strong>Breaking change:<\/strong> GET requests no longer accept <code>?session_id=<\/code> \u2014 use the <code>X-RAPLSAICH-Session<\/code> header instead. Recommended update for all users.<\/p>","1.3.1":"<p>Enhanced rate limiting, server-side PDF export, and diagnostic option namespace migration (<code>raplsaich_diag_*<\/code>). Recommended update for all users.<\/p>","1.3.0":"<p>Major feature release: Response caching, audit logs, conversion tracking, offline messages, and answer templates. Reduces API costs and adds business-critical Pro features. Recommended update for all users.<\/p>","1.2.23":"<p>Sortable admin tables, knowledge base draft workflow, enhanced content extraction, and session management improvements. Recommended update for all users.<\/p>","1.2.22":"<p>Improved AI chat accuracy with better default prompts. All feature prompts now customizable. Added raplsaich_system_prompt filter. Recommended update for all users.<\/p>","1.2.21":"<p>Added knowledge base export support, budget management integration, and comprehensive debugging guide. Recommended update for Pro users.<\/p>","1.2.20":"<p>Knowledge page prefill support for quick FAQ creation from analytics.<\/p>","1.2.18":"<p>Security and performance improvements. Fixed message duplication bug affecting AI response accuracy. Recommended update for all users.<\/p>","1.2.5":"<p>Security and code quality improvements. Recommended update for all users.<\/p>","1.0.0":"<p>Initial release of Rapls AI Chatbot. Configure your AI provider API key to get started.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3493381,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3493381,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3493381,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3493381,"resolution":"772x250","location":"assets","locale":""}},"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.5.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3493381,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3493381,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3493381,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3493381,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3493381,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3493381,"resolution":"6","location":"assets","locale":""},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3493381,"resolution":"7","location":"assets","locale":""}},"screenshots":{"1":"Dashboard \u2014 Overview of conversations, messages, and usage statistics with cost tracking","2":"Settings \u2014 Configure AI provider, model selection, and chat behavior","3":"Site Learning \u2014 Automatic content indexing and manual learning controls","4":"Knowledge Base \u2014 Custom Q&amp;A management with priority levels and PDF\/DOCX upload","5":"Conversation History \u2014 View and manage all chat conversations","6":"Chatbot Widget \u2014 Clean, modern chat interface on your website","7":"Analytics Dashboard (Pro) \u2014 Conversation insights, satisfaction tracking, and FAQ analysis"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[2353,2364,229563,224606,194533],"plugin_category":[],"plugin_contributors":[253146],"plugin_business_model":[],"class_list":["post-292250","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chatbot","plugin_tags-claude","plugin_tags-gemini","plugin_tags-openai","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=3493381","caption":"Dashboard \u2014 Overview of conversations, messages, and usage statistics with cost tracking"},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-2.png?rev=3493381","caption":"Settings \u2014 Configure AI provider, model selection, and chat behavior"},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-3.png?rev=3493381","caption":"Site Learning \u2014 Automatic content indexing and manual learning controls"},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-4.png?rev=3493381","caption":"Knowledge Base \u2014 Custom Q&amp;A management with priority levels and PDF\/DOCX upload"},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-5.png?rev=3493381","caption":"Conversation History \u2014 View and manage all chat conversations"},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-6.png?rev=3493381","caption":"Chatbot Widget \u2014 Clean, modern chat interface on your website"},{"src":"https:\/\/ps.w.org\/rapls-ai-chatbot\/assets\/screenshot-7.png?rev=3493381","caption":"Analytics Dashboard (Pro) \u2014 Conversation insights, satisfaction tracking, and FAQ analysis"}],"raw_content":"<!--section=description-->\n<p>Rapls AI Chatbot add an AI chatbot to your site with OpenAI, Claude, Gemini, or OpenRouter. Includes site learning, knowledge base, and web search.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Multiple AI Providers<\/strong> \u2014 OpenAI, Anthropic Claude, Google Gemini, and OpenRouter (100+ models via single API key)<\/li>\n<li><strong>Web Search<\/strong> \u2014 AI automatically searches the web when the knowledge base lacks a sufficient answer, using each provider's built-in capability (OpenAI web_search_preview, Claude web_search, Gemini google_search)<\/li>\n<li><strong>Site Learning<\/strong> \u2014 Crawl and index your website content (posts, pages, custom post types, WooCommerce products) for context-aware responses<\/li>\n<li><strong>Vector Embedding RAG<\/strong> \u2014 Hybrid search combining keyword matching (40%) and vector similarity (60%) for accurate retrieval<\/li>\n<li><strong>Custom Knowledge Base<\/strong> \u2014 Add Q&amp;A pairs, free-form content, PDF\/DOCX uploads with priority levels and draft\/published workflow<\/li>\n<li><strong>MCP Server<\/strong> \u2014 7 built-in tools via JSON-RPC 2.0 for AI agent integration (Claude Desktop, Cursor, VS Code)<\/li>\n<li><strong>WordPress Abilities API<\/strong> \u2014 Auto-register MCP tools as WordPress Abilities for discovery by MCP Adapters<\/li>\n<li><strong>Gutenberg Block<\/strong> \u2014 Insert AI Chatbot block in the block editor with height, theme, and bot-id settings; SSR support<\/li>\n<li><strong>Response Language Auto-detect<\/strong> \u2014 Automatically detect browser language for welcome message and AI responses<\/li>\n<li><strong>Cross-site Embed<\/strong> \u2014 Embed the chatbot on external sites via iframe or script loader<\/li>\n<li><strong>Conversation History<\/strong> \u2014 Save and review all chat conversations with configurable retention<\/li>\n<li><strong>Usage Statistics<\/strong> \u2014 Track token usage and estimated API costs with visual charts and provider breakdown<\/li>\n<li><strong>Feedback &amp; Regeneration<\/strong> \u2014 Users can rate responses (thumbs up\/down) and request regeneration<\/li>\n<li><strong>6 Built-in Themes<\/strong> \u2014 Default, Simple, Classic, Light, Minimal, Flat<\/li>\n<li><strong>Security<\/strong> \u2014 reCAPTCHA v3, rate limiting, consent mode, Cloudflare support, security diagnostics<\/li>\n<li><strong>Settings Import\/Export<\/strong> \u2014 Backup and restore all settings as JSON<\/li>\n<li><strong>Multilingual<\/strong> \u2014 Japanese translation included; welcome messages configurable in 13 languages<\/li>\n<\/ul>\n\n<h4>Supported AI Models<\/h4>\n\n<p><strong>OpenAI:<\/strong>\n* GPT-5.2, GPT-5.1, GPT-5 series (Latest generation)\n* GPT-4.1 series (Long context, 1M tokens)\n* GPT-4o, GPT-4o-mini (Multimodal)\n* o1, o3, o4-mini (Reasoning models)<\/p>\n\n<p><strong>Anthropic Claude:<\/strong>\n* Claude Opus 4.6 (Most powerful)\n* Claude Sonnet 4.5 (Recommended \u2014 fast and powerful)\n* Claude Haiku 4.5 (Recommended \u2014 fastest)\n* Claude Opus 4.5, Opus 4.1, Sonnet 4, 3.7 Sonnet<\/p>\n\n<p><strong>Google Gemini:<\/strong>\n* Gemini 3 Pro\/Flash (Preview, latest)\n* Gemini 2.5 Pro\/Flash (Recommended)\n* Gemini 2.0 Flash (Stable)\n* Gemini 1.5 Pro\/Flash (Legacy)<\/p>\n\n<p><strong>OpenRouter:<\/strong>\n* Access 100+ models from multiple providers through a single API key<\/p>\n\n<h4>Dashboard<\/h4>\n\n<p>The dashboard provides an at-a-glance overview of your chatbot's activity:<\/p>\n\n<ul>\n<li>Statistics cards: total conversations, today's messages, indexed pages, knowledge entries, monthly AI responses with usage limit<\/li>\n<li>Status indicators: AI provider, site learning, conversation history<\/li>\n<li>API usage statistics (past 30 days): total tokens, input\/output tokens, estimated cost, daily usage chart, provider breakdown<\/li>\n<\/ul>\n\n<h4>Settings (5 Tabs)<\/h4>\n\n<p><strong>AI Settings<\/strong> \u2014 Configure your AI provider, model, and API key. Enable vector search (RAG) with embedding provider. Set up MCP server with API key generation and Claude Desktop configuration example.<\/p>\n\n<p><strong>Chat Settings<\/strong> \u2014 Customize bot name, avatar (emoji or image), welcome messages (13 languages: English, Japanese, Chinese, Korean, Spanish, French, German, Portuguese, Italian, Russian, Arabic, Thai, Vietnamese), system prompt, response language, message history count, feedback buttons, and API quota error message. Advanced: context prompts for knowledge matching, Q&amp;A format, and site learning; feature prompts for regeneration instructions, good\/bad example learning, and conversation summary.<\/p>\n\n<p><strong>Display Settings<\/strong> \u2014 Choose from 6 free themes (Default, Simple, Classic, Light, Minimal, Flat). Configure badge position (4-corner grid), margins, primary\/secondary colors, mobile display, Markdown rendering, typing indicator, maximum input length, page exclusion, footer text, and cross-site embed options (script or iframe).<\/p>\n\n<p><strong>Security Settings<\/strong> \u2014 Enable reCAPTCHA v3 with site key, secret key, and score threshold. Configure access control: consent strict mode, rate limiting, Cloudflare integration, reverse proxy trust, reCAPTCHA failure mode. View security diagnostics (read-only): allowed origins, trusted proxies, IP detection, API key status, WP Consent API, rate limiting, reCAPTCHA, SSL\/TLS, CSRF.<\/p>\n\n<p><strong>Data Management<\/strong> \u2014 Enable\/disable conversation history with configurable retention period. Import\/export settings (optionally including knowledge base). Reset all settings to defaults.<\/p>\n\n<h4>Knowledge Base<\/h4>\n\n<ul>\n<li>Add entries as text: title, content, category, priority level<\/li>\n<li>File import: .txt, .csv, .md, .pdf, .docx (server-side parsing)<\/li>\n<li>Statistics: total entries, active, inactive, categories<\/li>\n<li>Filter by status: all, published, draft<\/li>\n<li>Sortable table: ID, title, category, type, priority, updated date<\/li>\n<li>Unlimited entries<\/li>\n<\/ul>\n\n<h4>Site Learning<\/h4>\n\n<p>The plugin crawls and indexes your published content for context-aware AI responses:<\/p>\n\n<ul>\n<li>Posts and Pages<\/li>\n<li>Custom Post Types<\/li>\n<li>WooCommerce Products<\/li>\n<li>Any public content<\/li>\n<\/ul>\n\n<p>With vector embedding enabled, hybrid search combines keyword matching (40%) and vector similarity (60%) for better retrieval accuracy.<\/p>\n\n<h4>Free vs Pro<\/h4>\n\n<p>The free version is fully functional with no artificial limits \u2014 you pay only your own AI API costs. An optional Pro add-on is available for business-oriented features.<\/p>\n\n<ul>\n<li><strong>Free<\/strong> \u2014 Full AI chat, unlimited responses, unlimited knowledge base, 6 themes, MCP server, Gutenberg block<\/li>\n<li><strong>Pro<\/strong> \u2014 Adds analytics, lead capture, scenarios, operator mode, WooCommerce, LINE, and more<\/li>\n<\/ul>\n\n<p><strong>What Free includes:<\/strong><\/p>\n\n<ul>\n<li>All 4 AI providers (OpenAI, Claude, Gemini, OpenRouter)<\/li>\n<li>Unlimited AI responses and knowledge base entries<\/li>\n<li>Web search, site learning with vector RAG<\/li>\n<li>MCP server, Gutenberg block, cross-site embed<\/li>\n<li>6 themes, feedback, regeneration, reCAPTCHA, security diagnostics<\/li>\n<\/ul>\n\n<p><strong>What Pro adds:<\/strong><\/p>\n\n<ul>\n<li>Analytics dashboard with satisfaction scores, FAQ ranking, and PDF export<\/li>\n<li>Lead capture forms, CSV\/JSON export, webhooks, Google Sheets<\/li>\n<li>Conversation scenarios, business hours, human handoff, operator mode<\/li>\n<li>WooCommerce product cards, LINE Messaging API, Slack notifications<\/li>\n<li>10 additional themes, dark mode, voice input\/TTS, multimodal<\/li>\n<li>Response caching, encryption, audit logs, and more<\/li>\n<\/ul>\n\n<p>Learn more at <a href=\"https:\/\/raplsworks.com\/rapls-ai-chatbot-pro\">raplsworks.com<\/a><\/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) \u2014 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) \u2014 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) \u2014 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 \u2014 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. 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>6. 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 \u2014 it creates an iframe pointing back to your own WordPress site. 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<h3>Privacy<\/h3>\n\n<h4>Data Collected<\/h4>\n\n<p>When conversation history is enabled, the plugin stores:\n* Chat messages (user and AI responses)\n* Session identifiers\n* Page URLs where chats occurred\n* Hashed IP addresses (SHA-256, not reversible)\n* Timestamps<\/p>\n\n<h4>Data Retention<\/h4>\n\n<p>Conversation data is automatically deleted after the configured retention period (default: 90 days). Administrators can manually delete conversations at any time.<\/p>\n\n<h4>User Rights<\/h4>\n\n<p>Site administrators can:\n* View all conversation history\n* Delete individual or all conversations\n* Export settings (does not include conversation data)\n* Disable history saving entirely= Developer Information =<\/p>\n\n<p>The plugin provides hooks and filters for customization:<\/p>\n\n<h4>Available Filters<\/h4>\n\n<ul>\n<li><code>raplsaich_system_prompt<\/code> \u2014 Modify the system prompt sent to AI<\/li>\n<li><code>raplsaich_context<\/code> \u2014 Modify the context from site learning<\/li>\n<li><code>raplsaich_ai_response<\/code> \u2014 Filter the AI response before display<\/li>\n<li><code>raplsaich_chatbot_enabled<\/code> \u2014 Control chatbot visibility programmatically<\/li>\n<li><code>raplsaich_allowed_origins<\/code> \u2014 Add allowed origin hosts for same-origin check<\/li>\n<li><code>raplsaich_chat_response_data<\/code> \u2014 Filter chat response data before returning to client<\/li>\n<li><code>raplsaich_gpt5_token_multiplier<\/code> \u2014 GPT-5 reasoning token multiplier (default: 4, range: 1-8)<\/li>\n<\/ul>\n\n<h4>Example: Custom System Prompt<\/h4>\n\n<pre><code>add_filter( 'raplsaich_system_prompt', function( $prompt, $settings ) {\n    return $prompt . \"\\n\\nAlways end responses with a friendly emoji.\";\n}, 10, 2 );\n<\/code><\/pre>\n\n<h4>Example: Conditionally Hide Chatbot<\/h4>\n\n<pre><code>add_filter( 'raplsaich_chatbot_enabled', function( $enabled ) {\n    \/\/ Hide on checkout page\n    if ( is_page( 'checkout' ) ) {\n        return false;\n    }\n    return $enabled;\n} );\n<\/code><\/pre>\n\n<h4>REST API Endpoints<\/h4>\n\n<p>The plugin registers REST API endpoints under the <code>rapls-ai-chatbot\/v1<\/code> namespace:<\/p>\n\n<p><strong>Session authentication:<\/strong> Pass the session ID via the <code>X-RAPLSAICH-Session<\/code> HTTP header (recommended). When the header is present, any session_id in the request body is ignored (prevents APM\/WAF body-logging leakage). Query string parameters (<code>?session_id=...<\/code>) are <strong>not<\/strong> accepted for GET requests to prevent session leakage in server access logs.<\/p>\n\n<p><strong>Free:<\/strong><\/p>\n\n<ul>\n<li><code>GET \/rapls-ai-chatbot\/v1\/session<\/code> \u2014 Get or create a chat session<\/li>\n<li><code>POST \/rapls-ai-chatbot\/v1\/chat<\/code> \u2014 Send a message and receive AI response<\/li>\n<li><code>GET \/rapls-ai-chatbot\/v1\/history\/{session_id}<\/code> \u2014 Get conversation history<\/li>\n<li><code>POST \/rapls-ai-chatbot\/v1\/feedback<\/code> \u2014 Rate a response (thumbs up\/down)<\/li>\n<li><code>POST \/rapls-ai-chatbot\/v1\/regenerate<\/code> \u2014 Regenerate AI response<\/li>\n<li><code>GET \/rapls-ai-chatbot\/v1\/message-limit<\/code> \u2014 Check message limits<\/li>\n<li><code>POST \/rapls-ai-chatbot\/v1\/lead<\/code> \u2014 Submit lead form<\/li>\n<li><code>GET \/rapls-ai-chatbot\/v1\/lead-config<\/code> \u2014 Lead form configuration<\/li>\n<\/ul>\n\n<p>The Pro add-on registers additional endpoints for analytics, scenarios, LINE, and more. See the Pro documentation for details.<\/p>\n\n<h4>Settings Architecture<\/h4>\n\n<p>Extension settings are stored under the <code>extensions<\/code> key in <code>raplsaich_settings<\/code>. For backward compatibility, the legacy <code>pro_features<\/code> key is read as a fallback but all new settings are written to <code>extensions<\/code>.<\/p>\n\n<h4>Database Tables<\/h4>\n\n<p>The plugin creates the following database tables:<\/p>\n\n<ul>\n<li><code>{prefix}_aichat_conversations<\/code> \u2014 Chat sessions<\/li>\n<li><code>{prefix}_aichat_messages<\/code> \u2014 Individual messages with token tracking<\/li>\n<li><code>{prefix}_aichat_index<\/code> \u2014 Site learning content index<\/li>\n<li><code>{prefix}_aichat_knowledge<\/code> \u2014 Custom knowledge base entries<\/li>\n<li><code>{prefix}_aichat_leads<\/code> \u2014 Lead capture data<\/li>\n<\/ul>\n\n<h4>Uninstallation<\/h4>\n\n<p>When uninstalled with \"Delete data on uninstall\" enabled, the plugin removes all database tables, options, and transients. Without this setting, data is preserved for re-installation.<\/p>\n\n<h3>Development<\/h3>\n\n<p>Release ZIPs are CI-verified for packaging correctness. Report any issues via the support forum.<\/p>\n\n<h4>Credits<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/www.chartjs.org\/\">Chart.js<\/a> (MIT License) \u2014 Usage statistics charts<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>rapls-ai-chatbot<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory<\/li>\n<li>Activate the plugin via the 'Plugins' menu in WordPress<\/li>\n<li>Go to AI Chatbot &gt; Settings to configure your AI provider and API key<\/li>\n<li>Customize the chatbot appearance and behavior as needed<\/li>\n<li>The chatbot will automatically appear on your site<\/li>\n<\/ol>\n\n<h4>API Key Setup<\/h4>\n\n<p>You'll need an API key from at least one AI provider:<\/p>\n\n<ul>\n<li><strong>OpenAI:<\/strong> Get your key at <a href=\"https:\/\/platform.openai.com\/\">platform.openai.com<\/a><\/li>\n<li><strong>Anthropic Claude:<\/strong> Get your key at <a href=\"https:\/\/console.anthropic.com\/\">console.anthropic.com<\/a><\/li>\n<li><strong>Google Gemini:<\/strong> Get your key at <a href=\"https:\/\/aistudio.google.com\/\">aistudio.google.com<\/a><\/li>\n<li><strong>OpenRouter:<\/strong> Get your key at <a href=\"https:\/\/openrouter.ai\/\">openrouter.ai<\/a><\/li>\n<\/ul>\n\n<h4>MCP Server Setup<\/h4>\n\n<ol>\n<li>Go to AI Chatbot &gt; Settings &gt; AI Settings<\/li>\n<li>Enable MCP and click \"Generate API Key\"<\/li>\n<li>Copy the endpoint URL and API key<\/li>\n<li>Add the configuration to your AI agent (Claude Desktop, Cursor, or VS Code)<\/li>\n<\/ol>\n\n<p>The plugin provides 7 MCP tools: get_site_info, search_content, get_knowledge, manage_knowledge, get_conversations, get_settings, search_products (Pro).<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20ai%20provider%20should%20i%20choose%3F\"><h3>Which AI provider should I choose?<\/h3><\/dt>\n<dd><p>Each provider has different strengths:\n* <strong>OpenAI GPT-4o-mini<\/strong> \u2014 Best balance of cost and performance for most use cases\n* <strong>Claude Sonnet 4.5<\/strong> \u2014 Excellent for nuanced, helpful responses\n* <strong>Gemini 2.5 Flash<\/strong> \u2014 Fast and cost-effective, good for high-volume sites\n* <strong>OpenRouter<\/strong> \u2014 Access to 100+ models from multiple providers with a single API key<\/p><\/dd>\n<dt id=\"how%20much%20does%20it%20cost%20to%20use%3F\"><h3>How much does it cost to use?<\/h3><\/dt>\n<dd><p>The plugin itself is free. You pay for AI API usage directly to your chosen provider. Typical costs:\n* GPT-4o-mini: ~$0.15\/1M input tokens, ~$0.60\/1M output tokens\n* Claude Haiku 4.5: ~$0.80\/1M input tokens, ~$4.00\/1M output tokens\n* Gemini 2.5 Flash: ~$0.15\/1M input tokens, ~$0.60\/1M output tokens<\/p><\/dd>\n<dt id=\"can%20i%20use%20multiple%20ai%20providers%3F\"><h3>Can I use multiple AI providers?<\/h3><\/dt>\n<dd><p>You can configure multiple API keys, but only one provider is active at a time. You can switch between providers in the settings.<\/p><\/dd>\n<dt id=\"how%20does%20site%20learning%20work%3F\"><h3>How does Site Learning work?<\/h3><\/dt>\n<dd><p>The plugin crawls your published content and creates a searchable index. When users ask questions, relevant content is included in the AI context for accurate, site-specific responses. With vector embedding enabled, hybrid search combines keyword matching (40%) and vector similarity (60%) for better retrieval.<\/p><\/dd>\n<dt id=\"how%20does%20web%20search%20work%3F\"><h3>How does Web Search work?<\/h3><\/dt>\n<dd><p>When the knowledge base and site content don't have a sufficient answer, the AI automatically searches the web using each provider's built-in capability (OpenAI web_search_preview, Claude web_search, Gemini google_search). Web sources are shown with a globe icon.<\/p><\/dd>\n<dt id=\"what%20is%20the%20mcp%20server%3F\"><h3>What is the MCP Server?<\/h3><\/dt>\n<dd><p>MCP (Model Context Protocol) allows external AI agents like Claude Desktop, Cursor, and VS Code to interact with your chatbot's data. The plugin provides 7 built-in tools for searching content, managing knowledge, and viewing conversations. Tools are also registered as WordPress Abilities for auto-discovery.<\/p><\/dd>\n<dt id=\"can%20i%20embed%20the%20chatbot%20on%20external%20sites%3F\"><h3>Can I embed the chatbot on external sites?<\/h3><\/dt>\n<dd><p>Yes. The plugin provides a cross-site embed page (<code>?raplsaich_embed=1<\/code>) and a loader script (<code>assets\/js\/embed-loader.js<\/code>) for easy integration on any external website via iframe.<\/p><\/dd>\n<dt id=\"can%20i%20use%20the%20gutenberg%20block%3F\"><h3>Can I use the Gutenberg block?<\/h3><\/dt>\n<dd><p>Yes. Search for \"AI Chatbot\" in the block editor to insert the chatbot block. Configure height, theme, and bot-id settings. Server-side rendering (SSR) is supported.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20chatbot%20appearance%3F\"><h3>Can I customize the chatbot appearance?<\/h3><\/dt>\n<dd><p>Yes. You can customize:\n* Bot name and avatar (emoji or image)\n* Primary and secondary colors\n* Theme (6 built-in themes)\n* Welcome message (13 languages)\n* Badge position, margins, and icon\n* Mobile visibility\n* Excluded pages\n* Typing indicator and Markdown rendering<\/p><\/dd>\n<dt id=\"is%20conversation%20history%20saved%3F\"><h3>Is conversation history saved?<\/h3><\/dt>\n<dd><p>Yes, by default. You can disable this in Settings &gt; Data Management. Saved conversations are auto-deleted after the configured retention period (default: 90 days).<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20builders%3F\"><h3>Does it work with page builders?<\/h3><\/dt>\n<dd><p>Yes, the chatbot widget works with any theme and page builder including Elementor, Divi, Beaver Builder, and Gutenberg.<\/p><\/dd>\n<dt id=\"can%20i%20use%20custom%20system%20prompts%3F\"><h3>Can I use custom system prompts?<\/h3><\/dt>\n<dd><p>Yes. Configure your own system prompt to define the AI's personality, behavior, and response style. The <code>raplsaich_system_prompt<\/code> filter is also available for programmatic customization. Advanced feature prompts (regeneration, feedback learning, summary) are also customizable.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20exceed%20my%20api%20quota%3F\"><h3>What happens if I exceed my API quota?<\/h3><\/dt>\n<dd><p>The plugin displays a customizable error message when your AI provider's quota limits are reached. There is no artificial response limit in the plugin itself.<\/p><\/dd>\n<dt id=\"what%20is%20the%20pro%20add-on%3F\"><h3>What is the Pro add-on?<\/h3><\/dt>\n<dd><p>The Pro add-on is a separate plugin that adds business-oriented features such as analytics, lead capture, conversation scenarios, operator mode, WooCommerce integration, and LINE integration. The free version is fully functional on its own with no artificial limits.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20when%20i%20uninstall%3F\"><h3>What happens to my data when I uninstall?<\/h3><\/dt>\n<dd><p>By default, the plugin keeps your settings and conversation data so you can re-install without losing anything. To delete all data on uninstall, enable \"Delete data on uninstall\" in Settings &gt; Data Management. Temporary cache and diagnostic counters are always removed regardless of this setting. On multisite, each site has its own setting.<\/p><\/dd>\n<dt id=\"how%20can%20i%20adjust%20multisite%20uninstall%20performance%3F\"><h3>How can I adjust multisite uninstall performance?<\/h3><\/dt>\n<dd><p>On large multisite networks, uninstall batch size is adjustable via filters. Add to your <code>functions.php<\/code> or an MU-plugin:<\/p>\n\n<pre><code>add_filter( 'raplsaich_uninstall_batch_size', function() { return 50; } );\n\nadd_filter( 'raplsaich_uninstall_snapshot_threshold', function() { return 1000; } );\n<\/code><\/pre>\n\n<p>Guide: low-memory\/slow-DB \u2192 batch size 20-50, standard \u2192 100, fast\/large-scale \u2192 200-500.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.6<\/h4>\n\n<ul>\n<li>Fixed: Response Language setting now works when set to \"Site language\" \u2014 was silently ignored<\/li>\n<li>Fixed: AI responses in wrong language when RAG context is in a different language (triple enforcement)<\/li>\n<li>Fixed: Chatbot placeholder language now respects site locale over browser language<\/li>\n<li>Fixed: Response cache now includes language in hash key to prevent stale translations<\/li>\n<li>Fixed: Reset confirm dialog newlines not rendering in prompt()<\/li>\n<li>Improved: Response language instruction placed at beginning, end of system prompt, and in user message<\/li>\n<\/ul>\n\n<h4>1.5.5<\/h4>\n\n<ul>\n<li>Improved: Complete Free\/Pro code separation \u2014 all Pro UI code moved to separate Pro plugin<\/li>\n<li>Improved: Frontend chatbot.js reduced by 50% (4,300 \u2192 2,175 lines) for faster page loads<\/li>\n<li>Improved: Consolidated admin menu into single \"Pro Features\" overview page<\/li>\n<li>Improved: Hook-based extension architecture for Pro features<\/li>\n<li>Security: Removed arbitrary custom CSS injection \u2014 use WordPress Customizer instead<\/li>\n<li>Security: All CSS variable values escaped with esc_attr(), position margins with absint()<\/li>\n<li>Security: Block render output sanitized with wp_kses() and widget-aware allow-list<\/li>\n<li>Security: Added <code>rel=\"noopener noreferrer\"<\/code> to all external links<\/li>\n<li>Security: Inline JS\/CSS now uses wp_add_inline_script() and wp_add_inline_style() instead of raw output<\/li>\n<li>Fixed: Lead form display and submission when Pro is active<\/li>\n<li>Changed: Settings key renamed from <code>pro_features<\/code> to <code>extensions<\/code> with automatic migration<\/li>\n<li>Changed: Unique prefix <code>raplsaich_<\/code> applied to all functions, options, hooks, and REST namespace<\/li>\n<li>Updated: External Services section with per-service documentation and embed-loader.js clarification<\/li>\n<li>Updated: Chart.js to v4.5.1, html2canvas bundled locally<\/li>\n<\/ul>\n\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Fixed: WordPress Plugin Check compliance (WP_Filesystem annotations, prepared SQL annotations)<\/li>\n<li>Removed: Artificial free-tier limits \u2014 all core features are fully available<\/li>\n<li>Removed: Default \"Powered by\" footer from chatbot widget<\/li>\n<li>Updated: Neutral error messages replacing promotional upsell text<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Added: Gutenberg block \u2014 Insert AI Chatbot block in the block editor with height, theme, and bot-id settings; SSR (server-side rendering) support; i18n (JA\/EN translation JSON)<\/li>\n<li>Added: WordPress Abilities API Bridge \u2014 Register all 7 MCP tools as WordPress Abilities for auto-discovery by MCP Adapters (Claude Desktop, Cursor, VS Code)<\/li>\n<li>Added: Response language auto-detect \u2014 Automatically detect browser language for welcome message and AI responses; choose from \"Site language\", \"Auto-detect\", or manual<\/li>\n<li>Added: OpenRouter provider support (100+ models via single API key)<\/li>\n<li>Added: Pro add-on compatibility layer for extended features<\/li>\n<li>Fixed: MCP tool registration timing for reliable integration<\/li>\n<li>Fixed: Abilities API category registration and naming compliance<\/li>\n<li>Updated: Japanese translation \u2014 all strings translated including Abilities API, Gutenberg block, and response language settings<\/li>\n<li>Updated: WordPress Plugin Check compliance fixes<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added: Web search integration \u2014 AI automatically searches the web when knowledge base lacks a sufficient answer (OpenAI web_search_preview, Claude web_search, Gemini google_search grounding)<\/li>\n<li>Added: Web search toggle in AI Settings tab with per-provider cost notice<\/li>\n<li>Added: Web source citations displayed with globe icon, separate from knowledge base sources<\/li>\n<li>Added: Cross-site embed page \u2014 embed chatbot on external sites via iframe (?raplsaich_embed=1 endpoint)<\/li>\n<li>Added: Embed loader script (assets\/js\/embed-loader.js) for easy cross-site integration<\/li>\n<li>Added: PDF and DOCX file upload support in knowledge base (server-side parsing)<\/li>\n<li>Added: Vector embedding RAG with hybrid search (keyword 40% + vector 60%)<\/li>\n<li>Updated: AI model lists \u2014 OpenAI GPT-5.2\/5.1\/5\/4.1 series, Claude Opus 4.6\/Sonnet 4.5\/Haiku 4.5, Gemini 3\/2.5 series<\/li>\n<li>Updated: Japanese translation<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Security: Session ID now transmitted via <code>X-RAPLSAICH-Session<\/code> header instead of query strings (prevents access log leakage)<\/li>\n<li>Security: GET requests no longer accept <code>?session_id=<\/code> query parameter<\/li>\n<li>Security: POST requests ignore body <code>session_id<\/code> when header is present (prevents APM\/WAF body-logging leakage)<\/li>\n<li>Security: Removed client-side <code>raplsaich_user_id<\/code> remnant from JavaScript<\/li>\n<li>Security: Context key derivation simplified to session-only HMAC (removed IP binding for stability)<\/li>\n<li>Security: DOM-based URL linking and offline form rendering (XSS hardening)<\/li>\n<li>Security: Dompdf post-init safety assertion (<code>isPhpEnabled<\/code> \/ <code>isRemoteEnabled<\/code> check)<\/li>\n<li>Added: Rate-limited error logging (<code>raplsaich_rate_limited_log()<\/code>) with filterable interval via <code>raplsaich_rate_limited_log_interval<\/code><\/li>\n<li>Added: Server-side offline message dedup (30-second window, session-preferred key)<\/li>\n<li>Added: Client-side offline form dedup via sessionStorage<\/li>\n<li>Improved: Offline message endpoint allows unauthenticated submissions (<code>allow_no_headers<\/code>)<\/li>\n<li>Improved: Rate limit fallback keys hashed to prevent <code>wp_options<\/code> bloat<\/li>\n<li>Improved: Standardized REST error responses with <code>error_code<\/code> field<\/li>\n<li>Improved: Dompdf errors return JSON response instead of <code>wp_die()<\/code> for better admin UX<\/li>\n<li>Improved: REST API session authentication documented in readme<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Added: Pro add-on compatibility for enhanced rate limiting and PDF export<\/li>\n<li>Improved: Rate limit error messages are now customizable<\/li>\n<li>Improved: Diagnostic options renamed to <code>raplsaich_diag_*<\/code> namespace<\/li>\n<li>Improved: Frontend debug minimum capability is now filterable via <code>raplsaich_frontend_debug_min_cap<\/code><\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added: Pro add-on compatibility for response caching, audit logs, conversion tracking, offline messages, and answer templates<\/li>\n<li>Improved: Knowledge base supports 'qa' and 'template' entry types<\/li>\n<li>Improved: Database schema updates for caching and conversion tracking<\/li>\n<\/ul>\n\n<h4>1.2.23<\/h4>\n\n<ul>\n<li>Added: Sortable column headers in admin tables \u2014 Dashboard model stats, Conversations, Knowledge, and Crawler pages now support click-to-sort with ascending\/descending toggle<\/li>\n<li>Added: Knowledge base draft status \u2014 entries can be \"published\" or \"draft\", with filter tabs and draft count badge<\/li>\n<li>Added: Enhanced content extraction (Pro) \u2014 DOMDocument-based HTML parsing preserves document structure as Markdown-style text for better AI context<\/li>\n<li>Added: Session reset feature \u2014 administrators can invalidate all existing chat sessions at once<\/li>\n<li>Improved: Session cookie set as httpOnly with SameSite=Lax for better security<\/li>\n<li>Improved: Knowledge base model supports status filtering and sorting with SQL whitelist validation<\/li>\n<li>Improved: Content index model supports orderby\/order parameters for sorted admin views<\/li>\n<li>Updated: Japanese translation<\/li>\n<\/ul>\n\n<h4>1.2.22<\/h4>\n\n<ul>\n<li>Improved: Default system prompt now enforces accuracy, honesty, and no-fabrication rules for better AI response quality<\/li>\n<li>Improved: Site learning context prompt explicitly instructs AI not to guess or fabricate when information is missing<\/li>\n<li>Added: <code>raplsaich_system_prompt<\/code> filter \u2014 developers can now modify the system prompt programmatically<\/li>\n<li>Added: Customizable feature prompts \u2014 regenerate instruction, feedback learning headers, and summary prompt are now editable in Settings<\/li>\n<li>Added: Advanced prompt sections gated behind checkboxes (disabled by default) for safe editing<\/li>\n<li>Added: Placeholder documentation for regeneration prompt ({variation_number}, {forbidden_start}, {style})<\/li>\n<li>Updated: Debugging guide with new prompt customization section<\/li>\n<\/ul>\n\n<h4>1.2.21<\/h4>\n\n<ul>\n<li>Added: Knowledge base export support (CSV\/JSON) \u2014 available with Pro add-on<\/li>\n<li>Added: Budget limit check integration in REST API (blocks AI calls when Pro budget limit exceeded)<\/li>\n<li>Added: Budget alert hook after AI responses (triggers Pro email notifications)<\/li>\n<li>Added: Pro features stub methods for budget management (check_budget_limit, get_budget_block_message, maybe_send_budget_alert)<\/li>\n<li>Improved: Default settings include budget and monthly report configuration keys<\/li>\n<li>Added: Detailed debugging guide documentation (docs\/debugging-guide.md)<\/li>\n<\/ul>\n\n<h4>1.2.20<\/h4>\n\n<ul>\n<li>Added: Knowledge page prefill support (prefill_question parameter for quick FAQ creation from analytics)<\/li>\n<\/ul>\n\n<h4>1.2.19<\/h4>\n\n<ul>\n<li>Security: API key encryption now covers Google Gemini keys (AIza...) in addition to OpenAI and Claude<\/li>\n<li>Security: Added OpenSSL availability check with graceful fallback for encryption\/decryption<\/li>\n<li>Security: Conversation history endpoint (\/history) now verifies session ownership via cookie and IP<\/li>\n<li>Security: Chart.js bundled locally instead of loading from external CDN (WordPress.org compliance)<\/li>\n<li>Added: Session cookie (raplsaich_session_id) set on session creation for reliable history access across IP changes<\/li>\n<\/ul>\n\n<h4>1.2.18<\/h4>\n\n<ul>\n<li>Security: Sanitized API error messages to prevent information leakage<\/li>\n<li>Security: Proxy-aware client IP detection for rate limiting (Cloudflare, X-Forwarded-For)<\/li>\n<li>Security: Consistent SHA-256 hashing for IP-based rate limiting<\/li>\n<li>Fixed: User message duplication in AI context (improved response accuracy)<\/li>\n<li>Fixed: Uninstall now removes all tables including leads and user_context<\/li>\n<li>Fixed: Transient cleanup uses prepared statements<\/li>\n<li>Improved: Database schema checks cached per request (performance)<\/li>\n<li>Improved: Consolidated database upgrade logic in Activator class<\/li>\n<li>Improved: Pro-only REST routes only registered when Pro is active<\/li>\n<li>Added detailed Japanese descriptions for all AI models<\/li>\n<li>Translation improvements<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Security improvements and code quality enhancements<\/li>\n<li>WordPress Plugin Check compliance updates<\/li>\n<li>Updated AI model pricing information<\/li>\n<li>Bug fixes and performance improvements<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Multiple AI provider support (OpenAI, Claude, Gemini)<\/li>\n<li>Site learning with automatic content crawling<\/li>\n<li>Custom knowledge base with Q&amp;A format support<\/li>\n<li>Priority levels for knowledge entries<\/li>\n<li>Conversation history with search<\/li>\n<li>Usage statistics with cost estimation<\/li>\n<li>Daily token usage charts<\/li>\n<li>Model-by-model cost breakdown<\/li>\n<li>Customizable chatbot appearance<\/li>\n<li>Rate limiting support<\/li>\n<li>Quota error handling with custom messages<\/li>\n<li>Settings import\/export\/reset<\/li>\n<li>Japanese translation included<\/li>\n<li>Mobile-responsive chat widget<\/li>\n<li>Page exclusion settings<\/li>\n<\/ul>","raw_excerpt":"AI chatbot for WordPress with OpenAI, Claude, Gemini, and OpenRouter. Site learning, knowledge base, web search, and MCP server.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/292250","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=292250"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rapls"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=292250"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=292250"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=292250"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=292250"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=292250"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=292250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}