n8n: audio/video to RAG passages and transcripts

Use andronixmd/speech-to-text-transcriber from n8n with one of these downloadable JSON templates. All workflows are inactive until you configure and enable them.

RAG: hand off passages to your own index

The RAG template accepts one recording URL. It transcribes the audio and emits one item per passage from Export passages. The sample is a short public speech recording; replace it with an individual podcast episode or other media URL, not an RSS feed or channel.

Map text into your embedding/indexing step and retain source_url, start_s, end_s, language and optional speaker as metadata. Namespace each local id by your source identity and processing version before inserting into a corpus. Keep source metadata on retrieved results so your application can show citations. The template does not create a vector database, answer questions, or implement cross-run deduplication. Live indexing/retrieval acceptance remains separate from the existing transcription and workflow checks below.

Import and try a workflow

  1. Download the JSON using one of the links above. In n8n, create a workflow, open its menu, choose Import from file, and select the downloaded file.

  2. Create an n8n Header Auth credential with the Apify token described below. Select it in every Apify HTTP Request node. Templates leave credentials unbound so each import can use credentials from its own n8n instance.

  3. Open Configure. Keep actorId as andronixmd~speech-to-text-transcriber, check maxTotalChargeUsd ($1 by default), and set the workflow-specific values described below.

  4. For Google Docs or RAG, use Execute workflow with the default public 45-second speech sample first. For Telegram, select the bot credential in Telegram message, Download voice, and Reply with transcript; listen for a test event, then send the bot a short voice message.

  5. Inspect the terminal run and consumer output. Enable the Telegram workflow only when its credentials, temporary-media handling and retention suit your use.

Expected results: Telegram replies with a transcript preview of at most 4,000 characters; Google Docs appends the transcript and source details to your existing document; RAG produces one n8n item per passage containing text, start_s, end_s and source_url. Empty speech may produce no passages. Google Docs and RAG stop explicitly on item errors or incomplete billing instead of forwarding partial text as a completed result. A preview does not replace the full Actor output.

Configure

Create an n8n Header Auth credential: header Authorization, value Bearer <your Apify API token>. Keep it in credentials, never in media URLs or Actor input. Set Actor ID and maxTotalChargeUsd in Configure. The example limit is $1/run; check the Actor’s current Pricing tab and choose an appropriate limit for your audio, including platform charges. A small budget can stop processing before completion. Start with a short clip.

For Telegram, select your bot credential in all three Telegram nodes and use Apify Restricted resource access. The Code node uses Node’s crypto; n8n Cloud provides it, while self-hosted n8n may require NODE_FUNCTION_ALLOW_BUILTIN=crypto.

For Google Docs, set googleDocumentId, enable the Docs API and configure a generic OAuth2 credential: authorization URL https://accounts.google.com/o/oauth2/v2/auth, token URL https://oauth2.googleapis.com/token, and scope https://www.googleapis.com/auth/documents. The account needs document edit access. Set token authentication to Body and auth URI query parameters to access_type=offline&prompt=consent. Register the exact callback shown by n8n. Use only the ID from the document URL, not the entire URL. Select that credential in the append-to-document HTTP node. The local Docker setup includes the callback, token authentication and offline-access parameters. For RAG, set mediaUrl in Configure and connect Export passages to your chosen downstream consumer after inspecting its items. No Google credential is needed for RAG.

The Google Docs template requests transcription only and works without Gemini text add-ons. For a deployment you configure with GEMINI_API_KEY and GEMINI_PAID_SERVICES=true, optionally add summarize: true, chapters: true to the Start Actor node’s JSON body. Keep timestamps: 'segment' for chapters. The document formatter includes these products when returned; enabling them adds text-processing charges.

Automatic retries are disabled for Actor creation and document/message writes. A lost response does not prove failure: inspect the existing run/document before retrying. Runs are polled every ten seconds, at most 360 times, with a 3,900-second execution timeout. The creation POST is outside the loop. Apify completion webhooks can replace polling. Incomplete budget-stopped RAG/document output fails explicitly. Telegram sends a preview; the full transcript remains in the Actor’s output.

Each template submits exactly one URL. After a successful run, Get full result reads item-000-result from the run’s defaultKeyValueStoreId, and the consumer unwraps the signed record’s value. This preserves full transcript and RAG output when the Dataset contains only result_record_key for a large result. These templates do not verify the record signature. If you adapt a template to submit multiple URLs, retrieve each corresponding item-NNN-result record.

Temporary media and privacy

Telegram creates one unnamed store per execution and deletes it after a normal successful/failed terminal Actor result. It never deletes the Actor output store. Forced n8n stops, HTTP failures or polling timeouts can prevent cleanup: find the store ID in Create temp store and delete it after the Actor finishes. The signed record URL stays valid until deletion; it is not a time-limited retention promise.

Saved success/error execution data is disabled by default because store metadata contains a signing secret and messages contain user data. Control n8n access and execution retention separately. No account/bot token is passed in the media URL.

Verification

Local tests execute signing, bounded polling, full-result expressions and consumers, and check graph targets. They cover signed small/oversized results, missing content, error/billing stops and Telegram previews. Signing matches the installed Apify client’s HMAC/base62 implementation using a synthetic fixture. On 23 October 2026, n8n 2.43.6 completed one paid 45.3-second direct-audio transcription and a live Google Docs append with connected OAuth. The destination write was resumed after correcting an imported credential reference; the Actor was not restarted. The inserted text matched the saved result exactly, with one transcript block. See the acceptance report. On 24 October 2026, one complete YouTube-to-Docs workflow passed on build 0.2.5 without manual node recovery or a second append; see the YouTube acceptance report. The two checks cover their public demo recordings. Telegram delivery, live RAG indexing and general platform availability remain unverified.

Sources: Apify/n8n, webhooks, storage access/signatures, Telegram files, Code modules, Google Docs insertText.