Back to Skills

postiz

../../SKILL.md

310stars53forksUpdated 6/24/2026

Security Assessment

Low Risk(85/100)

Detected risks:

Agent-reviewed override('rm -rf' is a package.json build:cli script (clean dist before build); .bashrc/.zshrc are PATH setup; API_KEY= are social-account config examples. Benign open-source social scheduler.)
Security Score85/100

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 files
src/commands/analytics.ts1.2 KB
View
.claude-plugin/plugin.json0.8 KB
View
LICENSE0.7 KB
View
src/commands/upload.ts0.7 KB
View
src/index.ts12.4 KB
View
src/commands/posts.ts6.3 KB
View
tsconfig.json0.5 KB
View
CHANGELOG.md1.0 KB
View
FEATURES.md7.4 KB
View
QUICK_START.md4.8 KB
View
PROVIDER_SETTINGS.md10.2 KB
View
examples/basic-usage.sh1.1 KB
View
examples/multi-platform-post.json1.9 KB
View
PROVIDER_SETTINGS_SUMMARY.md5.3 KB
View
SYNTAX_UPGRADE.md6.0 KB
View
HOW_TO_RUN.md5.1 KB
View
examples/EXAMPLES.md7.3 KB
View
examples/command-line-examples.sh5.0 KB
View
examples/COMMAND_LINE_GUIDE.md7.7 KB
View
SUMMARY.md5.9 KB
View
examples/tiktok-video.json0.8 KB
View
server/SERVER.md4.1 KB
View
server/tsconfig.json0.2 KB
View
SUPPORTED_FILE_TYPES.md5.2 KB
View
package.json1.3 KB
View
.claude-plugin/marketplace.json0.6 KB
View
.gitignore0.3 KB
View
server/package.json0.5 KB
View
server/pnpm-lock.yaml15.3 KB
View
src/commands/auth.ts6.8 KB
View
src/config.ts0.8 KB
View
tsup.config.ts0.3 KB
View
INTEGRATION_TOOLS_WORKFLOW.md8.4 KB
View
INTEGRATION_SETTINGS_DISCOVERY.md8.5 KB
View
SKILL.md25.0 KB
View
README.md21.1 KB
View
PUBLISHING.md6.0 KB
View
PROJECT_STRUCTURE.md7.6 KB
View
examples/multi-platform-with-settings.json4.1 KB
View
examples/post-with-comments.json1.3 KB
View
examples/reddit-post.json0.8 KB
View
examples/youtube-video.json1.3 KB
View
server/index.ts12.0 KB
View
src/api.ts5.1 KB
View
examples/thread-post.json1.8 KB
View
skills/postiz/SKILL.md0.0 KB
View
src/commands/integrations.ts2.3 KB
View

Install postiz

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill