Quick overview
Turns Google Slides speaker notes into a narrated video and re-voices only the slides that changed. A Gemini agent checks each slide against its notes and proposes pronunciations for a reading dictionary. Gemini TTS voices it, Slack approves it, and Shotstack renders captioned MP4s to Google Drive.
How it works
- Starts from an n8n Form submission (with a Google Slides URL and options) or a weekday 8:00 schedule run.
- Loads the Google Slides presentation, fingerprints each non-skipped slide (including speaker notes and voice settings), and compares it to previously stored slide records in an n8n Data Table to identify which slides changed.
- For each changed slide, fetches a thumbnail, uses a Google Gemini agent to rewrite speaker notes into a narration script and flag issues, and looks up pronunciations in an n8n Data Table dictionary tool.
- Generates WAV narration with Gemini TTS, uploads the slide image and audio to Shotstack ingest, waits for both sources to be ready, and upserts the slide’s script, captions, durations, and asset URLs back into the slides Data Table.
- Builds a Slack review message summarizing what was re-voiced, any flagged issues, and proposed pronunciation readings, then waits for a reviewer to approve or reject.
- If approved, builds a Shotstack edit timeline for all voiced slides (reusing unchanged assets), renders the MP4, uploads the finished video to Google Drive, logs the render to an n8n Data Table, and posts the Drive link to Slack.
- If rejected, logs the rejection, clears fingerprints for the re-voiced slides so they are regenerated next run, and does not render a new video.
Setup
- Add credentials for Google Slides and Google Drive (OAuth2), Slack (bot token with permission to post and use interactive messages), and Google Gemini/PaLM API (used for both the script agent and Gemini TTS).
- Create a Shotstack API key and configure it as an HTTP Header Auth credential (x-api-key) on the Shotstack HTTP Request nodes, and set the Shotstack environment (stage or v1) in the workflow configuration.
- Update the Workflow Configuration values for Slack channel ID, Google Drive folder ID, and a default Google Slides deck URL/ID, and adjust voice, language, captions, and rendering settings as needed.
- Run the workflow once to create the required n8n Data Tables (narration_slides, narration_readings, narration_renders), then submit the form or enable the schedule trigger.
Requirements
- Google Slides and Google Drive (OAuth2), Google Gemini API key, Shotstack API key (free sandbox works), Slack bot with chat:write, n8n with Data Tables
Customization
- Change voice, speaking style, aspect ratio (9:16 for shorts), transition and captions in Workflow Configuration. Remove the Slack approval to publish automatically, or swap Google Drive for YouTube.