Skip to content
AI Assistant

Guides

Add your mate to a Ghost publication

Wire the embed through Ghost's own Code Injection, let it learn your posts and pages, register a member as your identified reader, and add an inline placement.

On this page

Ghost has no plugin runtime like WordPress, so AI Assistant reaches a Ghost publication through the universal embed, added from Ghost's own Settings → Code injection panel rather than a script tag pasted somewhere ad hoc. The same snippet gives you the floating widget everywhere and, optionally, an inline placement on any page or post.

Before you start

  • A Ghost site (self-hosted or Ghost(Pro)) with admin access to Settings.
  • Ghost's Members feature turned on if you want identified sign-in — it ships with every Ghost install.
  • Your workspace open in the Console.

1. Add the embed via Code Injection

  1. In Ghost admin, open Settings → Code injection.

  2. In Site Header, paste the one script tag from your Console connection settings:

    html
    <script src="https://busymate.ai/embed/v1.js" data-assistant="<your-workspace-slug>" data-label="Ask us" async></script>
  3. Save. The floating widget now appears on every page and post — nothing else to configure for that part.

See the live example at ghost.demo.busymate.ai (The Meridian Line).

2. Put the chat inline on a page

Out of the box you get the floating widget. For an inline placement on a specific page (an About or Contact page), add an HTML card in Ghost's editor with the same frame the widget opens, placed in the page flow instead of a corner button:

html
<iframe src="https://busymate.ai/support/<your-workspace-slug>?channel=embed" title="Ask us" loading="lazy" style="width:100%;height:640px;border:0;border-radius:16px"></iframe>

The live demo shows both placements at once — the floating widget and an inline card on its About page.

3. Teach it your content

Point a website source at your own Ghost URL — the same crawler every connection uses, reading your published pages and posts and citing back to the page an answer came from.

4. Recognize signed-in members

Ghost's native Members feature is the identified-visitor layer: register your own site (or a small backend you control) as an identity provider — see Recognize signed-in customers for the exact fields (issuer, JWKS URL, the launch endpoint) — then define window.BusymateAI.getIdentity in Code Injection before the embed <script> tag (the embed captures it once at load) so a signed-in member is recognized without asking twice.

Manage from any MCP client

Every step above is available from any MCP client on your own account:

bash
claude mcp add --transport http busymate-ai https://busymate.ai/mcp

Troubleshooting

  • The widget never appears — check the browser console for a blocked or 404'd request to /embed/v1.js; confirm the Code Injection snippet saved (Ghost silently drops an edit left mid-save on some themes).
  • A signed-in member is still treated as a guest — getIdentity must be defined before the embed script tag runs; check it with window.BusymateAI.getIdentity() in the browser console.
  • Knowledge answers feel stale — a website source re-crawls on its own schedule; re-index it manually from the Knowledge base page after publishing a new post.

Verify

  1. Open your site in a private window: the floating widget appears and answers from your own posts and pages, with citations.
  2. Sign in as a Ghost member and ask the assistant something only a signed-in visitor should see (if you've wired identity) — the reply recognizes that visitor.
  3. Ask it to hand off to a person — the conversation reaches your Inbox.

Next

Questions

Do I need Code Injection, or is there a Ghost plugin?

Ghost doesn't support installable plugins the way WordPress does — Code Injection (a feature built into every Ghost site) is the supported path, and it's one paste, not a build step.

Does this work on Ghost(Pro) or only self-hosted?

Both — Code Injection is available on every Ghost plan.

Can I put the chat inline on a page instead of a floating button?

Yes, with one HTML card containing an <iframe> pointed at your workspace's /support/<slug>?channel=embed page — see the live demo above.