PPROOF OF DATA
0 of 0 steps done
FREE TOOL · SETUP GUIDE

YouTube Shorts → Instagram Reels,
on autopilot.

Pick a Short and a day. On that day the Reel goes live with your title, description, hashtags, cover and comment, even with your computer off. Watch the setup step by step, every screen is also written out below.

SETUP VIDEO · 11 MIN · 18 CHAPTERS
⬇ Get Reels Studio (GitHub) Start the written guide ↓
$0GitHub, YouTube and Meta free plans
≈ 30 minone-time setup, mostly Meta
No codeeverything by clicking
PC offpublishing runs in the cloud

How it works

1 · Youpick a Short and a day in the app
2 · GitHubfetches title, description, tags, thumbnail and packs the video
3 · On the dayuploads to Instagram and publishes at your time
4 · +1 minuteyour comment goes under the Reel

Never at random, at most one Reel a day in the calendar (extra ones only with your own click), and the same Short is never posted twice. #shorts is removed from the caption automatically.

Before you start

YOU NEEDNOTE
A GitHub accountfree · github.com/signup
A Google accountfor the YouTube key
Your Instagram accountwe switch it to a free professional account
A personal Facebook accountonly to create a Page; nothing is posted there
A Windows PC (or Mac/Linux with Python)only needed when you schedule

The four values you'll collect

VALUELOOKS LIKEPASTE INTO REELS STUDIO
GitHub tokengithub_pat_…welcome screen (Part 4)
YouTube Data API keyAIza…Settings → API keys and Panel connection (Part 5)
Instagram (Meta) access tokenEAA…Settings → API keys (Part 11)
Instagram account ID17841…Settings → API keys (Part 12)
⚠
Tokens and keys are passwords. Paste them only into Reels Studio. Never into a comment, a chat or a screenshot. Tick Done on each step as you go: your progress is saved in this browser.
Part 1

Install Reels Studio

⏱ 5 min

Reels Studio is a small app that runs in your browser. It's where you plan Reels and paste your keys. On Windows one double-click installs everything.

1.1

Download the tool

  1. Open Reels Studio on GitHub.
  2. Click the green Code button, then Download ZIP.
  3. Unzip it into a normal folder, for example Documents\Reels Studio.
⚠
Don't put it inside OneDrive, Google Drive or Dropbox. Synced folders break the Python environment.
1.2

Windows: run the installer

  1. Open the unzipped folder and double-click Install Reels Studio.bat.
  2. If Windows shows Windows protected your PC, click More info → Run anyway. The file is a plain text script you can open in Notepad to check.
  3. It installs Python (if you don't have it), the packages (a minute or two) and a Reels Studio shortcut on your desktop.
  4. When it's done, the app opens in your browser at http://127.0.0.1:48765.
💡
From now on, start the app with the Reels Studio desktop shortcut. It only listens on your own computer (127.0.0.1), nothing is reachable from the internet.
1.3

Mac or Linux

  1. Install Python 3.10 or newer from python.org.
  2. In a terminal, inside the folder: pip3 install -r requirements.txt, then python3 tools/studio.py.
  3. No terminal? Double-click panel/index.html instead. Everything works, only the automatic download of your Shorts is missing (you attach the video file by hand when scheduling).
Part 2

Create a private GitHub repository

⏱ 2 min

GitHub runs the automation for free in the cloud, so your computer can be off when a Reel goes live. No account yet? Sign up free at github.com/signup.

2.1

Open the new-repository form

Screenshot: new repo form
  1. Open github.com/new.
  2. Repository name: type shorts-to-reels (any name works, just remember it).
  3. Choose visibility: Private.
  4. Leave Add README off, .gitignore = No .gitignore, license = No license.
  5. Click Create repository.
💡
The screenshot shows another name (proof-of-data-reels); everything after it uses shorts-to-reels. The name doesn't matter, it just has to match what you type into the app later.
2.2

The repository exists and is empty

Screenshot: empty repo created
  1. You see your new repository with a Private badge. That's it.
💡
Ignore the Quick setup box and the git commands. You don't need a terminal: the app uploads all the files for you.
Part 3

Create a GitHub token for the app

⏱ 4 min

A token is a password that only works for this one repository. The app uses it to upload the files and to plan your Reels.

3.1

Confirm it's you

Screenshot: sudo verify email
  1. Open github.com/settings/personal-access-tokens/new.
  2. GitHub may ask you to confirm access first. Click Verify via email and type the code from your inbox (check spam).
💡
You may see other options here (password, authenticator app, passkey). Any of them works.
3.2

The empty token form

Screenshot: new token form
  1. Check that Fine-grained tokens is selected in the left menu (not Tokens (classic)).
⚠
The defaults are wrong for us: expiration only 30 days and access to public repositories only. We change both in the next step.
3.3

Name, expiration, repository

Screenshot: token name expiry repo
  1. Token name: Reels Studio.
  2. Description: optional.
  3. Expiration: choose Custom and pick a date about one year ahead.
  4. Repository access: Only select repositories → Select repositories → tick your shorts-to-reels.
3.4

Add permissions

Screenshot: permissions empty
  1. Scroll down to Permissions, stay on the Repositories tab and click + Add permissions.
3.5

Pick the five permissions

Screenshot: permissions added read only
  1. Tick Actions, Contents, Secrets, Variables and Workflows. Typing into the search box finds each one fast.
  2. Click outside the list to close it.
⚠
Pick exactly Secrets and Variables, not Agent secrets, Codespaces secrets or Dependabot secrets.
💡
Metadata appears on its own (Required, read-only). That's why the counter says 6.
3.6

Switch them to Read and write

Screenshot: permissions read write
Screenshot: permissions workflows
  1. Every permission starts as Read-only. Click each one and choose Read and write: Actions, Contents, Secrets, Variables.
  2. The list scrolls. Workflows is below the fold: switch it to Read and write too.
  3. Leave Metadata on Read-only (it can't be changed).
  4. Click Generate token at the bottom of the page.
⚠
Without Workflows: Read and write the upload of the project fails.
3.7

Confirm

Screenshot: token confirm dialog
  1. The summary says 6 permissions for 1 repository and an expiry about a year away.
  2. Click Generate token in the dialog.
3.8

Copy the token

Screenshot: token created copied
  1. Click the copy button next to the token (it shows Copied!). It starts with github_pat_.
  2. Paste it into Reels Studio right away (next part).
⚠
GitHub shows the token only once. Lost it? Delete it and generate a new one.
⚠
Treat it like a password. Never paste it into a chat, a comment or a screenshot.
Part 4

Connect Reels Studio and upload the project

⏱ 3 min

Now the app talks to your repository and copies the automation into it.

4.1

Paste the token and repository

Screenshot: panel connect form
  1. Open Reels Studio (the desktop shortcut, or panel/index.html).
  2. GitHub token: paste the token.
  3. Repository (owner/name): your GitHub name, a slash, the repository name, e.g. your-name/shorts-to-reels.
  4. YouTube API key: leave it empty for now.
  5. Remember on this computer: keep it ticked on your own PC, untick it on a shared one.
  6. Click Connect panel.
💡
Type owner/name, not the full https://github.com/… link.
4.2

Settings opens with a checklist

Screenshot: panel connected settings
  1. The Setup checklist shows 0 / 4: Upload the project → Add your API keys → Pick channel & publish time → Run the access test.
  2. Card 1 Project on GitHub shows your repository and Automations: 0/3.
4.3

Upload the project

Screenshot: upload in progress
  1. In card 1 click Upload / update project.
  2. It uploads file by file (Uploading 10/20…). Takes a few seconds. Don't close the tab.
4.4

2/3? Wait and refresh

Screenshot: upload done 2of3
Screenshot: refresh button
  1. Right after the upload it may say 2/3. That's normal: GitHub registers new automations with a short delay.
  2. Wait about 30 seconds and click the ↻ button at the top right.
4.5

Uploaded

Screenshot: upload done 3of3
  1. Automations: ✓ Uploaded (3/3) and the checklist shows 1 / 4. Next: the YouTube key.
Part 5

Get a YouTube Data API key

⏱ 5 min

The key lets the tool read your Shorts' title, description, tags and thumbnail through YouTube's official API. Free.

5.1

Open Google Cloud Console

Screenshot: gcloud welcome
  1. Open console.cloud.google.com and sign in with your Google account.
  2. Click the project picker at the top left, next to the Google Cloud logo.
💡
Ignore Create Gemini API key. You need a YouTube key, created under Credentials.
5.2

New project

Screenshot: gcloud select project
  1. In Select a project click New project (top right of the dialog).
💡
Already have projects? Create a fresh one anyway, so this key and its quota stay separate.
5.3

Name it reels-studio

Screenshot: gcloud new project
  1. Project name: reels-studio.
  2. Parent resource: No organization.
  3. Click Create.
💡
The Project ID gets random digits. You never need to type it anywhere. The yellow quota box is just information.
5.4

Switch to the new project

Screenshot: gcloud project created
Screenshot: gcloud project selected
  1. Wait for the notification Create Project: reels-studio and click Select Project.
  2. The picker at the top left must now show reels-studio.
⚠
Creating a project doesn't switch to it. Skip this and the next steps happen in your old project.
5.5

Enable the YouTube Data API v3

Screenshot: youtube api enable
Screenshot: youtube api enabled
  1. Open the YouTube Data API v3 page (or search for it in the top bar).
  2. Check the picker says reels-studio and click Enable.
  3. Status: Enabled. In the left menu click Credentials.
💡
Pick YouTube Data API v3, not the Analytics or Reporting API.
5.6

Create credentials → API key

Screenshot: gcloud credentials
Screenshot: create credentials menu
  1. Click + Create credentials → API key (the first option).
💡
Ignore the yellow configure the OAuth consent screen banner. An API key doesn't need it.
5.7

Name and restrict the key

Screenshot: create api key form
Screenshot: api key restrict youtube
  1. Name: Reels Studio.
  2. Open Select API restrictions, type youtube into the filter, tick YouTube Data API v3 only and click OK.
  3. Application restrictions: leave None.
  4. Click Create.
💡
None is right here: GitHub's servers have no fixed IP and the app runs on your PC, so website or IP restrictions would block the key.
💡
Ignore the Service account required box. It's only about Gemini.
5.8

Copy the key

Screenshot: api key created
  1. Click the copy icon next to Your API key (it starts with AIza) and close the dialog.
💡
Unlike the GitHub token, you can see it again any time: Credentials → API Keys → Show key.
5.9

Paste it into Reels Studio (twice)

Screenshot: panel api keys empty
Screenshot: youtube key saved
Screenshot: panel connection youtube key
  1. Settings → 2 API keys → YouTube Data API key: paste → Save. The badge turns into ✓ Set. This copy goes encrypted to GitHub for the cloud.
  2. Settings → Panel connection → YouTube API key (for previews in the panel): paste the same key → Save connection. This one lets the app list your Shorts.
💡
After saving, the field is empty again. That's on purpose: keys are encrypted and can't be read back, not even by the app. The green badge is your confirmation.
Part 6

Pick your channel and publish time

⏱ 1 min
6.1

Find your channel

Screenshot: channel schedule filled
Screenshot: channel found
  1. Settings → 3 Channel & schedule → YouTube channel: type your @handle (or paste the channel link) and click Find.
  2. Check the avatar and name are yours.
  3. Publish time and Time zone come from your computer. Change the time if you want Reels at another hour.
💡
Same-day scheduling closes 35 minutes before the publish time (the hint shows when).
6.2

Save

Screenshot: channel saved
  1. Click Save channel & schedule.
  2. You'll see Saved: …, Reels at 17:00 … The daily cloud schedule was updated too. and the badge ✓ In use.
💡
Changing the publish time later? Save here again. The app rewrites the cloud schedule for you.
6.3

Your Shorts appear in the Planner

Screenshot: planner with shorts
  1. Open Planner. Your Shorts lists your channel's Shorts with thumbnails. That proves the key works.
  2. Don't schedule anything yet: Instagram isn't connected.
Part 7

Make your Instagram a professional account

⏱ 3 min

Instagram only lets apps publish to professional accounts (Creator or Business). Both are free. Already have one? Skip to the next part.

7.1

No Instagram account yet? Create one

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: ig username error
Screenshot: ig account created
  1. Sign up at instagram.com/accounts/emailsignup. Name = your channel, username ideally = your YouTube handle.
  2. Set your channel logo as the profile photo and write a bio.
💡
Usernames can only use letters, numbers, underscores and periods for a name that looks fine usually means a hidden space. Clear the field and type it by hand.
💡
Post one or two things by hand before the first automated Reel. Brand-new empty accounts that publish through an API look suspicious.
7.2

Switch to a professional account

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: ig creator or business
  1. Instagram → Settings → Account type and tools → Switch to professional account.
  2. Pick Creator → Next, choose a category (e.g. Education) and finish.
💡
Creator and Business both work. Creator is the simpler choice for a YouTube channel.
7.3

Done: a professional account

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: ig professional done
  1. A new Insights (bar chart) icon appears in the left menu. That means it worked.
💡
Adding a phone number (Add phone number) helps protect a new account from being flagged.
Part 8

Create a Facebook Page and link Instagram

⏱ 5 min

Instagram's publishing API works through a Facebook Page. The Page can stay empty, it's just the connector.

8.1

Log in to Facebook first

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: fb pages create logged out
  1. Open facebook.com/pages/create.
  2. See this old-style page with greyed-out buttons? You're not logged in. Log in to your personal Facebook and open the link again.
💡
A Page always needs a personal profile as its admin. Your personal name isn't shown on the Page.
8.2

Name and category

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: fb page create form
Screenshot: fb page filled
  1. Page name: your channel name (a green tick appears).
  2. Category: type and pick Digital creator (optionally add Education).
  3. Click Create Page at the bottom left.
8.3

Finish the setup wizard

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: fb page created step1
Screenshot: fb page done name
  1. Step 1: paste your YouTube channel link into Website. Leave phone, e-mail and address empty.
  2. Click Next through the remaining steps (logo as profile photo and your YouTube banner as cover are nice, not required).
  3. Last step: click Done.
💡
Facebook may change the capitalisation of the name (here PROOF of DATA). It doesn't matter.
8.4

Open the Page's settings

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: fb switched to page
  1. Facebook switches you into the Page (Switched to … at the bottom left, Manage Page menu on the left).
  2. In the left menu click Settings.
💡
No Manage Page menu? Click your profile picture at the top right and switch to the Page.
8.5

Linked accounts → Instagram

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: fb page settings
  1. Linked accounts isn't visible at first. Type Instagram (or linked) into Search settings at the top left.
  2. Open Linked accounts → Instagram → Connect account and log in as your Instagram account.
8.6

Instagram is connected

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: ig linked to page
  1. The dialog names your Page and your Instagram @username. Click Done.
Part 9

Create a Meta developer app

⏱ 5 min

The app is your key to Instagram's API. It can stay in development mode forever: you only publish to your own account.

9.1

Check your business portfolio

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: meta business suite
  1. Open business.facebook.com.
  2. The breadcrumb at the top shows your portfolio and your Page, and the profile picture has both a Facebook and an Instagram badge.
💡
Creating the Page usually creates the portfolio automatically. If it's missing, create one named after your channel and add the Page and the Instagram account.
9.2

Register as a Meta developer

Screenshot: meta dev register
Screenshot: meta dev about you
  1. Open developers.facebook.com/apps → Continue.
  2. Confirm your account and contact e-mail.
  3. About you: pick any card (e.g. Owner/founder) → Complete Registration.
💡
The developer account is tied to your personal profile, but it isn't public, and the automation later runs on a robot token, not on you.
9.3

Create App

Screenshot: meta apps empty
  1. Click Create App.
9.4

Use case: Other

Screenshot: meta use cases featured
Screenshot: meta use case other
  1. Enter an app name if asked (Reels Studio).
  2. None of the Featured use cases fits. In Filter by on the left click Others.
  3. Scroll to the bottom, select Other (the very last option, not Create an app without a use case) → Next.
💡
Meta marks Other as going away soon. If it's gone, try Content management → Manage messaging & content on Instagram (we haven't tested that path yet; tell us in the comments how it went).
9.5

App type: Business

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: meta app type business
Screenshot: meta app type selected
  1. Select Business (briefcase icon) → Next.
  2. Details: app name Reels Studio, your contact e-mail, and Business portfolio = your channel's portfolio. Click Create app.
⚠
The type can't be changed later.
⚠
Don't leave the business portfolio empty, or you can't give the app to the system user later.
9.6

Add the Instagram product

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: meta app created products
  1. The dashboard shows App Mode: Development. Leave it like that.
  2. Under Available products find Instagram and click Set up. Nothing else.
9.7

That's all on this page

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: meta instagram product added
  1. Instagram now appears in the left menu. You don't need anything else here.
⚠
Don't click Add account here. That creates tokens that expire after 60 days. We make a never-expiring one next.
Part 10

Create a system user

⏱ 4 min

A system user is a robot account inside your business portfolio. Its token never expires, unlike your personal one.

10.1

Business settings → System users

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: business settings people
  1. Open business.facebook.com/settings. Check the portfolio name at the top is your channel's.
  2. In the left menu under Users click System users.
10.2

Add a system user

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: system users empty
Screenshot: create system user
  1. Click + Add.
  2. System user name: reels-bot. Role: Admin (the default is Employee).
  3. Click Create system user.
💡
No Add button? Your personal account isn't an admin of this portfolio.
💡
Meta may reject names that look like a real person. A technical name like reels-bot works.
10.3

Assign assets

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: system user created
  1. With reels-bot selected, click Assign assets. Don't generate the token yet.
10.4

1 · Your Facebook Page

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: assign assets dialog
Screenshot: assign page permissions
Screenshot: page content community on
  1. Left column Facebook Pages → tick your Page.
  2. On the right switch on Content and Community activity (or Full control further down, also fine).
  3. Don't click Assign assets yet.
10.5

2 · The app

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: assign app permissions
Screenshot: app manage on
  1. Left column Apps → tick Reels Studio.
  2. Switch on Manage app (full control). The other toggles turn on by themselves.
⚠
Without Manage app the system user can't create a token for the app.
10.6

3 · Your Instagram account

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: assign ig permissions
Screenshot: ig permissions on
  1. Left column Instagram accounts → tick your account.
  2. Switch on Content and Community activity. Content may already be on and greyed out (shared from the Page). That's fine.
  3. The counter at the bottom says 3 assets. Now click Assign assets.
10.7

Assets assigned

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: assets assigned
  1. 3 assets were assigned → Done.
Part 11

Generate the never-expiring Instagram token

⏱ 3 min
11.1

Start the token wizard

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: generate token select app
  1. In Business settings → Users → System users click reels-bot, then Generate token.
  2. Select app: choose Reels Studio → Next.
💡
Reels Studio isn't in the list? The app wasn't assigned to reels-bot with full control (previous part).
11.2

Expiration: Never

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: token expiration
Screenshot: token expiration never
  1. Meta pre-selects 60 days (recommended). Choose Never instead → Next.
⚠
With 60 days your automation silently stops after two months.
11.3

Six permissions

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: token permission search
Screenshot: token 6 permissions
  1. Open Select permissions, type each name into the search box and tick it:
  2. instagram_basic · instagram_content_publish · instagram_manage_comments · pages_show_list · pages_read_engagement · business_management
  3. The field must say 6 options selected. Click outside the list, then Generate token.
⚠
Not the instagram_business_… variants. Those belong to a different login method.
11.4

Copy the token

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: token created
  1. Token created → click Copy. It starts with EAA.
  2. Paste it right away into Reels Studio: Settings → API keys → Instagram (Meta) access token → Save.
  3. Then click Done in Meta.
⚠
Shown only once. Never share it: it can post to your Instagram.
11.5

Check the system user

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: system user assets ok
  1. If the page now says No assigned assets, press F5.
  2. reels-bot has 3 assets: your Page, the app Reels Studio and your Instagram account.
⚠
Don't click Revoke tokens. That kills the token you just saved.
11.6

Token saved in the app

Screenshot: panel ig token saved
  1. Instagram (Meta) access token shows ✓ Set. Only the Instagram account ID is missing now.
Part 12

Find your Instagram account ID

⏱ 2 min

One query in Meta's Graph API Explorer shows the ID of your Instagram account.

12.1

Open the Graph API Explorer

Screenshot: graph explorer
  1. Open developers.facebook.com/tools/explorer.
  2. Meta App: Reels Studio.
  3. Access Token: paste your system-user token (the EAA… one).
  4. Replace the query after v26.0 / (your version number may differ) with:
  5. me/accounts?fields=name,instagram_business_account{id,username}
⚠
Don't click Generate Access Token. That makes a short-lived personal token.
12.2

Optional: check the token

Screenshot: token info token
  1. Click the ⓘ / ⚠ icon in the Access Token field: App Reels Studio, User reels-bot, Valid True, and the six permissions under Scopes.
💡
not you is expected: the token belongs to the robot user, not to you.
12.3

Submit and copy the ID

Screenshot: explorer ig account id token
  1. Click Submit.
  2. Copy the id inside instagram_business_account (a long number starting with 17841).
  3. Paste it into Settings → API keys → Instagram account ID → Save.
⚠
There are two IDs. The one below instagram_business_account is your Facebook Page ID. Wrong one.
💡
Empty data? The token has no access to your Page. Check the system user's assets.
12.4

All keys set

Screenshot: all keys set
  1. Every key shows a green ✓ Set. (YouTube cookies is optional. You can leave it empty.)
Part 13

Run the access test

⏱ 1 min

The test runs in the cloud, checks every key and publishes nothing.

13.1

Run it

Screenshot: access test all good optional
  1. Settings → 4 Access test → ▶ Run access test and wait about a minute.
  2. You want ✓ All good: green for YouTube API & channel and Instagram account & permissions.
  3. Something red? Click Log ↗ next to it, and see Troubleshooting.
💡
A yellow ⚠ on Video download from YouTube (optional) is expected. YouTube blocks downloads from GitHub's servers, so the desktop app attaches your video file instead (Part 15).
Part 14

Options: cover, AI label, comment

⏱ 2 min
14.1

Recommended options

Screenshot: options final
  1. Cover image in the profile grid: YouTube thumbnail, fitted to the profile grid (recommended).
  2. Instagram “AI info” label: On only if your videos use realistic AI (an AI clone, an AI voice). Otherwise Off. You can change it for each Reel.
  3. How the video is handed to Instagram: Direct upload to Meta (recommended).
  4. Comment under the Reel: Copy my comment from under the Short, or Use the template below, for example:
  5. ▶️ Full video on YouTube: {full_video_url} and on a new line 🔗 Link in bio
  6. Comment delay: 60 seconds. Click Save options.
💡
Links on Instagram aren't clickable. Put your YouTube link in your Instagram bio and write Link in bio.
💡
{full_video_url} = the first YouTube link in the Short's description (else your channel).
14.2

Why “fitted to the profile grid”

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: ig grid cover cropped
Screenshot: safe zone on eth cover
Screenshot: grid cover compare
  1. Your profile grid shows only the middle of a tall Reel cover. A headline at the top gets cut off.
  2. With the recommended option the tool puts your whole design at full height on a landscape cover, with a blurred fill on the sides.
  3. Grid: the whole thumbnail. Reels tab: the full cover.
Part 15

Schedule your first Reels

⏱ 1 min a week

Setup is done. From now on this is all you do.

15.1

Open the Planner

Screenshot: app planner first start
  1. Start Reels Studio from the desktop shortcut. It downloads your newest Shorts to Downloads\Shorts automatically.
  2. A 💾 on a Short means its video file is on your PC.
15.2

Pick a Short and a day

Screenshot: auto attached video
  1. Click a Short on the right, then a day in the calendar.
  2. The bottom bar shows when it goes live, and the video file is attached automatically (green button). Show in folder opens it.
  3. Tick or untick Instagram “AI info” label for this Reel.
  4. Click Schedule for 17:00 (your publish time).
⚠
Already on Instagram? is only for Shorts you posted by hand. It marks them so they're never posted again.
15.3

Preparing → Scheduled

Screenshot: scheduled preparing
  1. The day shows Preparing… for 1–3 minutes, then Scheduled. It's also listed under Queue.
  2. Once it says Scheduled, everything is in the cloud. Your PC can be off at publish time.
15.4

Swap a day

Screenshot: replaced day
  1. Click another Short, the same day, tick Replace … → Replace & schedule. The old Short is free again.
  2. Possible until 35 minutes before the publish time.
15.5

A whole week

Screenshot: week scheduled
  1. Repeat for each day. Every Short can only be used once, the app blocks duplicates.
15.6

Posted something by hand?

Screenshot: eth marked published
  1. Click that Short → Already on Instagram?. The calendar shows it as Published and it can never be scheduled again.
💡
Even without this, the tool checks your whole Instagram profile for the same caption right before posting.
Part 16

Post today, without planning

⏱ 1 min

Don't want to plan? Post a Short the same day, right away or at a time you pick, as many as you like. This doesn't need cron-job.org, and your calendar stays free.

16.1

Find your Shorts with the filter

Screenshot: planner filter
  1. The tabs above your Shorts show To do (not used yet), Scheduled, Published and All, each with a count.
16.2

Post now, or at a time today

Screenshot: post today bar
  1. Click a Short. The video file is attached automatically.
  2. Under ⚡ Post today, click Post now. It goes live in about 3–6 minutes.
  3. Or type a time today, up to 5 hours ahead, and click Post at ….
⚠
Waiting for a later time uses your free GitHub minutes one to one (2,000 a month on a private repository). Post now is the cheapest.
16.3

Follow it under Posting today

Screenshot: posting today
  1. The Reel shows up under Posting today at the top of the Planner. While it waits, you can Cancel it.
  2. Once it's out you'll see ✓ Posted. The same Short can never be posted twice.
Part 17

Optional: on-time publishing with cron-job.org

⏱ 5 min

GitHub's own timer is best-effort: on busy days it runs late or skips. A free outside timer starts the publish job on time. GitHub's timer stays on as a backup, and the never-twice guard makes extra runs harmless.

17.1

A second, tiny GitHub token

Screenshot: cronjob token actions only
  1. Create one more fine-grained token (same page as before): name cron-job.org, only your shorts-to-reels repository, permission Actions: Read and write, nothing else.
  2. Copy it.
17.2

Create the cron job

Screenshot: cronjob schedule 25 45
  1. Sign up free at cron-job.org → Cronjobs → Create cronjob. Title: Reels publish.
  2. URL: https://api.github.com/repos/OWNER/REPO/actions/workflows/publish.yml/dispatches (replace OWNER/REPO with yours, e.g. your-name/shorts-to-reels).
  3. Schedule: custom, every day, at your publish time minus 35 and minus 15 minutes. For 17:00: hours 16, minutes 25 and 45 (Ctrl + click to select the second minute). The crontab line must read 25,45 16 *.
  4. Time zone: the same as in Reels Studio (shown under Next executions).
17.3

Advanced tab

Screenshot: cronjob advanced post body
  1. Headers: Accept = application/vnd.github+json · Authorization = Bearer + your new token · X-GitHub-Api-Version = 2022-11-28.
  2. Request method: POST, then click Add Content-Type header now.
  3. Request body: {"ref":"main"}.
17.4

Test run, then Create

Screenshot: cronjob test run 204
  1. Click Test run → Start test run. Status 204 No Content = it works.
  2. Close → Create.
💡
401 or 403? The Authorization header is wrong: it must be Bearer, one space, then the whole token.
17.5

Check on GitHub

Screenshot: run stopped by ledger
  1. Actions → 2 · Publish scheduled Reel: a new run appears (Manually run by you, because it uses your token).
  2. If today's Reel is already out, the run stops with already published … Not publishing again. That's the never-twice guard doing its job.
💡
Changed your publish time in the app? Change the cron-job.org times too. The app shows them in Settings → Channel & schedule.
Part 18

Appendix: YouTube cookies (optional, not recommended)

⏱ 5 min

Only if you can't use the desktop app and want the cloud to download videos from YouTube itself. YouTube keeps invalidating cookies used from servers, so this stops working every few hours to weeks.

18.1

Install Get cookies.txt LOCALLY

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: chrome store cookies ext
Screenshot: cookies ext page
Screenshot: cookies ext permissions
  1. In the Chrome Web Store search get cookies.txt locally and open the result called exactly Get cookies.txt LOCALLY (Featured, ~1,000,000 users).
  2. Add to Chrome → Add extension.
⚠
Avoid look-alikes with 0 ratings. A cookie extension can see your logins.
18.2

Limit it to YouTube and allow Incognito

Screenshot in Czech. The button names in the text are the English ones.
Screenshot: cookies ext installed
Screenshot: cookies ext details
Screenshot: site access specific
Screenshot: site access youtube
Screenshot: allow incognito
  1. chrome://extensions → the extension → Details.
  2. Site access: On specific sites → add https://www.youtube.com.
  3. Switch on Allow in Incognito.
💡
Empty table later? Temporarily set Site access to On all sites, export, then switch it back or remove the extension.
18.3

Export from robots.txt

Screenshot: cookies from robots txt
Screenshot: cookies exported
Screenshot: cookies ext empty
  1. Open an Incognito window (Ctrl + Shift + N), go to youtube.com and sign in (ideally a secondary Google account).
  2. In the same window open a new tab with https://www.youtube.com/robots.txt, then close the YouTube tab.
  3. On the robots.txt tab click the extension → Copy (format Netscape). The list must include LOGIN_INFO and SID.
  4. Close the Incognito window. Don't sign out, that kills the cookies.
⚠
The copied text works like a login to your Google account. Paste it only into Reels Studio.
💡
YouTube replaces cookies while a YouTube tab is open. Exporting from robots.txt avoids that.
18.4

Save and test

Screenshot: cookies saved
Screenshot: access test youtube ok
  1. Settings → API keys → YouTube cookies (optional) → paste → Save → Run access test.
  2. Video download from YouTube should be OK. When it fails again later, repeat the export.
Help

Troubleshooting

“Your Shorts” is empty

Paste the YouTube key into Settings → Panel connection (not only into API keys) and save your channel. Then click Reload.

Automations stay at 2/3

Wait a minute and click ↻. Still stuck? Click Upload / update project again. Check the token has Workflows: Read and write.

Access test: Instagram is red

Open its log. Usual causes: a missing permission (code 10 or 200 → generate the token again with all six), the Page ID instead of the Instagram ID (Part 12), or a token that expired because it was set to 60 days.

“Sign in to confirm you're not a bot”

Expected. YouTube blocks downloads from GitHub's servers. Schedule from the desktop app, it attaches the file from your PC.

A Reel didn't go out on time

GitHub's timer can be late or skip a day. Set up cron-job.org (Part 17). To rescue today's Reel (up to 3 hours after the publish time): GitHub → your repository → Actions → 2 · Publish scheduled Reel → Run workflow with Publish today's package right away ticked, or Settings → Manual override → Publish today's Reel now in the app.

Does it cost anything?

No. A private GitHub repository gets 2,000 free Actions minutes a month; a publishing day uses about 40, a day without a Reel about 4. The YouTube API allows 10,000 units a day; one Reel uses 5–10.

Another computer

Copy the folder (without .venv and work) and run Install Reels Studio.bat there. Keys, channel and queue live on GitHub, so the app only asks for a GitHub token and the YouTube key for previews.

My GitHub token expired

Create a new one exactly like in Part 3 and paste it into Settings → Panel connection → Save connection.

Is it safe?

Your keys are encrypted in your browser and stored as GitHub Secrets in your own private repository. Nobody else, including me, ever sees them. The GitHub token works only for that one repository.

Still stuck? Comment under the video with the step number (e.g. “10.4”) and what you see.