Paste this guide into Claude Code and it will walk you through every step interactively.
Auto-Post to 4 Platforms at Once
What this gives you: One command takes your finished video from Trello and publishes it to TikTok, Instagram Reels, YouTube Shorts, and LinkedIn simultaneously. Captions, hashtags, and cover image all handled automatically.
The Distribution Problem
You film one video but need to post it on 4 different platforms. Each has its own app, its own upload flow, its own caption format. That is 20+ minutes of manual work per video - per post, every time.
Multiply that by 5 videos a week and you are spending two hours on distribution alone. The /post-content skill eliminates that. One command reads your Trello card, downloads the video, writes platform-optimised captions, and publishes everywhere simultaneously.
What Is Zernio
Zernio is a social media scheduling API that handles multi-platform publishing. You send it a video URL, a caption, and your connected platform accounts - it takes care of the rest. No browser automation, no Selenium, no unofficial hacks. It uses the official platform APIs under the hood.
Detail
Value
Base URL
https://zernio.com/api/v1
Authentication
Bearer token in the Authorization header
Supported platforms
TikTok, Instagram, YouTube, LinkedIn, Twitter/X
Video input
HTTPS URL to the video file
Key env var
ZERNIO_API_KEY
Step 1: Set Up Zernio
Before writing a line of skill code, get your Zernio account fully configured.
Create an account at zernio.com
Connect each platform: TikTok, Instagram, YouTube, LinkedIn
Go to API settings and generate an API key
On each connected platform page, copy the Account ID - you will need this per-platform when calling the API
Load your env file in every shell session by sourcing it in ~/.zshrc or ~/.bashrc: source ~/.env. Never hardcode these values anywhere else.
Step 2: The Skill Structure
Create the skill directory and file:
mkdir -p ~/.claude/skills/post-content
The skill lives at ~/.claude/skills/post-content/SKILL.md. It takes a Trello card URL or ID as its only input and handles everything from there.
---name: post-content
description: >
Publish a finished short-form video to TikTok, Instagram Reels,
YouTube Shorts, and LinkedIn. Reads the Trello card for video URL
and metadata. Use when the user says "post", "publish", or references
a card that is ready to go live.
triggers:
- "post content"
- "publish video"
- "post this"
- "go live"---# /post-content Skill
Input: Trello card URL or card ID.
Steps:
1. Read the Trello card (title, description, attachments)
2. Download or identify the video URL from the attachments
3. Host the video at a unique HTTPS URL if not already hosted
4. Generate caption and hashtags from the card title + description
5. Post to each platform via separate Zernio API calls
6. Update the Trello card with publish status and results
Step 3: Video Preparation
Zernio needs a publicly accessible HTTPS URL to your video. It does not accept local file uploads. Three options:
Option A: Host on your VPS via nginx
# Upload to VPS with a unique timestamped filenameFILENAME="video-$(date +%Y%m%d-%H%M%S).mp4"
scp video.mp4 vps:/var/www/html/tmp-media/${FILENAME}
# URL becomes: https://yourdomain.com/tmp-media/${FILENAME}
Option B: S3 or Google Drive
# S3 presigned URL (valid for 1 hour by default - set longer)aws s3 cp video.mp4 s3://your-bucket/tmp-media/${FILENAME}
aws s3 presign s3://your-bucket/tmp-media/${FILENAME} --expires-in 86400
Warning: Always use unique filenames when hosting videos for Zernio. The API caches URLs aggressively. If you upload a new video to the same URL, Zernio will post the old cached version.
Step 4: Caption Generation
Claude Code reads the Trello card title and description to generate captions. The logic is deterministic, not creative guessing - you give it a pool to draw from.
## Caption Generation Rules
Base caption:
- 1-10 words maximum
- Punchy, direct, no filler
- Derived from the card title
- No em dashes, no rhetorical questions
Hashtag pool (select 5 relevant):
#AIAutomation #ClaudeCode #ContentCreator #BuildInPublic#AITools #SoloPreneur #AgencyLife #ContentStrategy#Automation #AIAgency #DigitalNomad #WorkSmarter#ShortFormContent #CreatorEconomy #ProductivityHacks
Platform-specific adjustments:
- YouTube Shorts: append #Shorts as the first hashtag
- LinkedIn: remove casual hashtags, keep professional ones only
- TikTok/Instagram: use all 5 hashtags from the pool selection
Tip: Post to each platform separately rather than all at once. If Instagram rejects the video (too large, wrong format), TikTok and YouTube still go through. Separate calls mean partial success is possible.
Step 5: Publishing via the Zernio API
Each platform gets its own API call. If one fails, the others are unaffected. Run these sequentially - not in parallel - so you can log each result before moving to the next.
Posting identical content within 24 hours gets rejected. Vary captions slightly per platform if reposting.
TikTok rate limits
If you get a rate limit error, wait 5 minutes before retrying. Do not loop immediately.
Cached video URL
Always verify your video URL returns HTTP 200 before posting: curl -I VIDEO_URL | grep HTTP
Step 6: Update Trello After Publishing
After all four API calls complete, the skill updates the Trello card automatically. This creates a clean audit trail - you always know which cards have been published and where.
## Post-Publish Trello Updates
1. Mark the card's due date as complete (signals "published")
2. Add a comment with the publish results:
Published [DATE] [TIME]:
- TikTok: SUCCESS (post ID: xxx)
- Instagram: SUCCESS (post ID: xxx)
- YouTube Shorts: SUCCESS (post ID: xxx)
- LinkedIn: FAILED - video over 50MB, compress and retry
3. Move the card to "Published" list if one exists on the board
Want your content distribution fully automated?
I can build the complete pipeline from raw video to published on all platforms.
This skill is step 4 in a four-step pipeline. Here is how all the skills chain together for a full week of content:
# Step 1: Generate 30 script ideas and save to Trello
/write-shorts
-> 30 short-form video scripts added as Trello cards# Step 2: Film the best 5-7 as raw video files~ 30 minutes of filming ~# Step 3: Add captions and update the Trello card
/short-form-content [video.mp4] [trello-card-url]
-> Captioned video ready, card updated with video attachment# Step 4: Publish everywhere
/post-content [trello-card-url]
-> Live on TikTok, Instagram, YouTube Shorts, LinkedIn
Total hands-on time: roughly 45 minutes for a full week of content across 4 platforms. The rest is the pipeline running.
Automating with Cron
Once the skill works reliably manually, move scheduling to your VPS. A cron job checks Trello every hour for cards in the "Ready to Post" list and publishes them automatically - no human needed.
# On your VPS - check every hour between 8am and 8pm
0 8-20 * * * /home/jarvis/scripts/auto-post.sh >> /var/log/auto-post.log 2>&1
#!/bin/bash# /home/jarvis/scripts/auto-post.shsource /home/jarvis/.env
# Get all cards in the "Ready to Post" Trello listCARDS=$(curl -s "https://api.trello.com/1/lists/${TRELLO_READY_LIST_ID}/cards?key=${TRELLO_KEY}&token=${TRELLO_TOKEN}" \
| jq -r '.[].id')
# Publish each card and move it to "Published"
for CARD_ID in $CARDS; do
echo "Publishing card: $CARD_ID"
# Call your post-content logic here (or invoke via Claude Code API)
bash /home/jarvis/scripts/publish-card.sh "$CARD_ID"
sleep 120 # 2-minute gap between posts to avoid rate limits
done
Tip: Add a "Publish After" custom field to your Trello cards. The cron script checks this field and skips cards where the publish time has not arrived yet. That gives you scheduled posting without a paid scheduling tool.