Generate and Publish YouTube Shorts in Bulk

You want to post one YouTube Short per day. Or ten per week. Each Short needs a vertical video, a title, a description, the right privacy settings, and optionally a custom thumbnail and playlist assignment. Doing this manually takes 15-20 minutes per video. At scale, it becomes a full-time job.

On the Make.com forum, users ask about generating 1,000+ YouTube Shorts with tools like InVideo and bulk-uploading them. On the n8n forum, users build short-form video pipelines that create content with AI and push it to YouTube, TikTok, and Instagram in parallel. The bottleneck is always the same: generating videos at scale and handling YouTube's metadata requirements (titles, descriptions, playlists, thumbnails, privacy status) for each upload.

Here is a workflow that generates AI videos and publishes them to YouTube with full metadata control.

What YouTube Shorts requires

A YouTube Short is a vertical video (9:16 aspect ratio) under 60 seconds. YouTube classifies videos as Shorts automatically based on these properties. You do not need a separate API or upload flow -- publish through the standard YouTube Data API and YouTube handles the categorization.

When publishing through the Blotato API, these are the YouTube-specific fields:

Field
Required
Description

title

Yes

Video title. Appears on the Shorts player.

privacyStatus

Yes

public, private, or unlisted

shouldNotifySubscribers

Yes

Send a notification to subscribers

isMadeForKids

No

Defaults to false

containsSyntheticMedia

No

Flag AI-generated content

playlistIds

No

Add the video to one or more playlists

thumbnailUrl

No

Custom thumbnail (requires a verified YouTube account)

The video description comes from the content.text field. YouTube does not support tags through the API -- YouTube recommends against relying on tags for discovery.

The three-step pipeline

Step 1: Generate a batch of video topics

Use the Create Source endpoint with sourceType: "perplexity-query" to research topics in your niche:

Poll GET /v2/source-resolutions-v3/{id} until status is completed. The response contains 10 video topics ready to feed into the next step.

For a content library approach, store topics in a Google Sheet or Airtable. Each row contains a topic, a target title, and a description. Your workflow reads one row at a time and creates a video from it.

Step 2: Generate each video

Use the Create Visual endpoint with the "AI Video with AI Voice" template. This template generates a script, AI images, AI voiceover, and captions, then renders the final video:

Poll GET /v2/videos/{id} until status is done. The response includes mediaUrl with the rendered video.

For bulk generation, loop through your topic list and create one video per topic. Each Create Visual call is independent -- you run them in parallel or sequentially depending on your plan's rate limits (30 requests per minute).

Step 3: Publish to YouTube with full metadata

Pass the rendered video URL to the Publish Post endpoint with YouTube-specific fields:

Key details:

  • containsSyntheticMedia: true flags the video as AI-generated, which YouTube requires for transparency.

  • playlistIds assigns the Short to a playlist. Fetch playlist IDs from GET /v2/users/me/accounts/{accountId}/subaccounts (docs).

  • useNextFreeSlot: true schedules the Short at the next open slot in your content calendar instead of publishing immediately. This spaces out your uploads so YouTube does not flag bulk posting.

  • The content.text field becomes the YouTube description. Include hashtags here -- #shorts is optional (YouTube auto-detects Shorts by video dimensions).

Adding a custom thumbnail

If your YouTube account supports custom thumbnails, pass a public image URL in the thumbnailUrl field:

Generate thumbnails with the Create Visual endpoint using an image template (such as the Quote Card or Image Slideshow template) and pass the resulting imageUrls[0] as the thumbnailUrl.

Step-by-step: n8n workflow for daily Shorts

  1. Install the Blotato community node in n8n.

  2. Add a Schedule Trigger node. Set it to run once per day.

  3. Add a Google Sheets node (or Airtable node) to read the next topic from your content spreadsheet.

  4. Add a Blotato Create Visual node. Select the "AI Video with AI Voice" template. Pass the topic from the spreadsheet into the prompt field.

  5. Add a Blotato Get Visual Status node. Enable polling until status is done.

  6. Add a Blotato Publish Post node. Set the platform to youtube. Map the fields:

    • mediaUrls: the mediaUrl from the Get Visual Status response

    • text: your YouTube description (from the spreadsheet or generated by an LLM node)

    • title: your Short's title

    • target.privacyStatus: public

    • target.shouldNotifySubscribers: true

    • target.containsSyntheticMedia: true

    • target.playlistIds: your playlist ID

  7. Set useNextFreeSlot: true on the Publish node.

  8. Add a Google Sheets Update node to mark the row as "published" so the next run picks the next topic.

  9. Activate the workflow.

One video per day. No manual work.

Step-by-step: Make.com scenario for bulk Shorts

  1. Add a Schedule trigger module.

  2. Add a Google Sheets module to get the next row from your topic spreadsheet.

  3. Add an HTTP module to call POST https://backend.blotato.com/v2/videos/from-templates with the "AI Video with AI Voice" template ID and the topic as prompt.

  4. Add a polling loop (Repeater + HTTP GET) to check GET https://backend.blotato.com/v2/videos/{id} until status is done.

  5. Add an HTTP module to call POST https://backend.blotato.com/v2/posts with the YouTube-specific request body (title, privacyStatus, playlistIds, etc.).

  6. Add a Google Sheets module to update the row status to "published."

  7. Activate the scenario.

Scaling: 10 Shorts per week

To generate multiple Shorts per run:

  1. Read 10 rows from your spreadsheet at once using a Google Sheets "Search Rows" query.

  2. Use a SplitInBatches node (n8n) or Iterator module (Make) to process each row.

  3. Create one video per row and publish each with useNextFreeSlot: true.

Blotato's scheduling system spaces out the posts across your configured calendar slots. If you have one YouTube slot per day, 10 videos get spread across the next 10 days.

Rate limits: the Create Visual and Publish Post endpoints allow 30 requests per minute. For 10 videos, the create step takes 10-30 minutes total (1-3 minutes per video for rendering). Run the workflow during off-hours to avoid interfering with other Blotato API usage.

Cross-posting Shorts to TikTok and Instagram Reels

A YouTube Short is the same format as a TikTok video and an Instagram Reel (vertical, under 60 seconds). After generating the video, add parallel Publish Post calls for each platform:

One generated video. Three platforms. See Post Videos to TikTok, Reels, and YouTube Shorts from One Workflow for the full cross-posting setup.

Forum threads referenced

These are the community discussions that prompted this post:

Last updated