postiz
../../SKILL.md
Security Assessment
Detected risks:
About postiz
Postiz is a command-line tool for scheduling and publishing social media and chat posts across 28+ channels, including X, LinkedIn, LinkedIn Page, Reddit, Instagram, Facebook Page, Threads, YouTube, Google My Business, TikTok, Pinterest, Dribbble, Discord, Slack, Kick, Twitch, Mastodon, Bluesky, Lemmy, Farcaster, Telegram, Nostr, VK, Medium, Dev.to, Hashnode, WordPress, and ListMonk. It is installed globally via npm or pnpm and driven entirely through `postiz` subcommands such as `posts:create`, `posts:list`, `integrations:list`, and `analytics:platform`.
The skill is appropriate when an agent needs to automate cross-platform posting: discovering connected integrations, fetching dynamic platform data (like subreddit flairs or playlists) via `integrations:trigger`, uploading media, scheduling single or multi-platform posts, and tracking performance. Two hard rules govern its use. First, every command requires valid authentication; the agent must run `postiz auth:status` and authenticate via OAuth2 device flow (`postiz auth:login`) or an API key (`POSTIZ_API_KEY`) before doing anything. Second, any file passed to the `-m` media flag or to media fields in JSON mode must first be uploaded through `postiz upload`, whose `.path` result is the only value the publishing pipeline accepts — raw filesystem paths and external URLs are rejected by providers like TikTok, Instagram, and YouTube.
The core workflow follows seven steps: authenticate, discover integrations, fetch any needed dynamic data, prepare (upload) media, create the post with content and platform-specific settings, analyze results, and resolve missing content. Posts require a scheduled date (`-s`), support draft status (`-t draft`), threaded comments each with their own media, multi-platform targeting via comma-separated integration IDs, and per-platform `--settings` JSON. Analytics commands return metric arrays with daily data points and percentage change. When `analytics:post` returns `{"missing": true}` — common with TikTok, which does not return a post ID immediately — the agent runs `posts:missing` to list provider content and `posts:connect --release-id` to link it before analytics will function.
FAQ
What must I do before running any Postiz command?
Authenticate first. Run `postiz auth:status`, and if not authenticated use OAuth2 via `postiz auth:login` or set an API key with `export POSTIZ_API_KEY=...`. All commands fail without valid credentials.
Can I attach a local image file or external URL directly to a post?
No. Every media file must first go through `postiz upload`, and only the `.path` value it returns is accepted by the publishing pipeline. Raw filesystem paths and external URLs are rejected by most providers, including TikTok, Instagram, and YouTube.
How do I post to multiple platforms at once?
Pass a comma-separated list of integration IDs to the `-i` flag, for example `-i "twitter-id,linkedin-id,facebook-id"`. A scheduled date via `-s` is required for every post.
Why does analytics:post return {"missing": true} and how do I fix it?
Some platforms like TikTok do not return a usable post ID immediately, so the post's releaseId is set to "missing". Run `postiz posts:missing <post-id>` to list provider content, then `postiz posts:connect <post-id> --release-id "<content-id>"` to link it, after which analytics will work.
How do I set platform-specific options like a subreddit for Reddit?
Use the `--settings` flag with a JSON payload, for example a subreddit object specifying subreddit, title, and type. You can also build complex posts from a file using `postiz posts:create --json post.json`.
All Files
47 filesInstall postiz
Quick Setup:
- Copy the skill folder to
.claude/skills/ - Claude will automatically detect and use the skill
Repository
gitroomhq/postiz-agent