Daily team briefing in Slack with a voice recording
Turn a row in your Google Sheet into a spoken morning announcement, posted to Slack every weekday at 8:55am with the audio attached.
Build a deterministic, code-based workflow that posts a daily team briefing to Slack as a written message plus a voice recording. Every step maps to a known integration node. No model reasoning, no content generation. The text comes verbatim from a Google Sheet a human fills in.
Trigger: cron, every weekday (Monday through Friday) at 8:55am US Eastern.
Step 1. Read today's briefing row from Google Sheets using Get Values. The spreadsheet has a tab called 'Daily Briefings' with columns A=date (YYYY-MM-DD in ET), B=headline, C=body, D=host name. Read a range that covers the working set (for example A2:D400), then find the row whose date column equals today in America/New_York. Store the spreadsheet ID and tab name as workflow config so they're easy to change.
Step 2. Empty-day guard. If no row matches today, or the headline cell is empty, or the body cell is empty, exit the workflow cleanly. Do not call ElevenLabs, do not upload anything, do not post to Slack. Log a short message like 'no briefing for {date}, skipping' and finish.
Step 3. Build the spoken script in plain text. No SSML, no markdown, no special tags. Just clean sentences with natural punctuation so the voice reads it properly. Use this template, substituting the sheet values: 'Good morning, team. Today's briefing from {host}. {headline}. {body}.' Trim whitespace and collapse any double spaces.
Step 4. Generate audio with ElevenLabs Text to Speech. Use a voice_id stored in workflow config (the team's chosen voice). Set model_id to eleven_multilingual_v2 and output_format to mp3_44100_128. Read the response body as raw binary (it's an MP3, not JSON). Keep the audio in memory as a Buffer for the next step.
Step 5. Upload the audio to Google Drive using Upload File (Multipart). Save it inside a fixed folder whose ID is stored in workflow config (the 'team-briefings' folder). Filename: {YYYY-MM-DD}-briefing.mp3 using today's date in ET. MIME type: audio/mpeg. Capture the returned file id.
Step 6. Share the new file with Google Drive Create Permission. Set type=anyone, role=reader so anyone with the link can play it. Then construct the shareable link as https://drive.google.com/file/d/{fileId}/view (or use webViewLink if returned).
Step 7. Post to Slack with Send a Message into the channel #general (channel ID stored in workflow config so it's easy to swap). Use Slack mrkdwn formatting. Body of the message:
*{headline}*\n{body}\n:headphones: <{audioLink}|Listen to today's briefing> (hosted by {host})
Constraints. The pipeline must be strictly deterministic: no LLM steps, no summarization, no rewording. The script content is whatever the human typed in the sheet, character for character. The only configurable knobs are the spreadsheet ID and tab name, the ElevenLabs voice id, the Drive folder id, and the Slack channel id (or name).
Error handling. If ElevenLabs returns 429 (concurrent-limit), respect Retry-After and retry once. If the Drive upload fails, do not post to Slack (avoid posting a broken link). If Slack returns ok=false, log the error code and fail the run so it surfaces in the run history.
Additional information
What does this prompt do?
- Reads today's briefing row from your Google Sheet every weekday morning.
- Generates a clean voice recording of the headline and body with ElevenLabs.
- Saves the recording to a shared Google Drive folder and creates a shareable link.
- Posts the briefing to your team Slack channel with a play link to the audio.
- Skips the day quietly if no one wrote a briefing, so nothing awkward goes out.
What do I need to use this?
- A Google account with edit access to a 'Daily Briefings' sheet and a Drive folder.
- An ElevenLabs account and a voice you've picked or cloned.
- A connected Slack workspace and the channel you want to post into.
How can I customize it?
- Change the run time and timezone (for example 7am PT instead of 8:55am ET).
- Swap the destination Slack channel from #general to a team channel.
- Pick a different ElevenLabs voice or move to a cheaper voice model.
- Rename the Drive folder or tweak the file naming pattern.
Frequently asked questions
What if I forget to write today's briefing?
Can teammates write briefings without touching the workflow?
Does the audio play inside Slack?
How much does the voice generation cost?
Can I use a cloned voice of our CEO or a team lead?
Give your team a morning ritual that runs itself.
Connect Google Sheets, ElevenLabs, Google Drive, and Slack once. Geni reads the row, voices the briefing, and posts it every weekday morning.