See llms.txt for all machine-readable content.

Back to Templates

Send deduplicated YouTube voice digests with Apify, DeepSeek, ElevenLabs, Telegram, and Sheets

Channels you follow publish faster than you can watch them. This workflow checks the newest uploads every six hours, keeps only videos it has not covered yet, checks the AI brief before it goes out, and delivers one short spoken digest to Telegram. Every run is logged, failures are reported, and a weekly recap tells you what the digest actually did.

Last updated: November 2026.

Quick Overview

Every six hours Apify scrapes the latest videos from the channels you track. A cleaning step drops records without an id or title and removes duplicates inside the batch, and an empty or failed scrape is logged to a run_errors tab and reported on Telegram instead of failing silently. The workflow then compares the remaining ids with the video_seen tab, keeps up to three new uploads and asks a DeepSeek chat model for a headline, a summary and a 60 to 100 word narration. A quality check looks at the result before anything is spoken. Good briefs become an ElevenLabs voice note, weak briefs are queued in a brief_review tab and sent as plain text, and a failed voice step also falls back to text. The video ids are written to video_seen only after Telegram accepts the message, together with the delivery type and the Telegram message id. Every Monday a second lane reads the log and sends a weekly recap.

How it works

  1. Check Channels Every 6 Hours starts the run, and Scan Youtube Channels runs the Apify YouTube scraper with three tries before it gives up.
  2. Get Channel Videos reads the dataset. Clean Video Records keeps only items with an id and title and removes duplicates.
  3. Scrape Looks Healthy? continues only when at least one valid video came back. Otherwise, or when an Apify node errors, Describe Run Problem labels the stage, Log Run Failure writes it to run_errors and Alert Run Failure posts it to Telegram.
  4. Read Seen Videos loads the stored ids and Pick New Videos keeps the three newest unseen uploads. Any New Video? ends a quiet run on No New Videos without calling the model.
  5. Summarize New Videos writes the brief with the DeepSeek model in Video Model, and Parse Video Brief turns the reply into clean fields.
  6. Check Brief Quality flags a short headline, a narration under 40 or over 140 words, non ASCII characters or leftover JSON. Brief Passes Checks? decides between voice and the review path.
  7. Speak Video Brief voices good briefs with ElevenLabs, and Send Video Voice Note posts the mp3 with the headline as caption.
  8. Flagged briefs go to Queue Brief for Review and then Send Text Fallback Brief, which also catches a failed voice step.
  9. Record Delivery reads the Telegram response, and Mark Videos Seen appends the ids, delivery type and message id. A failed Telegram send is logged as a run problem and the ids stay unseen, so the next run retries them.
  10. Weekly Recap Monday 8am reads the digest log and the error log, and Build Weekly Recap sends counts for digests, voice versus text, videos covered, top channels and problems.

Setup

  1. Connect an Apify account in Scan Youtube Channels and Get Channel Videos, and replace the two channel URLs in the actor body with your own.
  2. Connect Google Sheets and create three tabs in the same spreadsheet: video_seen (seen_at, videos_new, video_ids, channels, headline, delivery, message_id), run_errors (logged_at, stage, detail) and brief_review (logged_at, video_ids, headline, narration, issues).
  3. Connect your DeepSeek compatible chat credential on Video Model.
  4. Connect ElevenLabs in Speak Video Brief and pick a voice id.
  5. Connect Telegram on the four Telegram nodes and replace the placeholder chat id 123456789.
  6. Run the workflow once by hand, then check that video_seen has its first row.

Quick Answers

How does it avoid sending the same video twice?
Pick New Videos skips every id already stored in video_seen, and ids are written only after Telegram accepts the message.

What happens when the AI brief looks wrong?
Check Brief Quality flags it, the brief is saved to brief_review with the reasons, and you get the text version instead of a voice note.

What if Apify or Telegram fails?
Each external node retries three times. After that the error is written to run_errors and an alert lands in Telegram.

What is in the weekly recap?
Digests sent in the last seven days split into voice and text, total videos covered, the three most active channels and the number of logged problems.

Additional info

Built with n8n. Need an assessment on your business? Feel free to reach out at https://khmuhtadin.com/consultation/