Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/felixkipyego/samomind-ai-assistant/archive/refs/heads/main.zipWordPress plugin that keeps a SamoMind AI assistant's knowledge base in sync with the site's public content, and adds the SamoMind chat widget.
- Requires WordPress 6.0+, PHP 7.4+. GPL-2.0-or-later.
- Architecture and conventions: docs/ARCHITECTURE.md
- API contract (pinned copy): docs/API_CONTRACT.md
- Pilot acceptance checklist: docs/ACCEPTANCE.md
Install
- Zip the plugin without the development files (
.distignorelists them), or copy the folder towp-content/plugins/samomind-ai-assistant. - Activate SamoMind AI Assistant in Plugins. A SamoMind menu appears with Status and Settings.
Connect
-
In the SamoMind dashboard (app.samomind.com), open Sources, then the WordPress card, and click Create an ingest key. The dashboard shows a key id (a UUID) and a secret (
smik_...). The secret is shown only once. Creating a new key revokes the old one at once, so every connected site stops until it gets the new key. -
In WordPress, open SamoMind > Settings. Paste the secret and click Save secret. Paste the key id and click Save Settings. Leave the API base URL at
https://api.samomind.comunless SamoMind gives you a staging address.To keep the secret out of the database, put it in
wp-config.phpinstead; the constant wins and the field becomes read-only:define( 'SAMOMIND_API_SECRET', 'smik_...' ); -
Open SamoMind > Status and click Connect. The site appears in the dashboard's WordPress card, and the first full sync starts in the background. A refusal is shown with the API's own message and code.
The saved secret is never shown again, never logged, and only used to sign requests (HMAC-SHA256, contract section 5.2). It is never sent.
What is synced
Published, public, not password-protected:
- pages and posts
- public custom post types (public and publicly queryable; never attachments or WordPress internals)
- WooCommerce products when WooCommerce is active, except those with catalog visibility "hidden"; orders, carts and customers are never read
Per item: the post id, permalink, title, text (the rendered content with shortcodes and blocks applied, reduced to plain text, plus the excerpt and, for products, the short description), kind (page, post, product or custom), modified time, and the names of its public taxonomy terms. Products add price and stock status.
SamoMind > Settings > What is synced lists these post types, all ticked by default. Untick a type to stop syncing it: its published items are queued for deletion and removed from SamoMind in the background. Ticking it again adds them back at the next daily reconcile, or click Sync now. A post type registered later is ticked until you untick it.
Never sent: drafts, scheduled, pending, private or password-protected content, users, visitors, comments, form entries, orders, media files.
When content changes:
| On the site | Request |
|---|---|
| publish or update | /documents (about 30 seconds later, batched) |
| trash, unpublish, make private, add a password, delete | /documents/delete |
| connect, "Sync now" | full sync: /sync begin, /documents batches, /sync complete, then reconcile |
| daily | /checkin, then /reconcile |
uninstall, "Disconnect", wp samomind disconnect |
/disconnect (SamoMind removes this site's documents) |
| deactivate | nothing; scheduled work stops until you reactivate |
Background work runs on Action Scheduler when WooCommerce provides it,
otherwise on WP-Cron. WP-Cron runs when the site gets visits; on a quiet
site, use a real cron job (wp cron event run --due-now).
If the site is disconnected in the SamoMind dashboard, the dashboard wins: the plugin forgets the connection, sends nothing more, and shows "Disconnected from the SamoMind dashboard." with a Connect button. It never reconnects by itself.
The Status page shows the connection, sync progress, the last full sync's counts and the last 200 requests (time, endpoint, HTTP status, code; never bodies). The SamoMind API does not report the indexed page count to the plugin; the dashboard shows it.
Chat widget
Paste the snippet from the dashboard's Widget screen into SamoMind > Settings > Embed snippet. It prints in the footer of every front-end page. Only a single `