Adding an audio version to your Craft CMS articles
Craft has no consumer plugin directory, but audio adds without a rebuild: an embed in the Twig template, a feed, or the API. The three methods, step by step, for a Craft CMS site.
Craft CMS is the choice of studios and agencies that want a bespoke control panel and full command over the rendered output. The flip side is that it does not behave like WordPress: there is no consumer plugin directory where you click to install a feature, but Twig templates, entry sections, and a philosophy where every page is built exactly as the developer decided. Adding an audio version of your articles is one of the cases where that freedom works in your favour: audio slots in wherever you want, with no rebuild and without touching your content model. Here are the three ways to do it, from the fastest to the most automated.
The player: one line in your entry template
In Craft, an article is an entry rendered by a Twig template (typically in templates/, one file per section). That is where everything happens. Adding a single line to that template shows the audio player on all your entries at once, without editing a single entry in the control panel.
The line to insert is this:
````
<script src="https://wedispatch.fr/player.js"
data-article="{{ entry.id }}" defer></script>
Place this embed exactly where you want the player to appear, just under the title, before the first paragraph, wherever suits you. Because it lives in the template and not in each entry, you paste it once, and every future publication inherits the player automatically. By default the player inserts before the first paragraph; to place it elsewhere, add <div data-wedispatch></div> where you want it.
Linking the player to the right article
What remains is telling the system which audio matches which entry. Two approaches, depending on your comfort with Craft.
The first lets detection work from the page URL: you give WeDispatch the address of your entry, the text is extracted from the published page, and the audio is matched. No field to create in your section.
The second, more robust, relies on Craft's entry ID, stable over time, which you pass to data-article as in the example above ({{ entry.id }}). You keep a reliable link even if the entry's URL changes in a redesign. This method costs nothing more to set up and spares you surprises the day you reorganise your URLs.
Three ways to generate the audio
Showing the player is not enough: you have to produce the file. On Craft, three routes are open to you.
The feed is the simplest. Craft does not publish an RSS feed by default, but producing one is a matter of a small template: you create a route that renders your recent entries as XML, or you expose JSON through a plugin such as Element API. You give us that address, new entries are detected as they are published, the text is extracted and the audio generated with no action on your part. The sitemap approach works on the same principle if you prefer to point at your site map.
Finally, if you need control (generating audio at a precise moment, choosing the voice, handling corrections), the API stays open. Craft lends itself well to this: a custom module or plugin can trigger a call the moment an entry moves to published status, via an event listener. It is a little work up front, but it hands you the whole chain, which is exactly what Craft is for. The logic is the same as for any headless CMS, and the RSS feed remains the no-code path when you would rather develop nothing.
Guided reading and accessibility
Whatever mode you choose, you can turn on guided reading: the text appears and highlights word by word along with the audio. On an agency site or a brand publication, this detail matters a great deal for dyslexic or visually impaired readers, and it is part of a serious accessibility effort rather than a cosmetic one. None of this requires touching Craft code a second time: these are dashboard settings.
When an entry changes
On Craft, revising an entry after publication is routine. If you use the feed, detection spots the update and marks the audio "to regenerate": you trigger generation once the text has settled, and successive corrections are never re-billed. If you use the API, just send the same external identifier with the corrected text. In both cases, the audio already online keeps being served until you relaunch, so no page is ever left without a player.
Where to start
For a Craft site, the fastest route is the feed combined with the embed in the template: about half an hour of setup, and every new entry ships with its audio version. If you want fine control, a custom plugin that calls the API on publish gives you the full chain. If your team also runs WordPress sites, the integration logic and how the plugin works are laid out on the WordPress page, and it clarifies the choices on the Craft side. The technical details are in the documentation, and the plans by article volume on the pricing page. The simplest way to decide is still to see the player running on your own pages: try it on an article and listen to the result before you equip the whole site.
Give your articles a voice with WeDispatch
This blog is itself voiced by WeDispatch. Curious how it sounds on your content?
Book a demo