Shorts series episodes number by publish date: a Python order check
YouTube numbers Shorts series episodes by publish date, so upload order is episode order. Check durations and publish times in Python before you schedule.

Short answer
Yes: in a YouTube Shorts series, episodes are numbered by publish date, so the order you publish is the order viewers see as episodes. Each episode must also be portrait or square and at most 180 seconds, and the playlist may contain only Shorts. A small Python check on your list of durations and scheduled times catches both mistakes before upload.
What YouTube documents
The Shorts series help page says the playlist must contain only Shorts, that videos must be portrait or square and up to 180 seconds, that a season number is required, and that episodes are numbered by publish date (read 2026-10-05). It also describes serial series, which play oldest first, and non-serial series, which show newest first, and a watch series button that leads into a series feed.
YouTube's Sept 23, 2026 announcement describes Shorts series with custom thumbnails and sequential playback across web, mobile and TV (read 2026-10-05). It does not say how to reorder a season after publishing, so the safe habit is to get the publish order right the first time.
The rules as a checklist
Each row is a rule from the help page, with the Sume step that helps you meet it.
| Rule | Limit | Sume step |
|---|---|---|
| Episode length | 180 seconds or less | Video trim with duration up to 180, or a timeline spine of 180 |
| Orientation | Portrait or square | Default output is 1080x1920 |
| Episode number | By publish date | Schedule in order, check with a script |
| Season number | Required | Keep it in your own episode list |
| Playlist content | Shorts only | Keep long videos out of the playlist |
The check
Keep a list of episodes in intended order with each duration in seconds and the planned publish time. Get the duration from the probe in video inspect rather than from memory. The function below flags any episode over 180 seconds and any publish time that is not later than the previous one, since a later number must publish later.
from datetime import datetime
def check(eps, limit=180):
problems, prev = [], None
for name, when, secs in eps:
t = datetime.fromisoformat(when)
if secs > limit:
problems.append(f"{name}: {secs}s is over {limit}s")
if prev and t <= prev:
problems.append(f"{name}: not after the previous episode")
prev = t
return problems
eps = [("S1E1", "2026-10-06T09:00", 150),
("S1E2", "2026-10-07T09:00", 172),
("S1E3", "2026-10-07T08:00", 181)]
print(check(eps) or "ok")Fixing an over-length episode
An episode over 180 seconds is cut with video trim. Send start and either end or duration, with precision exact for a frame-accurate cut, and the new file is a separate artifact, so the source is untouched. The public rate is $0.02 per job. Output may be 0.2 to 900 seconds, so the 180-second cap is a YouTube rule, not a Sume one, and you have to enforce it.
If the story needs 181 seconds, cut the opening. A 1-second trim is a better trade than splitting a scene across two episodes.
Before you schedule
Run the check on the final durations after the cuts, not the planned ones, because a timeline render can differ slightly from your plan. Then schedule uploads one at a time in episode order. I did not find a way to renumber an episode after publishing in the pages I read, so treat the publish order as final.
Sources
Related posts
More in Developers
- Shorts series: one Idempotency-Key per season and episode
Timeline renders require an Idempotency-Key. Name it from season and episode, so a retried upload script for episode 4 does not queue a second render.
- Shrink an AI image to a byte budget: JPEG quality search in Pillow
Platforms cap image files at 1 MB or 5 MB. Binary-search the JPEG quality in Pillow for the sharpest file under your byte limit, from a Sume image.
- silence_split_seconds: tune caption line breaks from STT segments
Sume STT sentence segmentation can split on silence. silence_split_seconds takes 0.2 to 3 and returns gapless segments you can use as caption lines.
- Captions fail on a silent Short with caption_no_speech: send cues
A silent clip has no speech to transcribe, so Sume's captions API returns caption_no_speech. Send cues with text, start and end to burn overlay text instead.
Written by Sume