If you make short videos, the editing is rarely what stops you. It’s the upload. The same clip goes into YouTube Studio, then TikTok, then Instagram, each with its own caption box and its own wait while the file uploads. Do that daily and it eats an hour you meant to spend filming.
This recipe turns the upload into a queue. You drop finished vertical videos into one folder. Every morning a Claude Code scheduled task takes the oldest one, posts it to YouTube, TikTok and Instagram Reels, moves it to posted/, and writes down the three links.
When you’re done you’ll have:
- a
shortsfolder withqueue/(waiting),posted/(done) andlog.md(links), - one text file next to each video holding its title, caption and hashtags,
- a daily task that publishes at most one video, and does nothing when the queue is empty,
- a first video you watched go out yourself.
Setup is about 20 minutes, most of it signing in to three platforms and one supervised first run.
Who this fits: creators with finished videos (or a batch they film on weekends) who want a steady daily cadence across three platforms. The videos already exist; the AI does the uploading and the bookkeeping. It doesn’t edit video. Every post goes out through your own signed-in accounts on your own computer, like one you’d click by hand.
The recipe
You’ll paste this into Claude Code in step 2:
Read https://www.publishport.app/skill.md and follow it to set up PublishPort for me, then check that YouTube, TikTok and Instagram are connected. In this folder, create queue/, posted/ and log.md. For each video in queue/, I will add a text file with the same name holding a title, a caption and a few hashtags. Take the oldest video in queue/, show me the title and caption you plan to use on each platform, and once I approve, publish it to YouTube (public), TikTok and Instagram Reels, give me the three links, move the files to posted/ and add a line to log.md. After that, help me turn this into a Claude Code Desktop scheduled task that does the same every day at 9 am.
The skill file is a short public instruction sheet. It tells the AI how to install itself, ask you for one authorization click, check which accounts are connected, publish, and confirm the post exists. Every AI you authorize shows on your account page, where you can revoke it.
Step 0: Get three things ready
1. Claude Code Desktop. This recipe uses a local scheduled task because your videos live on your computer. Per Anthropic’s docs, local tasks run on your machine with direct access to your files, but only fire while the app is open and the computer is awake. Open the Code tab and check that Scheduled appears in the sidebar. (Cloud tasks, covered in the Claude Code scheduled tasks recipe, can’t see your local folder.)
2. The PublishPort desktop app, signed in to all three platforms. Install it from the download page, open Platform accounts, click Sign in next to YouTube, TikTok and Instagram, and sign in the usual way in the window that opens (walkthrough). For YouTube, use the account that owns your channel.
3. Node.js and an empty folder with one video. The publishing command runs on Node.js: check node -v, or install the LTS release from nodejs.org. Create a folder called shorts with a queue folder inside, and put one finished video in it. Make it a vertical .mp4: Instagram Reels uploads accept .mp4 only, and YouTube counts a vertical or square video up to three minutes as a Short.
Step 1: What each platform’s command can do
Check this before you plan your week (checked against the PublishPort command set, publishport-opencli 1.0.40):
| YouTube | TikTok | Instagram Reels | |
|---|---|---|---|
| Upload a video file with a title | Yes | Yes | Caption only, no separate title |
| Caption / description | Yes | Yes, with hashtags | Yes |
| Hashtags / tags | Yes | Yes | Put them in the caption |
| Custom thumbnail | Yes | No | No |
| Public / unlisted / private | Yes | No | No |
| Scheduled publish time on the platform | No | Yes, a --schedule time |
No |
| Format | Any video file | Video file | .mp4 only |
The practical consequence: only TikTok can be told “publish at 6 pm”. For the other two, the timing comes from your scheduled task, which publishes at the moment it runs. That’s fine for a daily morning post. If you want TikTok at a different hour than the others, say so in the task prompt and the AI will use TikTok’s schedule option.
Step 2: Supervised first run
Open Claude Code Desktop, start a session in the shorts folder and paste the recipe. What happens:
-
The AI installs the PublishPort skill and runs the login. It gives you an authorization link and a confirmation code. Open the link, sign in or create a PublishPort account, check the code matches and click Authorize. The link lasts 10 minutes; ask for a new one if it expires.
-
It checks your computer and tells you which of the three platforms show as signed in. If one doesn’t, sign in again under Platform accounts and ask it to re-check.
-
It creates
posted/andlog.md. Now write the text file for your video. If the video isqueue/morning-desk-tour.mp4, createqueue/morning-desk-tour.txt:title: My morning desk setup in 20 seconds caption: The three things on my desk I'd keep if I had to cut everything else. tags: desksetup, productivity, workfromhomeOr tell the AI “write the title, caption and tags for me from this one-line idea” and edit its draft.
-
It shows you the version it will use on each platform. YouTube titles are capped at 100 characters; keep the TikTok and Instagram captions shorter and more conversational than the YouTube description. Edit freely, then approve.
-
It publishes, one platform after another. Video uploads take a few minutes. It then hands you three links, moves the video and text file into
posted/and adds a line tolog.md. Click all three links. Seeing the Short live is your proof the chain works.
Claude Code asks permission before running commands. Approve while you’re watching; step 3 makes that stick.
Step 3: Create the daily task
Ask the AI to create it, or build it by hand. In the Code tab click Scheduled, then New task, and choose Set up manually if offered. Per the docs, the dialog has changed shape between versions: if you see Only on this computer, switch it on; if you see a Local / Cloud menu, pick Local. Pick the shorts folder, choose Daily, and set the time. Anthropic notes each task starts a few minutes after its scheduled time, and the run is skipped if the computer is asleep.
Name it daily-short and paste these instructions:
This is a pre-approved publishing task. Publish without asking me to confirm, but only as the rules below allow.
1. Look in queue/ for video files (.mp4). If there are none, write "queue empty" and stop.
2. Take the oldest one by file name. If log.md already has a line dated today, stop: one video per day.
3. Read the text file with the same name: title, caption, tags. If it is missing, do not publish. Tell me which video has no text file and stop.
4. Check the time. If it is after 2 pm, stop and say the run was late.
5. For each of YouTube (public), TikTok and Instagram Reels, run `publishport guide <platform>` to read the current options, then publish. Use the video's absolute path. YouTube gets the title, caption as description and the tags. TikTok gets the caption and tags. Instagram gets the caption with the hashtags added at the end.
6. If any command fails or times out, do NOT run it again. Look at that account's latest posts first and retry once only if the video is not there. Never publish twice.
7. Move the video and its text file to posted/ only if all three succeeded. Otherwise leave them in queue/. Append one line to log.md: date, file name, the links that worked, and which platform failed, if any.
8. Give me a two-line summary.
Then click Run now once. Watch the session. The first time a command needs permission, choose “always allow”; the docs say later runs of that task then approve the same tools without stalling. Review or revoke those approvals on the task’s detail page. Run it only after step 2: the “one per day” guard will stop a same-day second run, so for a test, put a second video in queue/ and delete today’s line from log.md first.
The rules in the prompt are the point. Each scheduled run starts cold and nobody is watching, so the permission to publish has to be written into it (PublishPort’s skill otherwise has the AI show you the content first). And the guards (one per day, stop if late, never retry blindly, only move files after success) keep a bad morning from becoming a duplicate post.
Your weekly rhythm
- Sunday, 15 minutes: drop the week’s videos into
queue/with their text files. Name them01-…,02-…so the order is obvious. - Every morning: one video goes out on all three. Skim
log.mdor the session summary. - When the queue is empty: the task says so and stops. That’s your reminder to film.
If something doesn’t run
- Nothing was posted today: the computer was asleep, or Claude Desktop wasn’t running. Check the task’s History; skipped runs show why. If the machine sleeps, turn on Keep computer awake under Settings > This computer > System. A catch-up run may fire late, which is why the prompt stops after 2 pm.
- The AI says no device is online: the PublishPort app isn’t running. It normally starts with your computer; start it by hand if not.
- One platform says you’re signed out: sessions expire. Sign in again under Platform accounts. The other two will have posted; the log records which one failed so you can post that one by hand or ask the AI to.
- Instagram refuses the file: it needs
.mp4. Re-export from your editor. - YouTube posted it as a regular video, not a Short: it was landscape or longer than three minutes.
- The task stalls on a permission prompt: open the run from the task’s History, answer the prompt, and choose “always allow”.
Taking it further
Posting is half the job. Once a week of videos has gone out, have the AI answer the comments overnight, and use the weekly analytics review to decide which kind of clip goes into next week’s queue. Prefer text posts? LinkedIn on a weekly cadence uses the same pattern.
The free plan covers setting this up; plan limits and pricing are on the pricing page.
