GeminiCreativeVideoAI score · PendingAI-assisted edit · no obvious prompt-injection riskn8n.io

Approve AI Short Videos in Telegram Before Auto-Posting to TikTok, Reels, and Shorts

Google Sheets idea input → Gemini generates script and captions → Veo 3.1 renders 9:16 video → Telegram human approval → PostWire multi-platform publish

Some experienceStepsWorkflowPromptTip
Who
Creators or social media operators who need human confirmation before publishing short videos
You get
After adding an idea to Google Sheets, automatically receive an AI-generated video draft, approve with one tap in Telegram, and publish to multiple short-form platforms
You need
n8n · telegram · google-sheets

Constraints

Prerequisites: n8n instance; PostWire account (with TikTok/Instagram/YouTube connected) and API key; Google Sheets OAuth credential; Google Gemini paid credential (with Veo 3.1 access); Telegram Bot and chat ID. Cost: author estimates approximately one US dollar per 8-second Veo 3.1 Fast clip; actual pricing depends on Google.

What they did

The source template demonstrates a complete n8n workflow: when a user adds a new row with an idea to Google Sheets, the workflow triggers automatically. Gemini 2.5 Flash expands the idea into a JSON plan containing a Veo video prompt and captions for TikTok, Instagram, YouTube, LinkedIn, and Facebook. Veo 3.1 generates an 8-second 9:16 video based on the prompt, which is uploaded via PostWire to obtain a media link. The video and caption preview are sent to the user via Telegram, who taps Approve or Decline. If approved, PostWire publishes the video to TikTok, Instagram Reels, and YouTube Shorts, and writes the published links back to Sheets; if declined, the row is marked declined with a timestamp.

How it went

The author reports (author_report) that this template achieves approval-gated multi-platform auto-publishing, but provides no specific success rate, latency, or ROI figures. The sticky-notes mention Veo 3.1 Fast costs approximately one US dollar per clip, which is an estimate not exact pricing.

Worth knowing

1. Video generation uses model veo-3.1-fast-generate-preview; planning uses gemini-2.5-flash. Both require Google Gemini credentials with billing enabled. 2. PostWire is a third-party service requiring separate registration and social account authorization; the API key is passed via n8n Header Auth. 3. Telegram approval uses n8n's sendAndWait feature; the n8n instance must be reachable by webhook for Telegram callbacks. 4. workflow.json contains placeholder values for Google Sheets documentId/sheetName and YOUR_CHAT_ID that must be replaced. 5. Node expressions use n8n-specific syntax (e.g. $('Node Name').item.json) and would need rewriting outside n8n. 6. No measured performance data is provided by the source; PostWire publishing stability across platforms has not been verified by this site.

n8n workflow template

Structure checked · Not run-tested

Use “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.

Setup and test checklist

Credentials to connect

  • After import, connect your own credentials on auth-required nodes; author secrets are not included.

Configuration to replace

  • Source template is n8n public workflow #20504 (~24 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
  • Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.

Test input and expected output

  • Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
  • Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.

Template changes

  • Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
  • No business-logic edits; verify keys, quotas and privacy compliance before use.

Template retrieved: 2026-10-24

Steps

  1. Capture new ideas from Google Sheets

    Configure the Google Sheets Trigger node in n8n, select the target document and sheet, set event to rowAdded (polls every minute). Ensure the sheet has idea, status, links, and note columns. Add a Filter node with conditions: idea is not empty AND status is empty, so only unprocessed new ideas continue.

  2. Generate the content plan

    Add a Google Gemini node (model: gemini-2.5-flash), resource type text, operation message, enable jsonOutput. Paste the source planning instruction into systemMessage. Set the message content to reference the Sheets idea field: {{ 'Idea: ' + $json.idea }}. Then add a Set node (Read the plan) to parse the returned JSON, extracting plan, idea, networks array, and telegram_chat_id (replace YOUR_CHAT_ID with your actual Telegram chat ID).

    Execution prompt · Source text。Google Gemini node systemMessage field

    You plan one 8-second vertical (9:16) video for short-form social media. Return JSON with the keys veo_prompt (one paragraph for Veo: subject, action, camera movement, lighting, ambient sound; no on-screen text, no logos, no real people), tiktok (a hook of up to 150 characters with 3 hashtags), instagram (2 sentences and up to 5 hashtags), youtube_title (a searchable title of up to 90 characters), youtube (a 2-sentence description), linkedin (2 short professional paragraphs) and facebook (1 or 2 conversational sentences).
  3. Generate and upload the video

    Configure three HTTP Request nodes and one Google Gemini node in sequence: 1) POST to https://postwire.io/api/media/upload-url to get an upload slot (Header Auth, JSON body {"content_type":"video/mp4"}); 2) Google Gemini node (model: veo-3.1-fast-generate-preview), resource video, operation generate, aspectRatio 9:16, durationSeconds 8, prompt referencing the previous veo_prompt; 3) PUT to upload_url with binary video data; 4) GET https://postwire.io/api/media/finalize with path query parameter to obtain the final media_url.

    Execution prompt · Source text。Google Gemini video generation node prompt field (n8n expression)

    ={{ $('Read the plan').item.json.plan.veo_prompt }}
  4. Telegram approval

    Add a Telegram node to send the video (sendVideo), with file set to media_url and caption containing previews of TikTok/Instagram/YouTube captions (truncated to 900 chars with HTML escaping). Then add a Telegram sendAndWait node with an approval request message, responseType approval, and Approve/Decline dual options.

  5. Publish to platforms and log results

    After approval, add an HTTP Request node to POST to https://postwire.io/api/post (Header Auth) with JSON body containing platforms, per_platform captions, video_url, ai_generated flags, etc. Then use an If node to check if all platforms published successfully: on success, update Sheets status to posted, links to platform URLs, and send a Telegram summary; on failure, update status to needs fix/partly posted, note to error details, and send a Telegram message with fix information.

    Execution prompt · Source text。Telegram node success notification text field (n8n expression)

    ={{ 'Published everywhere:\n' + String(($('Publish with PostWire').item.json.results || []).map(r => r.platform + '  ' + (r.url || 'processing, the link appears in PostWire')).join('\n')).replace(/&/g, '&amp;').replace(/</g, '&lt;') }}

    Execution prompt · Source text。Telegram node failure notification text field (n8n expression)

    ={{ 'Not published everywhere:\n' + String((() => { const r = $('Publish with PostWire').item.json; return r.error ? r.error : (r.results || []).map(x => (x.ok ? 'Published  ' : 'NOT published  ') + x.platform + (x.url ? '  ' + x.url : '') + (x.ok ? '' : '\n    ' + (x.fix || x.error))).join('\n'); })()).replace(/&/g, '&amp;').replace(/</g, '&lt;') }}
  6. Handle decline

    If Telegram approval selects Decline, update the Google Sheets row: set status to declined, note to a timestamp of decline (format yyyy-MM-dd HH:mm), and clear links.

Prompt you can copy

Setup guidance · Editorial suggestion。Hand to setup assistant; confirm inputs and credentials first

This block is the prompt. Ads are never placed here.

You are an n8n workflow setup assistant. The user wants to replicate the automation: Sheets trigger → Gemini planning → Veo 3.1 generation → Telegram approval → PostWire multi-platform publishing. First confirm the user has: an n8n instance; a PostWire account and API key; Google Sheets OAuth; Google Gemini paid credentials (including Veo 3.1); a Telegram Bot and chat ID. Then guide them through importing the template or manual setup, checking: 1) Sheet columns are idea/status/links/note; 2) YOUR_CHAT_ID is replaced; 3) PostWire Header Auth is Authorization: Bearer <key>; 4) Gemini model IDs are models/gemini-2.5-flash and models/veo-3.1-fast-generate-preview. Remind them Veo 3.1 is pay-per-use and to test the Telegram approval flow before going live.

Confirm all third-party credentials are configured before building; test with a dummy row first

Source

Approve short-form AI videos for TikTok, Reels and Shorts with Gemini, Veo and Telegram · postwire · n8n.io · 2026-10-06

Comments & feedback

Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.

Loading…

    Related