social-poster

Social Media Scheduler

A free, self-hosted scheduler that posts to your Facebook Page, Instagram Business account, and TikTok on a schedule you set. Runs on GitHub Actions (free) so it works even when your computer is off. Pinterest is wired up and will activate as soon as your trial access is approved.

Supported media by platform

Platform Image Video Text-only
Facebook
Instagram ✅ (Reels) ❌ (Instagram requires media)
TikTok ✅ (draft, unverified — see tiktok.py) ✅ (draft, tested live)
Pinterest ✅ (pending trial access) ✅ (pending trial access) ❌ (Pinterest requires media)

TikTok and Pinterest post as drafts — they land ready-to-go and need one manual tap to publish, since full silent auto-publish requires a platform app audit neither has gone through yet.

How it works

  1. You list your posts in schedule.json — platform, caption, media, and the time to post.
  2. A GitHub Actions workflow runs every hour, checks for anything due, and publishes it via each platform’s official API.
  3. The schedule file gets updated in place (pendingposted/failed) so you always have a record of what went out and when.

Adding posts

Edit schedule.json and add entries in this format:

{
  "id": "unique-name-for-this-post",
  "platform": "facebook",
  "datetime": "2026-08-15T14:00:00Z",
  "caption": "Your post text here",
  "media_url": "",
  "media_type": "",
  "status": "pending"
}

Notes:

Checking on things

Before trusting a new media type in the live schedule