<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ai Archives - The Beginner’s Playbook for Fixing WordPress Errors</title>
	<atom:link href="https://ceeveeglobal.com/tag/ai/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceeveeglobal.com/tag/ai/</link>
	<description>Effortless Fixes for WordPress Errors, Designed for Beginners</description>
	<lastBuildDate>Mon, 12 Oct 2026 09:01:52 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.7</generator>

<image>
	<url>https://s3.ceeveeglobal.com/ceeveeglobalimages/cropped-Untitled-YouTube-Icon-32x32.png</url>
	<title>Ai Archives - The Beginner’s Playbook for Fixing WordPress Errors</title>
	<link>https://ceeveeglobal.com/tag/ai/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to Add an AI Chatbot to WordPress (No Plugin Needed)</title>
		<link>https://ceeveeglobal.com/add-ai-chatbot-to-wordpress/</link>
					<comments>https://ceeveeglobal.com/add-ai-chatbot-to-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Dimuthu Harshana]]></dc:creator>
		<pubDate>Mon, 12 Oct 2026 09:01:52 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Ai]]></category>
		<category><![CDATA[Chatbot]]></category>
		<category><![CDATA[REST API]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[WPCode]]></category>
		<guid isPermaLink="false">https://ceeveeglobal.com/?p=16194</guid>

					<description><![CDATA[<p>How to add an AI chatbot to WordPress with a code snippet, not a plugin: the full build, the 9 ways it breaks, and the hardened fix I tested in a lab.</p>
<p>The post <a href="https://ceeveeglobal.com/add-ai-chatbot-to-wordpress/">How to Add an AI Chatbot to WordPress (No Plugin Needed)</a> appeared first on <a href="https://ceeveeglobal.com">The Beginner’s Playbook for Fixing WordPress Errors</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The code everyone copies to put an AI chatbot on WordPress works. That&#8217;s exactly the problem.</p>
<p>I put the most-copied version on a real WordPress install, then hit its endpoint ten times from a terminal with no login, no nonce and no cookie. All ten went through. Ten real calls to a real AI model, on my bill, from something that wasn&#8217;t my website.</p>
<p>So this is the honest version of <strong>how to add an AI chatbot to WordPress</strong>: the build, every way I managed to break it, and the hardened version I ended up with. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> I tested the whole thing for free on my own machine, and I&#8217;ll show you how to do that too.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A15-e9-open-proxy.webp" alt="Terminal output showing ten unauthenticated requests to a WordPress AI chatbot endpoint, all landing successfully" /></p>
<p><em>Tested on WordPress 7.1.3, PHP 8.3 and WPCode 2.4.0. The Location behaviour in Step 1 is WPCode&#8217;s own, so check it still holds if you&#8217;re on a much newer version.</em></p>
<h2>What this is, in plain words</h2>
<p>A chat bubble sits in the corner of your site. A visitor clicks it, types a question, and an AI model answers in your words, following instructions you wrote.</p>
<p>You&#8217;re not installing someone else&#8217;s chatbot service. There&#8217;s no monthly fee to a third party, no branding you can&#8217;t remove, no visitor data sitting on a platform you don&#8217;t control. It&#8217;s your code, calling an AI model directly, and you decide what it&#8217;s allowed to say.</p>
<p>What it fixes, specifically:</p>
<ul>
<li><strong>The same five questions, all day.</strong> Opening hours, pricing, do-you-cover-my-area. The bot answers at 2am without you.</li>
<li><strong>Visitors who leave rather than fill in a form.</strong> A chat box gets answered questions that a contact form never would.</li>
<li><strong>Paying monthly for a chat widget</strong> that puts its own logo on your site.</li>
</ul>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A3-panel-startup.webp" alt="The finished chat widget open on a WordPress page, ready for a question" /></p>
<h3>What it costs to run</h3>
<p>Two honest options, and you can switch between them with one setting:</p>
<ul>
<li><strong>A paid API key</strong> from OpenAI or Anthropic. You pay per message, usually a fraction of a penny each. Better answers, nothing to maintain.</li>
<li><strong>Free, forever, on your own server</strong> using Ollama. No key, no bill, no limit on messages. You need a machine you control with a few GB of spare RAM, so a VPS rather than shared hosting. Answers are noticeably weaker than a paid model.</li>
</ul>
<p>Both routes run the exact same code. There&#8217;s a section further down on how I tested the whole thing for free before spending anything.</p>
<div style="border: 1px solid #e3e3ea; border-radius: 14px; padding: 22px; margin: 32px 0; background: #fbfbfd;">
<p style="margin: 0 0 4px; font-size: 1.05em; font-weight: bold; color: #15151c;">Get the files</p>
<p style="margin: 0 0 18px; color: #52525e; font-size: 0.95em;">Two ways to run this. The same hardened code underneath either one.</p>
<div style="display: flex; flex-wrap: wrap; gap: 16px;">
<div style="flex: 1 1 260px; border: 1px solid #e3e3ea; border-radius: 10px; padding: 18px; background: #ffffff;">
<p style="margin: 0 0 6px; font-weight: bold; color: #15151c;">The snippet files</p>
<p style="margin: 0 0 14px; color: #52525e; font-size: 0.92em;">Four files you paste into WPCode, exactly the build in this post. You change a CONFIG block to customise it.</p>
<p><a style="display: inline-block; padding: 11px 20px; border-radius: 8px; background: #4F46E5; color: #fdfff4; font-weight: bold; text-decoration: none;" href="https://github.com/dimu2000/cvg-ai-chatbot-snippet/archive/refs/heads/main.zip">Get it free</a></p>
<p style="margin: 12px 0 0; font-size: 0.85em;"><a style="color: #52525e;" href="https://github.com/dimu2000/cvg-ai-chatbot-snippet">or read through the files first</a></p>
</div>
<div style="flex: 1 1 260px; border: 1px solid #e3e3ea; border-radius: 10px; padding: 18px; background: #ffffff;">
<p style="margin: 0 0 6px; font-weight: bold; color: #15151c;">The finished plugin</p>
<p style="margin: 0 0 14px; color: #52525e; font-size: 0.92em;">Upload, activate, fill in a settings screen. No code editor, no CONFIG block, and the setup guides are in the box.</p>
<p><a style="display: inline-block; padding: 11px 20px; border-radius: 8px; background: #15151c; color: #fdfff4; font-weight: bold; text-decoration: none;" href="https://www.patreon.com/cw/ceeveeglobal">Get the plugin</a></p>
<p style="margin: 12px 0 0; font-size: 0.85em; color: #52525e;">on my Patreon</p>
</div>
</div>
</div>
<p>If you&#8217;d rather build it by hand and understand every line, keep reading. That&#8217;s what the rest of this is.</p>
<h2>What you need</h2>
<ul>
<li>A WordPress site you can install a plugin on (mine was a throwaway Docker install, and Hostinger is where I&#8217;d start if I were setting this up fresh today)</li>
<li>The <strong>WPCode</strong> plugin, free version, for pasting snippets</li>
<li>Permalinks set to anything <strong>except</strong> Plain (this one bites people, more below)</li>
<li>An API key from OpenAI or Anthropic, <em>or</em> Ollama on your own machine if you want to spend nothing</li>
<li>30 minutes</li>
</ul>
<h2>What we&#8217;re building</h2>
<p>A chat bubble in the corner of your site. A visitor clicks it, types a question, and your chosen AI model answers, with your instructions shaping what it says.</p>
<p>Three pieces make that work: a <strong>REST route</strong> your site exposes, a <strong>widget</strong> in the page that calls it, and your <strong>API key</strong>, which never leaves the server.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A17-architecture.webp" alt="Diagram of the chatbot request path: browser, nonce check, rate limit, server-held history, AI provider" /></p>
<p>That diagram is the hardened version. The tutorial version is the same picture with the two gates missing, which is the whole story of this post.</p>
<h2>How I tested this for free</h2>
<p>I didn&#8217;t spend anything building this, and you don&#8217;t have to either.</p>
<p><a href="https://ollama.com">Ollama</a> runs an AI model on your own computer. It installs without sudo, and it exposes an <strong>OpenAI-compatible</strong> endpoint, meaning the same code that talks to OpenAI talks to it, with only the base URL changed.</p>
<pre><code class="language-bash">ollama list
# qwen2.5:3b-instruct-q4_K_M    357c53fb659c    1.9 GB
</code></pre>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A21-ollama-local.webp" alt="Terminal showing a local Ollama model loaded and running on CPU" /></p>
<p>In the chatbot settings I pointed the base URL at <code>http://localhost:11434/v1</code>, set the model name, and left the API key field <strong>empty</strong>:</p>
<pre><code>provider=compatible  base_url=http://ollama:11434/v1
model=qwen2.5:3b-instruct-q4_K_M  key_set=no
</code></pre>
<p>That answered in <strong>1.56 seconds</strong> on a CPU-only box with no GPU. I timed the model call five more times to be sure: <strong>1.73 seconds median</strong>, 1.66 to 1.82 once it&#8217;s warm.</p>
<p>One thing that will confuse you if nobody says it: my <em>first</em> request took <strong>6.9 seconds</strong>. Ollama loads the model into memory on demand, so the first answer after an idle spell is slow and every one after it isn&#8217;t. Don&#8217;t judge the setup by that first reply.</p>
<p>You can also just <strong>leave it like this</strong>. If you run your own VPS, Ollama answers every chat for free, forever, and no API bill ever arrives. That is a real option, not a demo mode.</p>
<p>The catch is honest and worth knowing before you plan around it: this needs a machine you control with a few GB of spare RAM. Normal shared hosting won&#8217;t run it, so for most people it&#8217;s a VPS or nothing.</p>
<p>Here&#8217;s the other honest limit: a 3B model gives visibly weaker answers than GPT-4o or Claude. <strong>Test your plumbing locally, then judge answer quality only once you point it at a paid key.</strong> And one more thing I&#8217;d rather say than hide: my Anthropic adapter was verified against a local Anthropic-shaped mock, not against <code>api.anthropic.com</code>.</p>
<h2>Step 1: the PHP snippet (and the trap that eats it)</h2>
<p><strong>Do this:</strong></p>
<ol>
<li>Install and activate <strong>WPCode</strong> from Plugins &gt; Add New.</li>
<li>Go to <strong>Code Snippets &gt; Add Snippet</strong>, choose <strong>Add Your Custom Code</strong>, and pick <strong>PHP Snippet</strong>.</li>
<li>Paste the PHP in. If you&#8217;re using my files, that&#8217;s <code>01-paste-into-wpcode.php</code>.</li>
<li>In the right-hand column, set <strong>Location</strong> to <strong>Run Everywhere</strong>. This one matters more than it looks.</li>
<li>Save, then switch the snippet to <strong>Active</strong>.</li>
</ol>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A1-wpcode-editor-scaled.webp" alt="WPCode snippet editor with the chatbot PHP pasted in and the location set to Run Everywhere" /></p>
<p>That&#8217;s the whole step. The rest of this section is <em>why</em>, and you can skip to Step 2 if you just want the thing working.</p>
<h3>What that PHP actually does</h3>
<p>It registers a <strong>REST route</strong>: a URL on your own site that your chat widget can post a question to. Your snippet takes the question, adds your instructions, calls the AI model with your key, and sends the answer back.</p>
<p>The part everyone gets right:</p>
<pre><code class="language-php">register_rest_route( 'myapi/v1', '/chat-bot/', array(
    'methods'             =&gt; 'POST',
    'callback'            =&gt; 'handle_chat_bot_request',
    'permission_callback' =&gt; '__return_true',
) );
</code></pre>
<p>The part almost nobody does:</p>
<pre><code class="language-php">register_rest_route( 'myapi/v1', '/chat-bot-config', array(
    'methods'  =&gt; 'GET',
    'callback' =&gt; 'load_chat_bot_base_configuration',
    // no permission_callback at all
) );
</code></pre>
<p>WordPress <strong>does</strong> warn you about that second one. It just sends the warning somewhere you will never look:</p>
<pre><code class="language-bash">curl -s -D - -o /dev/null http://yoursite.test/wp-json/myapi/v1/chat-bot-config

HTTP/1.1 200 OK
X-WP-DoingItWrong: register_rest_route (since 5.5.0; The REST API route definition for
  myapi/v1/chat-bot-config is missing the required permission_callback argument...)
</code></pre>
<p>With <code>WP_DEBUG_LOG</code> switched on, <code>debug.log</code> stayed at <strong>0 bytes</strong>. Core suppresses that notice on purpose during REST requests, because a PHP warning printed mid-request would corrupt the JSON. Reasonable, but it means the one message telling you your endpoint is unprotected goes into a response header, not your log.</p>
<h3>Why that one Location setting decides whether anything works</h3>
<p>Skippable if yours already works. Worth reading if it doesn&#8217;t, because this is the one I&#8217;d never seen written down anywhere and it cost me an afternoon on a real build.</p>
<p>In WPCode, a PHP snippet has a <strong>Location</strong>. Set it to <em>Frontend Conditional Logic</em> and your REST route is <strong>never registered at all</strong>. No error, no log line, nothing:</p>
<table>
<thead>
<tr>
<th>Location</th>
<th>Route in <code>/wp-json/</code></th>
<th><code>POST /chat-bot/</code></th>
<th><code>debug.log</code></th>
</tr>
</thead>
<tbody>
<tr>
<td>Run Everywhere</td>
<td>listed</td>
<td><strong>200</strong></td>
<td>0 bytes</td>
</tr>
<tr>
<td>Frontend Only</td>
<td>listed</td>
<td><strong>200</strong></td>
<td>0 bytes</td>
</tr>
<tr>
<td><strong>Frontend Conditional Logic</strong></td>
<td><strong>absent</strong></td>
<td><strong>404 <code>rest_no_route</code></strong></td>
<td><strong>0 bytes</strong></td>
</tr>
<tr>
<td>Admin Only</td>
<td>absent</td>
<td>404 <code>rest_no_route</code></td>
<td>0 bytes</td>
</tr>
</tbody>
</table>
<p>The code was byte-identical in all four runs. Only the location changed.</p>
<p>The reason is in WPCode&#8217;s own source: <em>Run Everywhere</em> runs your snippet on <code>plugins_loaded</code>, which fires on every request including REST ones. <em>Frontend Conditional Logic</em> runs on <code>wp</code>, a hook a REST request never reaches. Nothing errors, so nothing logs.</p>
<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Set the location to Run Everywhere.</strong> If your chatbot does nothing at all and your log is empty, check this before you check anything else.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A13-e7b-location.webp" alt="WPCode snippet list showing four snippets and their location settings" /></p>
<h2>Step 2: the widget</h2>
<p>This is the part visitors actually see: the bubble, the panel, and the JavaScript that sends their question to the route you just built.</p>
<p><strong>Do this:</strong> three more snippets, each added the same way as Step 1, each set to <strong>Active</strong>.</p>
<table>
<thead>
<tr>
<th>Snippet type</th>
<th>What goes in it</th>
<th>Location</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>HTML Snippet</strong></td>
<td>the markup (<code>02-html-block.html</code>)</td>
<td>Site Wide Footer</td>
</tr>
<tr>
<td><strong>CSS Snippet</strong></td>
<td>the styles (<code>03-styles.css</code>)</td>
<td>Site Wide Header</td>
</tr>
<tr>
<td><strong>JavaScript Snippet</strong></td>
<td>the widget script (<code>04-script.js</code>)</td>
<td>Site Wide Footer</td>
</tr>
</tbody>
</table>
<p>Not using WPCode for these? The HTML and JavaScript go in your theme&#8217;s <code>footer.php</code> before <code>&lt;/body&gt;</code>, and the CSS goes in <strong>Appearance &gt; Customise &gt; Additional CSS</strong>.</p>
<p>Reload any page on the front end and the launcher appears in the bottom corner.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A2-launcher-on-page-scaled.webp" alt="The chat launcher button sitting in the corner of a live WordPress page" /></p>
<h3>The endpoint line, and the two ways it goes wrong</h3>
<p>The one line to get right is the endpoint, and the mistake to avoid is hardcoding it:</p>
<pre><code class="language-js">// Don't do this. It's your dev machine, not your visitor's
const apiUrl = 'http://ai-chatbot.local/wp-json/myapi/v1/chat-bot/';
</code></pre>
<p>When I left that in, the browser console said <code>net::ERR_NAME_NOT_RESOLVED</code>, then <code>TypeError: Failed to fetch</code>, and the visitor saw a generic error with no clue what happened.</p>
<p>There&#8217;s a nastier version of the same mistake. If your site is on <strong>HTTPS</strong> and your endpoint URL starts with <code>http://</code> on a real domain, Chrome blocks the request outright:</p>
<pre><code>Mixed Content: The page at 'https://yoursite.com/' was loaded over HTTPS, but requested
an insecure resource 'http://yoursite.com/wp-json/...'. This request has been blocked.
</code></pre>
<p>Worth knowing: <code>http://localhost</code> is <em>exempt</em> from that rule, so this never shows up while you&#8217;re testing locally. It appears the moment you go live.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A9-e3-mixed-content.webp" alt="Chat widget showing a generic error and a loading spinner after a blocked mixed-content request" /></p>
<h2>Step 3: your API key, not in the snippet</h2>
<p><strong>Do this:</strong></p>
<ol>
<li>Get a key. OpenAI keys come from platform.openai.com, Anthropic keys from console.anthropic.com. Running Ollama locally? Skip this step entirely, you don&#8217;t need one.</li>
<li>Open <a href="https://ceeveeglobal.com/how-to-edit-wp-config-php-wordpress/"><code>wp-config.php</code></a> and add this line above <code>/* That's all, stop editing! */</code>:</li>
</ol>
<pre><code class="language-php">define( 'MY_CHATBOT_API_KEY', 'sk-your-key-here' );
</code></pre>
<ol>
<li>Save, reload your site, and ask the bot something.</li>
</ol>
<p>The PHP snippet reads that constant. Don&#8217;t paste the key into the snippet itself: a key in a WPCode snippet sits in your database, and in every backup and export of it.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A4-conversation.webp" alt="The finished chat widget open on a page, holding a real conversation" /></p>
<p>If you got an answer, the build is done. Everything after this is making it yours, and knowing what to do when it breaks.</p>
<h2>Make it yours</h2>
<p>This is the part most tutorials skip, and it&#8217;s the part you&#8217;ll actually spend time on. None of it needs a code editor if you&#8217;re on the plugin version, and all of it is one <code>CONFIG</code> block if you&#8217;re on the snippets.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A6-settings-full-scaled.webp" alt="The chatbot settings screen showing the prompt, model, colours, limits and quick replies" /></p>
<h3>What it says before anyone types</h3>
<p>Three fields, and they&#8217;re the three everyone changes first.</p>
<ul>
<li><strong>Window title</strong>, the heading on the panel. &#8220;Ask us anything&#8221; beats &#8220;Chatbot&#8221;.</li>
<li><strong>First message</strong>, what it greets people with.</li>
<li><strong>Quick replies</strong>, the suggestion buttons under that greeting. Two or three, phrased the way a visitor would phrase them, because most people click one of these instead of typing.</li>
</ul>
<p>In the snippets, those are <code>title</code>, <code>startup_message</code> and <code>quick_replies</code> at the top of the PHP file. In the plugin, they&#8217;re the first three boxes on the settings screen.</p>
<h3>What it knows about your business</h3>
<p>The <strong>system prompt</strong> is the most important field there is. It&#8217;s read on the server on every request, so a visitor can&#8217;t overwrite it or talk their way past it.</p>
<p>Here&#8217;s the thing nobody tells you, and it surprises everyone: <strong>the bot only knows what&#8217;s in that box.</strong> It does not read your pages, your posts or your products. If you want it answering questions about your prices, put your prices in there.</p>
<pre><code>You answer questions for Example Plumbing in Bristol.
Boiler service £95. Emergency callout £120 plus parts. Bathrooms quoted on site.
Open Mon to Fri 8am to 6pm, Saturday mornings by arrangement, closed Sunday.
We cover Bristol and 20 miles around it.
To book: 0117 000 0000 or the form at /contact.
Answer briefly. If you don't know, say so and point them at the contact form.
Never invent a price.
</code></pre>
<p>The cost of that: it&#8217;s sent on <strong>every single message</strong>, so you pay for it every time. A tight prompt is cheaper than a long one, and pasting your whole FAQ in there gets expensive at volume.</p>
<h3>Colours</h3>
<p>Two values, not a theme editor: an <strong>accent colour</strong> and the <strong>text colour that sits on it</strong>. They flow through the launcher, the header and the visitor&#8217;s own message bubbles. Pick your brand colour and a text colour that reads clearly on it.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A16b-kit-page-open-scaled.webp" alt="The chat panel closed and open, restyled to match a site's own colours" /></p>
<h3>Swapping the model, including to a free local one</h3>
<p>The same screen, pointed at two different providers. On the left, a local model through Ollama with the key field empty. On the right, OpenAI with a real key.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A22a-provider-local-scaled.webp" alt="The provider settings pointed at a local Ollama model" /></p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A22b-provider-openai-scaled.webp" alt="The same provider settings pointed at OpenAI" /></p>
<p>Nothing else changes. Not the widget, not the styles, not your prompt. Your visitors see no difference at all, which is what makes &#8220;test free locally, then switch to a paid key&#8221; a real workflow rather than a slogan.</p>
<h3>The settings that control what a bad day costs you</h3>
<p>These are the ones worth understanding before you leave it running. Every one is enforced on your server, before the AI model is ever called, so a refused request costs nothing.</p>
<table>
<thead>
<tr>
<th>Setting</th>
<th>What raising it costs you</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Messages per visitor</strong> (per hour)</td>
<td>This is the ceiling on what one person can spend. <code>0</code> means no ceiling.</td>
</tr>
<tr>
<td><strong>Max reply length</strong></td>
<td>Longer answers, more cost per message, more rambling.</td>
</tr>
<tr>
<td><strong>Max question length</strong></td>
<td>Someone can paste a whole document in and you pay to read it.</td>
</tr>
<tr>
<td><strong>Remembered exchanges</strong></td>
<td>Better memory inside a conversation, but every remembered turn is re-sent and re-paid on every later message. This is the one that quietly multiplies a long chat.</td>
</tr>
<tr>
<td><strong>Creativity</strong> (temperature)</td>
<td><code>0.7</code> is a sensible default. Above <code>1.2</code> it starts inventing. If it quotes your prices, go lower.</td>
</tr>
<tr>
<td><strong>Timeout</strong></td>
<td>Too short and a slow local model fails on its first request. Too long and it ties up a PHP worker.</td>
</tr>
</tbody>
</table>
<h2>When it breaks: 9 symptoms, 9 fixes</h2>
<p>Here&#8217;s the part no tutorial includes. Every row is something I actually hit in this lab, and most of them are in the screenshots above.</p>
<table>
<thead>
<tr>
<th>What you see</th>
<th>What&#8217;s actually wrong</th>
<th>Fix</th>
</tr>
</thead>
<tbody>
<tr>
<td>Widget does nothing, log empty, route 404s</td>
<td>Snippet Location is Frontend Conditional Logic</td>
<td>Set it to Run Everywhere</td>
</tr>
<tr>
<td>&#8220;Oops!&#8221; + <code>Unexpected token '&lt;'</code> in console</td>
<td>Permalinks set to Plain. <code>/wp-json/</code> returns <strong>HTML with a 200</strong></td>
<td>Change permalinks, or call <code>/?rest_route=</code></td>
</tr>
<tr>
<td>&#8220;Oops!&#8221; + <code>ERR_NAME_NOT_RESOLVED</code></td>
<td>Hardcoded dev hostname in the JS</td>
<td>Use your real site URL</td>
</tr>
<tr>
<td>&#8220;Oops!&#8221; + <code>Mixed Content ... blocked</code></td>
<td>HTTPS page calling an <code>http://</code> endpoint</td>
<td>Use <code>https://</code>, or a relative URL</td>
</tr>
<tr>
<td>&#8220;Oops!&#8221;, 200 response, empty log</td>
<td>Bad API key, wrong model name, or DNS. <strong>All three look identical</strong></td>
<td><code>curl</code> the route and read the <code>message</code> field</td>
</tr>
<tr>
<td>Wrong icons / empty squares</td>
<td>Your theme already loads a different FontAwesome version</td>
<td>Drop the snippet&#8217;s <code>&lt;link&gt;</code> and use the theme&#8217;s</td>
</tr>
<tr>
<td>Chatbot forgets the previous message <em>(only once you move history server-side)</em></td>
<td>Session id case-mangled on the way back in by <code>sanitize_key()</code></td>
<td>Generate session ids in lowercase hex</td>
</tr>
<tr>
<td>Header says &#8220;Offline&#8221;</td>
<td>Config endpoint never answered</td>
<td>Check the route first, then the config values</td>
</tr>
<tr>
<td>Strangers using your credit</td>
<td>No nonce, no rate limit</td>
<td>See the next section</td>
</tr>
</tbody>
</table>
<p>Two things that tripped me up worth calling out. <strong><code>response.ok</code> is not &#8220;it worked&#8221;</strong>. Under Plain permalinks the route returns a perfectly valid 200 carrying an HTML page, and the kit&#8217;s JavaScript believes it. And a failing API key, a bad model name and an unresolvable host produce <em>exactly</em> the same &#8220;Oops!&#8221; with <strong>0 bytes</strong> in the log every time.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A10-e4-oops.webp" alt="The widget showing &quot;Oops! Something went wrong!&quot; beside a debug log of zero bytes" /></p>
<h2>Common mistakes (and how to avoid them)</h2>
<ul>
<li><strong>Leaving the route public with no rate limit.</strong> Ten unauthenticated requests landed, 10 of 10. Anyone with the URL can spend your API credit.</li>
<li><strong>Letting the browser send the conversation history.</strong> I planted a fake earlier turn saying <em>&#8220;My campaign code is TOPAZ-8831&#8221;</em> and asked the bot to repeat it. With no history it said <em>&#8220;I dont know&#8221;</em>. With the injected history it said <strong>TOPAZ-8831</strong>. The visitor controls what your model is told.</li>
<li><strong>Trusting the system prompt to keep it on topic.</strong> My snippet said &#8220;only answer digital marketing questions&#8221;. It wrote me a poem about the sea.</li>
<li><strong>Debugging with <code>WP_DEBUG</code> and expecting a log.</strong> For every failure above, the log stayed empty.</li>
<li><strong>Pasting your key into the snippet.</strong> Use <code>wp-config.php</code>.</li>
</ul>
<h2>What you should improve next</h2>
<p>Three changes take this from a demo to something I&#8217;d leave on a client site.</p>
<p><strong>Check a nonce.</strong> Hand the widget a <code>wp_rest</code> nonce and verify it. Give the rejection its own error code so the widget can tell &#8220;your token expired&#8221; apart from &#8220;you&#8217;re going too fast&#8221;, fetch a fresh one and retry once. That keeps the check working on a cached page.</p>
<p><strong>Add a rate limit, in front of the provider.</strong> Mine is a counter in a transient. Six requests against a limit of three gave <strong>three 200s, then three 429s</strong>, and the refused ones never reached the model, so they cost nothing.</p>
<p><strong>Keep the conversation on the server.</strong> Store history in a transient keyed by session id. The browser then sends one message and an id, so it can&#8217;t rewrite what the model sees.</p>
<p>After those three, the same abuse test that landed 10 of 10 against the tutorial build landed <strong>zero</strong>. And when the provider genuinely fails, the visitor gets a neutral sentence while the real cause goes to the log where the owner can read it.</p>
<p><img decoding="async" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/A18-e11-before-after.webp" alt="Before and after comparison of unauthenticated requests against the tutorial build and the hardened build" /></p>
<h2>Frequently asked questions</h2>
<p><strong>Do I need a plugin for this?</strong><br />
No, and that&#8217;s the point of the snippet build. You need WPCode to hold the snippets, but the chatbot itself is your own code, so nothing is hidden from you.</p>
<p><strong>Will it answer questions about my own pages and prices?</strong><br />
Only if you tell it them. It doesn&#8217;t read your site. Everything it knows comes from the system prompt field, so your prices, hours and policies have to be typed in there. Searching your actual content is a much bigger build than this one.</p>
<p><strong>How much does it cost to run?</strong><br />
The build costs nothing. Each conversation costs whatever your provider charges per token, and the tutorial version sends the <strong>entire history on every turn</strong> with no cap, so a long chat gets expensive quietly.</p>
<p><strong>Can I use Claude instead of ChatGPT?</strong><br />
Yes. The request shape differs, so you need a small adapter per provider rather than one function with the URL swapped.</p>
<p><strong>Why does my chatbot say &#8220;Oops&#8221; with nothing in the log?</strong><br />
Because that one message covers at least five unrelated causes. Start with <code>curl</code> on your route and read the response body, not the status code. The table above maps each body to its cause.</p>
<p><strong>Is it safe to leave the endpoint public?</strong><br />
Not as written. A public endpoint with no nonce and no rate limit is a proxy to your paid API that anyone can drive.</p>
<h2>Take the files</h2>
<p>Everything in this post, as something you can actually run.</p>
<div style="border: 1px solid #e3e3ea; border-radius: 14px; padding: 22px; margin: 32px 0; background: #fbfbfd;">
<p style="margin: 0 0 4px; font-size: 1.05em; font-weight: bold; color: #15151c;">Get the files</p>
<p style="margin: 0 0 18px; color: #52525e; font-size: 0.95em;">Two ways to run this. The same hardened code underneath either one.</p>
<div style="display: flex; flex-wrap: wrap; gap: 16px;">
<div style="flex: 1 1 260px; border: 1px solid #e3e3ea; border-radius: 10px; padding: 18px; background: #ffffff;">
<p style="margin: 0 0 6px; font-weight: bold; color: #15151c;">The snippet files</p>
<p style="margin: 0 0 14px; color: #52525e; font-size: 0.92em;">Four files you paste into WPCode, exactly the build in this post. You change a CONFIG block to customise it.</p>
<p><a style="display: inline-block; padding: 11px 20px; border-radius: 8px; background: #4F46E5; color: #fdfff4; font-weight: bold; text-decoration: none;" href="https://github.com/dimu2000/cvg-ai-chatbot-snippet/archive/refs/heads/main.zip">Get it free</a></p>
<p style="margin: 12px 0 0; font-size: 0.85em;"><a style="color: #52525e;" href="https://github.com/dimu2000/cvg-ai-chatbot-snippet">or read through the files first</a></p>
</div>
<div style="flex: 1 1 260px; border: 1px solid #e3e3ea; border-radius: 10px; padding: 18px; background: #ffffff;">
<p style="margin: 0 0 6px; font-weight: bold; color: #15151c;">The finished plugin</p>
<p style="margin: 0 0 14px; color: #52525e; font-size: 0.92em;">Upload, activate, fill in a settings screen. No code editor, no CONFIG block, and the setup guides are in the box.</p>
<p><a style="display: inline-block; padding: 11px 20px; border-radius: 8px; background: #15151c; color: #fdfff4; font-weight: bold; text-decoration: none;" href="https://www.patreon.com/cw/ceeveeglobal">Get the plugin</a></p>
<p style="margin: 12px 0 0; font-size: 0.85em; color: #52525e;">on my Patreon</p>
</div>
</div>
</div>
<p>Which one? If you&#8217;re comfortable pasting code and want to read every line before it runs on your site, take the snippets. If you&#8217;d rather upload a zip, tick some boxes and get on with your day, take the plugin. Both are the hardened build. Neither is a cut-down version of the other.</p>
<h2>Wrap-up</h2>
<p>An AI chatbot on WordPress is genuinely a 30-minute build. The hard part isn&#8217;t getting it talking, it&#8217;s the gap between &#8220;it answers&#8221; and &#8220;it&#8217;s safe to leave running&#8221;. A nonce, a rate limit and server-side history are what close it.</p>
<p>If you&#8217;re new to editing site files at all, start with <a href="https://ceeveeglobal.com/how-to-edit-wp-config-php-wordpress/">how to edit wp-config.php</a> before you touch anything else.</p>
<p>If you get stuck on any of this, come and ask me in <a href="https://discord.gg/W7vvnVSX2G">my Discord</a>. I&#8217;d rather answer a question there than have you give up on it.</p>
<p>The post <a href="https://ceeveeglobal.com/add-ai-chatbot-to-wordpress/">How to Add an AI Chatbot to WordPress (No Plugin Needed)</a> appeared first on <a href="https://ceeveeglobal.com">The Beginner’s Playbook for Fixing WordPress Errors</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceeveeglobal.com/add-ai-chatbot-to-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Build and Integrate an AI Chatbot into Your WordPress Site: A Complete Guide</title>
		<link>https://ceeveeglobal.com/build-an-ai-chatbot-into-wordpress/</link>
		
		<dc:creator><![CDATA[Dimuthu Harshana]]></dc:creator>
		<pubDate>Mon, 03 Nov 2025 05:12:46 +0000</pubDate>
				<category><![CDATA[Beginner Guides]]></category>
		<category><![CDATA[Ai]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Build AI Chatbot]]></category>
		<guid isPermaLink="false">https://ceeveeglobal.com/?p=14413</guid>

					<description><![CDATA[<p>Why You Should Add an AI Chatbot to Your Website Why did I create an AI chatbot for my website? Users coming to my website come from different countries. Their arrival times vary depending on the countries they live in. So if I go to chat with them, I have to put my life under&#8230;&#160;<a href="https://ceeveeglobal.com/build-an-ai-chatbot-into-wordpress/" rel="bookmark">Read More &#187;<span class="screen-reader-text">How to Build and Integrate an AI Chatbot into Your WordPress Site: A Complete Guide</span></a></p>
<p>The post <a href="https://ceeveeglobal.com/build-an-ai-chatbot-into-wordpress/">How to Build and Integrate an AI Chatbot into Your WordPress Site: A Complete Guide</a> appeared first on <a href="https://ceeveeglobal.com">The Beginner’s Playbook for Fixing WordPress Errors</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Why You Should Add an AI Chatbot to Your Website</h2>
<p>Why did I create an AI chatbot for my website?</p>
<p>Users coming to my website come from different countries. Their arrival times vary depending on the countries they live in. So if I go to chat with them, I have to put my life under my website.</p>
<p>I wanted to overcome that barrier and provide instant responses to user queries, improving engagement and satisfaction.</p>
<p>It also allowed me to increase my website&#8217;s efficiency, automate repetitive tasks, and free up time for more complex issues. Plus it allowed me to increase conversions.</p>
<p>&nbsp;</p>
<p>How would you like to be able to go to a website and get instant answers to your questions without waiting for someone to respond?</p>
<p>Basically, that is the main task an AI chatbot can do for your website!</p>
<p>Hence, AI chatbots are becoming a must for any website. That&#8217;s because it can accomplish tasks ranging from improving user experience to improving website efficiency and increasing conversions.</p>
<p>Here, I will introduce you to the steps to create a similar or more improved AI chatbot for your website. You can try using the click icon on the bottom right of this page.</p>
<h3>By adding an AI chatbot to your website, you can:</h3>
<h4>Improving user experience</h4>
<p>The biggest advantage of an AI chatbot is that it can give very accurate answers to user queries instantly. Imagine a user lands on your website in the middle of the night with a question. A chatbot can provide an immediate response instead of waiting for someone to get back to them. This will make your website more attractive and make your visitors happy.</p>
<h4>Increasing efficiency</h4>
<p>By automating repetitive tasks, an AI chatbot saves you time. Think about it. Instead of answering the same questions over and over again, you can do it through your chatbot. This allows you to focus on the more complex and important tasks of your website.</p>
<h4>Increase conversions</h4>
<p>AI chatbots can guide users through your website, helping them find what they&#8217;re looking for faster. This can lead to more sales, signups, or whatever else your website may be aiming for and have a positive impact.</p>
<p>In this guide, I&#8217;ll walk you through everything you need to know to build your own AI chatbot and integrate it into your WordPress site.</p>
<h2>Understanding AI Chatbots: The Core Structure</h2>
<p>Before we dive into the technical aspects, it is essential to understand the basic structure of an AI chatbot. It will be very useful for you while building or improving this chatbot.</p>
<h4>Key components of an AI chatbot</h4>
<p><strong>User Interface (UI):</strong> The visual part through which users interact with the chatbot. This is shown in the image above.</p>
<p><strong>Backend:</strong> Server-side logic that processes user input and generates responses.</p>
<p><strong>AI Integration:</strong> The chatbot&#8217;s brain is powered by models like OpenAI.</p>
<h4>Overview of how it works</h4>
<p>&nbsp;</p>
<p>Chatbots capture user input, send it to the backend, where AI processes it, and then displays the response to the user on the frontend.</p>
<h2>Step-by-step guide to building your AI Chatbot</h2>
<p>Now that you have a basic understanding of AI Chatbot, let&#8217;s start building your Chatbot.</p>
<p>I will guide you step by step. Follow these steps very carefully. I have used <strong>PHP</strong>, <strong>HTML</strong>, <strong>CSS</strong>, and <strong>JavaScript</strong> for this process. Don&#8217;t worry I&#8217;m not an expert in these things like you. But you can make this process very easy by using ChatGPT or Claude as a support.</p>
<p>However, I am providing all the codes you need here.</p>
<p><a href="https://ceeveeglobal.ck.page/0afba29bbd"><br />
AI Chatbot For WordPress<br />
</a></p>
<h3>Creating a Chatbot UI</h3>
<p>First impressions are the foundation of anything. A good-looking chatbot makes a big difference to your website. Here&#8217;s how to design a simple yet attractive chatbot interface.</p>
<h5>Essential UI elements</h5>
<p><strong>Chat Box:</strong> This is where the conversation happens. It shows the chat history between the user and the chatbot.</p>
<p><strong>Input Field:</strong> Allows users to type their messages here.</p>
<p><strong>Send Button:</strong> This is used to send the message to the chatbot.</p>
<p>To create this UI, you will use HTML and CSS. You can download all related files below.</p>
<p>After entering the <strong>AI-chatbot</strong> folder, you can see two folders: <strong>front</strong> and <strong>back</strong>. Go inside the front folder. There are 4 files as shown below.<img fetchpriority="high" decoding="async" src="https://ceeveeglobal.com/wp-content/uploads/chatbot-3.png" alt="chatbot-3" width="700" height="450" /></p>
<p>Here the <strong>chatbot.html</strong> file contains everything. But the <strong>Index.html</strong>, <strong>script.js</strong>, and <strong>style.css</strong> files contain only the related things. From there you can use these files appropriately.</p>
<p>Either way, open <strong>chatbot.html</strong> or <strong>Index.html</strong> in your browser. Then you will see the chatbot as below.<img decoding="async" src="https://ceeveeglobal.com/wp-content/uploads/chatbot_4.png" alt="chatbot_4" width="700" height="450" /></p>
<p>But you still can&#8217;t chat with this.</p>
<h4>Set up Chatbot code in the backend</h4>
<p>Now that your UI is ready, it&#8217;s time to access the code that will make your chatbot work.</p>
<ol>
<li>
<h5><strong>Install and activate WPCode Lite.</strong></h5>
</li>
<li>Paste the code in the back folder here. Note, the Code Type should be changed to P<strong>HP Snippet.</strong></li>
<li>Connecting the OpenAI API Key.<br />
Register on the OpenAI website and get an OpenAI API key. Because our chatbot is powered by the OpenAI API.  Keep this confidential. Next, enter the OpenAI API key in the snippet and save the snippet.</li>
</ol>
<h4>Linking the UI with the backend</h4>
<p>Now that your front and back panels are ready, it&#8217;s time to connect them together. This is where JavaScript comes into play.</p>
<p>Now open the script.js file in the front folder. You can use Notepad for this. Go there and update your domain name and save the file.</p>
<p>Eg: replace <strong>https://YourWebsite.com</strong> with your site domain name.</p>
<p>If you did everything correctly, now you just have to open the index.html file again. To your surprise, your chatbot will work like the image below.</p>
<p><img decoding="async" src="https://ceeveeglobal.com/wp-content/uploads/chatbot-9.png" alt="chatbot-9" width="700" height="450" /></p>
<h2>Advanced Customisation: Taking Your Chatbot to the Next Level</h2>
<p>This chatbot is designed to suit my site. That is, only matters related to WordPress can be chatted through this chat button. When asked about a matter not related to WordPress, it replies, &#8220;I am trained to assist with WordPress-related questions. Feel free to ask me anything about WordPress&#8221;.</p>
<p>So, how to customise this chatbot for you?</p>
<h3>System Prompt Customisation</h3>
<p>Customising your AI chatbot&#8217;s system prompt is essential to ensure it aligns with the specific needs of your website and the type of interaction you want to have with your users. So here&#8217;s how to adjust your system prompt to suit different websites:</p>
<h4>1. Understand the purpose of your website</h4>
<p>Identify the primary function of your website. Is it an e-commerce site, a blog, a tech support platform or a content-driven site? Your chatbot&#8217;s system prompt should reflect the primary purpose and type of queries users might have.</p>
<h4>2. Define the scope of the interaction</h4>
<p>Clearly state the purpose for which your chatbot is designed. For example, if your website focuses on e-commerce, chatbots can assist with product inquiries, order tracking, or product recommendations. The scope should be narrow enough to keep the chatbot focused but broad enough to handle common user needs.</p>
<h4>3. Crafting the System Prompt</h4>
<p>Change the language and focus of the system prompt based on the context of the site. Here&#8217;s how you can adjust the provided trigger for different types of websites:</p>
<h5>Example 1: E-commerce Website:</h5>
<p><em>You are a knowledgeable shopping assistant on our online store. Your task is to help users find products, answer questions about orders, provide product recommendations, and assist with any inquiries related to our store. Engage users in friendly conversations to enhance their shopping experience. Do not respond to questions unrelated to shopping or our products. If asked, politely state that you are here to assist with shopping-related queries.</em></p>
<h5>Example 2: Tech Support Website</h5>
<p><em>You are a tech support specialist. Your task is to help users troubleshoot technical issues, provide guidance on software and hardware products, and assist with inquiries related to our tech support services. Engage users in problem-solving conversations to resolve their technical problems. Do not respond to questions outside of tech support. If asked, politely inform them that you specialize in providing tech support assistance.</em></p>
<h5>Example 3: Blog or Content-Focused Website</h5>
<p><em>You are an expert content guide for our website. Your task is to help users find articles, explain content topics, suggest related posts, and assist with any questions about our blog content. Engage users in informative conversations to enrich their reading experience. Do not respond to questions unrelated to our content. If asked, gently redirect them to the relevant blog topics.</em></p>
<h5>Example 4: Educational Platform</h5>
<p><em>You are an educational assistant for our online learning platform. Your task is to help users navigate courses, answer questions about course content, provide study tips, and assist with any inquiries related to learning on our platform. Engage users in supportive conversations to enhance their learning journey. Do not respond to questions outside of education-related topics. If asked, kindly direct them to the appropriate course material.</em></p>
<h4>4. Enter the brand identity</h4>
<p>Make sure the tone and style of the prompt aligns with your brand&#8217;s voice. If your brand is casual and fun, the query should reflect that. For a more professional brand, use formal and precise language.</p>
<h4>5. Test and Iterate</h4>
<p>After customizing your system prompt, test it with real user interactions to see if it meets the intended objectives. Gather feedback and make adjustments as needed to fine-tune the chatbot&#8217;s performance.</p>
<p>By customizing your chatbot&#8217;s system prompts, you can ensure that it provides relevant, useful and on-brand responses, making your website&#8217;s user experience more engaging and effective.</p>
<p>After you prepare your prompt, go to <strong>&#8220;Add the last prompt to the conversation history&#8221;</strong> in the Backend Snippet and enter the prompt you prepared.</p>
<p>Then save the code snippet. Depending on the success of your prompting, the output of your chatbot will be successful.</p>
<h3>Icon Customization</h3>
<p>But your chatbot still has the same icon as my chatbot. Let&#8217;s change that too.</p>
<p>Go to <strong>&#8220;load_chat_bot_base_configuration&#8221; </strong>and change your user_avatar_url and bot_image_url to the icon you require.</p>
<h3>Other minor changes</h3>
<p>You can change the Startup Message to suit you. You can also change the font size and commonButtons of your chatbot.</p>
<p><img loading="lazy" decoding="async" src="https://ceeveeglobal.com/wp-content/uploads/chatbot-10.png" alt="chatbot-10" width="700" height="450" /></p>
<h2>Final Steps: Publishing Your Chatbot on WordPress</h2>
<p>Now you can integrate your chatbot into your WordPress website pages.<br />
For that, we are again asking for help in the code snippet.</p>
<p>Go to Header and Footer in the code snippet. Go there and paste the full code, HTML, CSS, and JavaScript, in the footer.</p>
<p><img loading="lazy" decoding="async" src="https://ceeveeglobal.com/wp-content/uploads/chatbot-11.png" alt="chatbot-11" width="700" height="450" /></p>
<p><strong>Bonus Tip:</strong> If you run into any WordPress errors while setting up your chatbot, don’t worry. My WP Error Expert AI tool can help you fix many errors easily. And if you’re a web developer, check out my other AI tools designed to make your life easier.</p>
<h3>Conclusion</h3>
<p>In conclusion, integrating an AI chatbot into your WordPress site can significantly enhance user experience, increase efficiency, and drive conversions.</p>
<p>By automating responses to common queries, an AI chatbot ensures that visitors receive instant support, no matter the time of day.</p>
<p>This guide provides a comprehensive, step-by-step process to build and customize an AI chatbot that aligns with your website&#8217;s specific needs, whether it&#8217;s for e-commerce, tech support, content guidance, or education.</p>
<p>By following these steps, you can create a chatbot that improves customer satisfaction and optimizes your website&#8217;s performance, ultimately leading to better engagement and outcomes.</p>
<p><a href="https://ceeveeglobal.ck.page/0afba29bbd"><br />
AI Chatbot For WordPress<br />
</a></p>
<p>The post <a href="https://ceeveeglobal.com/build-an-ai-chatbot-into-wordpress/">How to Build and Integrate an AI Chatbot into Your WordPress Site: A Complete Guide</a> appeared first on <a href="https://ceeveeglobal.com">The Beginner’s Playbook for Fixing WordPress Errors</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
