Auto Shortsfor n8n
Get the kit

Set it up

Walkthrough

One clip, four stages. Use a Manual Test Run and keep visibility private until you have watched the preview.

#Submit the clip

Open Auto Shorts – Submit Clip (Form). The form is the fast path; you can also paste a row into the Sheet yourself.

Form Trigger, Config, Normalize Form Row, and Append Queue Row, with Thank-You and Error completion pages.
  1. Use the Test URL while the workflow is inactive, or the production path /form/auto-shorts-submit once you have published it.
  2. Paste a public HTTPS clip URL. Topic or notes are optional; they help the title model. Schedule time is optional ISO-8601 text (for example 2026-11-15T18:00:00+08:00).
  3. Submit. You should see the “Queued” completion page, and a new queue row with a unique id (AS-YYYYMMDD-xxxx) and status = queued.

The form workflow stops here on purpose. It does not wait for JSON2Video. Ingest & Render picks the row up on its schedule (every 5 minutes) or when you run it manually.

If you skip the form, type a row in the queue tab instead: a unique id, the clip URL, status = queued, and any topic, notes, or scheduled_at.

#Render captions and titles

Open Auto Shorts – Ingest & Render and run Manual Test Run for the first clip (safer than waiting for the 5-minute trigger).

Schedule and manual triggers, the JSON2Video create-and-poll loop, metadata draft, Write Awaiting Approval, and the disabled Telegram node.

What the run does:

  1. Reads the queue tab and selects queued rows, or a rendering row that already has a json2video_project (so a crash can resume without a second paid POST /v2/movies).
  2. Locks the row as rendering and creates a custom 1080×1920 movie. The clip is resize: cover. A movie-level subtitles element auto-transcribes the audio (default model: whisper).
  3. Polls GET /v2/movies?project=…&format=simple every 10 seconds until done, error, or timeout, or until poll_max_attempts (default 40).
  4. Fetches movie.ass when present, then asks OpenAI or OpenRouter for a title, description, and tags (always includes shorts).
  5. Writes preview_url, thumbnail_url, draft metadata, and status = awaiting_approval.
Confirm llm_provider, 1080×1920, youtube_visibility = private, and your Sheet ID before the first paid render.

Watch preview_url before you approve. JSON2Video deletes the MP4, thumbnail, and caption file after 7 days — approve and post inside that window, or re-queue the clip.

#Approve in the Sheet

Open the queue tab. This is the only approval gate in v1.

  1. Play preview_url and check the burned-in captions.
  2. Edit title (max 100 characters), description, tags, visibility, scheduled_at, made_for_kids, or contains_synthetic_media if you need to.
  3. Change status to exactly approved. Any other value — including awaiting_approval — is ignored by the poster.

Telegram, if you later enable it, only notifies you that a preview is ready. It does not approve the row.

#Post or schedule the Short

Open Auto Shorts – Post Approved and run Manual Test Run.

Only approved rows with a preview URL and a title are locked as publishing and sent to Zernio.

The workflow:

  1. Selects rows with status = approved, a non-empty preview_url, and a title (capped by max_posts_per_run).
  2. Locks each row as publishing.
  3. Calls POST https://zernio.com/api/v1/posts with Authorization: Bearer … and Idempotency-Key equal to the row id (24-hour window).
  4. If scheduled_at is still in the future, it sends scheduledFor + timezone and does not wait until that clock time — Zernio uploads early. If the time is already past, or there is no schedule, it publishes in that request (publishNow: true).
  5. Writes posted or scheduled, plus youtube_url and zernio_post_id when the response includes them.

YouTube classifies a Short when the file is ≤ 3 minutes and vertical or square. There is no Shorts flag in the Zernio body.

#If something fails

Error Trigger → Config → Format Error → Log Error to Sheet on the error_log tab.

The producer workflow marks the row failed (and puts a message in error), then Stop and Error. The Error Handler appends a row to error_log with the execution URL and failed node.

Attach this workflow under Workflow settings → Error workflow on the form, ingest, and post workflows. See Troubleshooting for common causes.

When the private test looks right, publish (activate) the three producer workflows and, when you are ready, switch a row’s visibility to public or unlisted before you approve it.

Auto Shorts for n8n: a public clip becomes a captioned 9:16 Short, a person approves it, then it is posted to YouTube.

Checked against n8n 2.47.3. n8n, YouTube, Google Sheets, JSON2Video, OpenAI, OpenRouter, Zernio and Telegram are trademarks of their owners; this kit is not affiliated with them. Sample data is fictional.