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.
- Use the Test URL while the workflow is inactive, or the production path
/form/auto-shorts-submitonce you have published it. - 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). - Submit. You should see the “Queued” completion page, and a new
queuerow with a uniqueid(AS-YYYYMMDD-xxxx) andstatus = 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).
What the run does:
- Reads the
queuetab and selectsqueuedrows, or arenderingrow that already has ajson2video_project(so a crash can resume without a second paidPOST /v2/movies). - Locks the row as
renderingand creates a custom 1080×1920 movie. The clip isresize: cover. A movie-levelsubtitleselement auto-transcribes the audio (defaultmodel: whisper). - Polls
GET /v2/movies?project=…&format=simpleevery 10 seconds untildone,error, ortimeout, or untilpoll_max_attempts(default 40). - Fetches
movie.asswhen present, then asks OpenAI or OpenRouter for a title, description, and tags (always includesshorts). - Writes
preview_url,thumbnail_url, draft metadata, andstatus = awaiting_approval.
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.
- Play
preview_urland check the burned-in captions. - Edit
title(max 100 characters),description,tags,visibility,scheduled_at,made_for_kids, orcontains_synthetic_mediaif you need to. - Change
statusto exactlyapproved. Any other value — includingawaiting_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.
The workflow:
- Selects rows with
status = approved, a non-emptypreview_url, and a title (capped bymax_posts_per_run). - Locks each row as
publishing. - Calls
POST https://zernio.com/api/v1/postswithAuthorization: Bearer …andIdempotency-Keyequal to the rowid(24-hour window). - If
scheduled_atis still in the future, it sendsscheduledFor+timezoneand 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). - Writes
postedorscheduled, plusyoutube_urlandzernio_post_idwhen 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
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.