Skip to content
FlowHubFluxonLab
C
General Automationfree

Create voiceover MP3s and karaoke subtitles using Edge TTS and FFmpeg

by Faceless Channel OSadapted from n8n official workflow galleryUpdated Aug 2026
RequiresCCode
Share Post Share
FoText and language input formText and langua…CoPick the Edge TTS voicePick the Edge T…CoPrepare file paths for this runPrepare file pa…ECCreate the temp folderCreate the temp…CoTurn the text into a fileTurn the text i…RWSave the text fileSave the text f…ECSpeak the text with Edge TTSSpeak the text …ECMeasure duration and find the pausesMeasure duratio…CoBuild word timings from the speechBuild word timi…CoBuild the karaoke subtitleBuild the karao…RWSave the subtitle fileSave the subtit…12345678910
1/5
STEPS · 10
Starts on an incoming request

Quick overview This self-hosted workflow takes text and a selected language from an n8n form, generates an MP3 voiceover using the Edge TTS CLI, analyzes the audio with FFmpeg/FFprobe to detect real pauses, and outputs a matching .ass karaoke subtitle file with word-by-word timing. How it works Receives text and a language selection from an n8n form submission. Maps the selected language to a specific Microsoft Edge TTS voice name. Writes the submitted text to a temporary file and uses the edge-tts CLI to generate an MP3 voiceover. Runs FFprobe to read the audio duration and FFmpeg silencedetect to find silence start/end markers. Calculates word-level timestamps that allocate timing to speech segments (excluding detected silences) and aligns sentences to pause-separated speech groups when possible. Builds an Advanced SubStation Alpha (.ass) subtitle file with \k karaoke tags and line wrapping based on character width. Saves the .ass subtitle file to disk alongside the generated MP3 for download or use in a video editor. Setup Use a self-hosted n8n instance with the Execute Command node enabled and file access configured to allow writing under /tmp.

Tags

n8nreference-only
Connects
CCode
CategoryGeneral Automation
Triggermanual
Complexitycomplex
Nodes11
AddedJul 17, 2026
CW
free

Poll and download received invoice PDFs with KSeF Gateway to disk storage

Quick overview This workflow runs every 20 minutes to poll a self-hosted KSeF Gateway for newly received KSeF invoices, maintains a cursor checkpoint in n8n static data, downloads each new invoice PDF via the gateway API, and saves the files to local disk. How it works Runs every 20 minutes on a schedule. Reads the last successful polling checkpoint from the workflow’s static data and calls the KSeF Gateway /ksef/invoices/received/new endpoint with the since cursor. If the gateway response is unsuccessful, records the error details for alerting and leaves the checkpoint unchanged so the next run retries the same window. If the response is successful, stores the returned nextSince value as the new checkpoint. If new invoices are returned, processes each invoice summary individually. Downloads each invoice PDF from the KSeF Gateway /ksef/invoice/{ksefNumber}/pdf endpoint and saves it to the configured local folder. Outputs invoice metadata (number, seller, amount, and saved file path) as a placeholder where you can plug in notifications (Slack, email, or Discord). Setup Deploy and configure a self-hosted KSeF Gateway (https://github.com/jurczykpawel/ksef-gateway) with a token or cert

by Pawel Jurczyk
CW
free

Create KSeF invoices from completed Sellf purchases via KSeF Gateway

Quick overview This workflow receives signed Sellf purchase webhooks, validates the HMAC signature, and when the buyer requests an invoice with a NIP it builds a KSeF-ready invoice and submits it to a self-hosted KSeF Gateway, capturing the returned KSeF number or an error. How it works Receives a POST webhook from Sellf with the raw request body and the X-Sellf-Signature header. Verifies the webhook signature using HMAC-SHA256 and rejects the request with a 401 response if the signature is invalid. Responds immediately with a JSON OK response and continues processing in the background. Filters the event to purchase.completed and extracts the customer, order, and invoice details from the webhook payload. Continues only if the customer requested an invoice and provided a non-empty NIP. Builds a KSeF invoice payload using your seller details and the purchase data, then posts it to your KSeF Gateway /ksef/invoice endpoint with an X-Api-Key header. Stores the KSeF submission result by extracting the ksefNumber and status on success, or capturing the returned error details on failure. Setup Set up Sellf webhooks to send purchase.completed events to this workflow’s production webhook URL

by Pawel Jurczyk
CW
free

Send signed WooCommerce orders to KSeF via a self-hosted KSeF Gateway

Quick overview This workflow receives WooCommerce order webhooks, verifies the WooCommerce signature, converts eligible orders into a KSeF invoice payload, and submits them to a self-hosted KSeF Gateway API, skipping consumer orders that do not include a buyer NIP. How it works Receives a WooCommerce order webhook request and keeps the raw request body for signature validation. Verifies the X-WC-Webhook-Signature HMAC against your shared webhook secret and rejects invalid requests with a 401 response. Extracts the buyer NIP from WooCommerce order meta data and maps the order (seller, buyer, line items, VAT rates, and payment details) into a KSeF invoice payload. Skips processing and responds to WooCommerce with a success message when the order has no buyer NIP (consumer purchase). Sends the invoice payload to your self-hosted KSeF Gateway endpoint over HTTP with an X-Api-Key header. Responds to WooCommerce with the resulting KSeF number (when available) or an error from the gateway. Setup Deploy a KSeF Gateway instance and note its base URL. Update the workflow configuration values for the gateway URL and API key, seller NIP/name/address, and the WooCommerce webhook secret. In WooC

by Pawel Jurczyk