Install on raw HTML / static sites
If your site is hand-written HTML, a static site generator (Jekyll, Hugo, Eleventy, Zola), or a generic static host (Netlify, Vercel, Cloudflare Pages, Firebase Hosting, GitHub Pages, S3+CloudFront), installation is a single <script> tag.
The snippet
<script src="https://spelo.ai/spelo.js" data-site-id="YOUR_SITE_ID" async></script>Where to paste it
Just before </body> on every page. The widget initializes on DOMContentLoaded, so placing it in <head> also works but delays first paint slightly on some browsers. Use the footer.
-
Open the HTML file for each page (or your shared layout / partial).
-
Find
</body>. -
Paste the snippet directly above it:
<body><!-- your content --><scriptsrc="https://spelo.ai/spelo.js"data-site-id="YOUR_SITE_ID"async></script></body> -
Deploy. Hit your site; orb appears at the bottom center.
Using a shared layout
Do not paste the snippet into every page individually — use your static site generator’s layout / partial system:
- Jekyll — add it to
_includes/footer.html - Hugo — add it to
layouts/partials/footer.html - Eleventy — add it to your base layout template (e.g.
_includes/base.njk) - Zola — add it to
templates/base.htmlinside the<body> - Astro — see the Astro install page
- Plain HTML — use an include directive (
<!--#include file="footer.html"-->), a client-sidefetch(not recommended), or copy-paste on every page
Hosting specifics
Netlify, Vercel, Cloudflare Pages
These hosts don’t affect the widget. Paste the snippet per the instructions above, deploy, done.
Firebase Hosting
Same — no special setup. If you’ve configured a strict Content Security Policy in firebase.json, see the CSP section below.
GitHub Pages
Works. GitHub Pages does not set a restrictive CSP.
S3 + CloudFront
Works. If you’ve configured a CSP via a response headers policy, whitelist Spelo (see below).
Content Security Policy
If your site sets a CSP header or <meta http-equiv="Content-Security-Policy">, include Spelo’s origins:
Content-Security-Policy: script-src 'self' https://spelo.ai; connect-src 'self' https://api.spelo.ai https://api.openai.com wss://*; media-src 'self' blob:;Verify
- Reload your page.
- Gold orb should appear at the bottom center.
- DevTools → Network →
spelo.js= 200 OK. - Click orb → allow mic → speak. The edges of the screen glow while the AI responds.
Troubleshooting
- Orb doesn’t show → check the browser console for 404s or CSP errors.
- Works on some pages but not others → you probably added the snippet to one layout but your site has multiple layouts. Search your templates for
</body>and add the snippet to every layout file. - See Orb not appearing for more.