Case Study All Work

Bespoken

Bespoken

A Craft CMS plugin that brings high-quality text-to-speech narration into the control panel using the ElevenLabs API. With the click of a button, written content becomes listenable — through a site-wide podcast feed or embedded directly into a page. On my own site, SuperGeekery, it reads my posts in a clone of my own voice.

  • Role: Solo developer — plugin architecture, API integration, web component
  • Stack: PHP, Craft CMS, ElevenLabs API, Web Components, JavaScript
  • Links: Plugin Store · Code

What it does

Bespoken connects Craft CMS to the ElevenLabs text-to-speech API. Content editors can generate high-quality audio narration for any entry from within the control panel. The plugin supports two delivery methods: a podcast feed that covers the entire site, and per-page audio embedding for inline playback.

I use Bespoken on my own site, SuperGeekery, where it reads posts using a clone of my own voice.

Companion project: Bespoken Audio Player

For sites that embed audio directly into pages, I built the Bespoken Audio Playera customizable, accessible web component that handles playback for any number of audio files. It’s designed to drop into any project, not just Craft CMS sites. You can see it in action on the demo page.

Why it matters

Bespoken is part of how I think about content accessibility: making written content available as audio, without manual recording or editing, and pairing it with a playback component built to be accessible from the start. The plugin handles the entire workflow — generation, storage, delivery — so content teams don’t need to leave the CMS, and listeners get an experience that works for them. It’s the same principle behind my accessibility work elsewhere: the content isn’t really done until everyone can actually use it.