Narrate every new Ghost blog post into an audio edition

Every hour, Geni finds your newest Ghost posts, narrates them in a consistent ElevenLabs voice, saves the MP3 to Google Drive, and announces the audio edition in Slack.

Agentic Task
GhostElevenLabsGoogle DriveSlack BotMarketingOperationsContent GenerationNotifications & Alerts

Every hour, find Ghost blog posts that were published since the last run and turn each one into a narrated MP3 audio edition that my readers can listen to alongside the written post.

Trigger: cron, every hour.

Step 1 — Find new posts. Use Ghost Browse Posts (Admin API), filtered to status:published and published_at greater than the last run, sorted oldest first so I work through them in order. For each post, also keep the title, slug, full HTML body, and published_at.

Step 2 — Skip posts already processed. Before narrating, call Google Drive List Files against the configured target folder and search for a file whose name starts with the post slug (for example name contains '<slug>' and '<folderId>' in parents and trashed = false). If a match exists, skip that post.

Step 3 — Clean the body for narration. Strip elements that do not narrate well: image captions and figure alt text, footnote markers, raw URLs, code fences and inline code, embed blocks, and obvious call-to-action / subscribe-now / 'read more' blocks. Keep the post title (read it once at the start) and the body prose. Decode HTML entities and collapse repeated whitespace.

Step 4 — Narrate with ElevenLabs Text to Speech. Use one configurable voice_id for every post so all audio editions sound like the same narrator, the eleven_multilingual_v2 model, and a single output_format (default mp3_44100_128). If the cleaned text is longer than about 9,000 characters, split it on sentence boundaries into chunks under that cap, call Text to Speech once per chunk keeping voice_id, model_id, and output_format identical across chunks, then concatenate the returned MP3 bytes in order so the final audio plays as one continuous track without audible seams.

Step 5 — Save to Google Drive. Upload the final MP3 to a configurable Google Drive folder using Upload File (Multipart). Name the file using the post slug (for example <slug>.mp3) so the dedupe check in Step 2 keeps working. Make the file shareable to anyone with the link and capture the shareable URL for the next step.

Step 6 — Announce in Slack. Use Slack Bot Send a Message to post into a configurable channel. The message should include the post title, the public Google Drive link to the audio, and a short ready-to-copy blurb (one or two sentences) the social team can paste straight into LinkedIn or X to announce the audio edition.

Configurable inputs: the Ghost site, the target Google Drive folder ID, the target Slack channel, the ElevenLabs voice ID, and optionally an override for the announcement blurb tone.

Additional information

What does this prompt do?
  • Checks Ghost on the hour for blog posts published since the last run.
  • Narrates the full post in a consistent voice, chunking long-form pieces so multi-thousand-word essays still sound seamless.
  • Saves the finished MP3 to a Google Drive folder you choose, using the post slug as the filename.
  • Posts a Slack message with the post title, a shareable Drive link, and a short copy-ready blurb your social team can use as the announcement.
What do I need to use this?
  • A Ghost site with an admin login so the workflow can read your latest posts.
  • An ElevenLabs account and a chosen voice you want every narration to use.
  • A Google Drive folder where audio editions should land.
  • A Slack workspace and the channel where the launch announcement should post.
How can I customize it?
  • Swap the ElevenLabs voice, or change the narration style to match your brand tone.
  • Point the workflow at a different Google Drive folder, or change the file naming pattern to include the publish date next to the slug.
  • Change which Slack channel gets the announcement, or rewrite the blurb so it matches the way your team usually talks on social.

Frequently asked questions

Will it re-narrate posts I have already published?
No. Before generating audio, the workflow checks your Drive folder for a file matching the post slug. Anything already processed is skipped, so you can safely leave it running.
What happens with long-form essays?
Posts longer than about 9,000 characters get split on sentence boundaries, narrated piece by piece with the same voice, and stitched back into one continuous MP3 so the seams are not audible.
Does it edit or republish anything in Ghost?
No. It only reads published posts. It never edits, drafts, unpublishes, or otherwise touches your Ghost content.
Can the social team share the audio straight from Slack?
Yes. The Slack message includes the post title, a shareable Google Drive link, and a short, ready-to-copy blurb crafted for social posts.
How often does it run, and can I change that?
It runs every hour by default so audio editions land soon after publish. You can dial the schedule up or down depending on how often you publish.

Ship audio editions without recording a thing.

Connect Ghost, ElevenLabs, Google Drive, and Slack once, and Geni narrates every new post for you on the hour.