Skip to content
Automation
Skill

/postiz

Postiz is a tool to schedule social media and chat posts to 28+ channels 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,

From plugin
postiz
5661 skill

Claude Code

$ npx -y skills add gitroomhq/postiz-agent --skill postiz --agent claude-code

SKILL.md

postiz.SKILL.md
name: postiz
description: Postiz is a tool to schedule social media and chat posts to 28+ channels 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, ListMonk
homepage: https://docs.postiz.com/public-api/introduction
metadata: {"openclaw":{"emoji":"🌎","requires":{"bins":[],"env":["POSTIZ_API_URL"]}}}

Install Postiz if it doesn't exist

npm install -g postiz
# or
pnpm install -g postiz

npm release: https://www.npmjs.com/package/postiz postiz github: https://github.com/gitroomhq/postiz-app postiz cli github: https://github.com/gitroomhq/postiz-app official website: https://postiz.com ---

| Property | Value | |----------|-------| | **name** | postiz | | **description** | Social media automation CLI and MCP server for scheduling posts across 28+ platforms including X, LinkedIn, LinkedIn Pages, Instagram, Facebook, Threads, YouTube, TikTok, Reddit, Pinterest, Bluesky, Mastodon, Google My Business, Discord, Slack, Telegram, Twitch, Kick, Lemmy, Farcaster, Nostr, VK, MeWe, Tumblr, Skool, Whop, Moltbook, Dribbble, Medium, Dev.to, Hashnode, WordPress, and ListMonk | | **allowed-tools** | Bash(postiz:*) |

---

⚠️ Four Hard Rules (Read First)

**Rule 1 — Authenticate before anything.** All commands fail without valid credentials.

**Rule 2 — Every file passed to `-m` (or to `image`/media fields in JSON mode) MUST first go through `postiz upload`.** Raw filesystem paths (`image.jpg`, `video.mp4`) and external URLs (`https://example.com/...`) are **NOT** accepted by the publishing pipeline. TikTok, Instagram, YouTube, and most other providers reject anything that isn't a Postiz-verified URL. Always:

RESULT=$(postiz upload <file>)
URL=$(echo "$RESULT" | jq -r '.path')
postiz posts:create ... -m "$URL" ...

If you see `-m "something.jpg"` anywhere below, treat it as shorthand for "the `.path` you got back from `postiz upload something.jpg`" — never a raw local file.

A file that was already uploaded does not need uploading again: find it with `postiz media:list -s <name>` and reuse its `.path`.

**Rule 3 — When posting to TikTok, `content_posting_method` MUST be `"DIRECT_POST"`** unless the user has explicitly asked to finish the post inside the TikTok app. `"UPLOAD"` does not publish — it drops the media into the account's TikTok inbox to be completed manually within 24 hours, while the Postiz API still reports success. A user saying "upload this video to TikTok" means `"DIRECT_POST"`.

**Rule 4 — Fetch `postiz integrations:settings <id>` before scheduling and honor the returned `rules` and per-field `description`s.** They state which settings apply and when. A setting that doesn't apply (wrong posting method, wrong media type, etc.) is **silently discarded**, not rejected — the post still reports success, so this is your only chance to catch it.

---

⚠️ Authentication Required

**You MUST authenticate before running any Postiz CLI command.** All commands will fail without valid credentials.

Before doing anything else, check auth status:

postiz auth:status

If not authenticated, either: 1. **OAuth2:** `postiz auth:login` 2. **API Key:** `export POSTIZ_API_KEY=your_api_key`

**Do NOT proceed with any other commands until authentication is confirmed.**

---

Core Workflow

The fundamental pattern for using Postiz CLI:

1. **Authenticate** - Verify or set up authentication (see above) 2. **Discover** - List integrations and get their settings 3. **Fetch** - Use integration tools to retrieve dynamic data (flairs, playlists, companies) 4. **Prepare** - Upload media files if needed (or reuse an existing `.path` from `media:list`) 5. **Post** - Create posts with content, media, and platform-specific settings 6. **Analyze** - Track performance with platform and post-level analytics 7. **Resolve** - If analytics returns `{"missing": true}`, run `posts:missing` to list provider content, then `posts:connect` to link it

# 1. Authenticate
postiz auth:status
# If not authenticated: postiz auth:login --client-id <id> --client-secret <secret>

# 2. Discover
postiz integrations:list
postiz integrations:settings <integration-id>

# 3. Fetch (if needed)
postiz integrations:trigger <integration-id> <method> -d '{"key":"value"}'

# 4. Prepare
postiz upload image.jpg
postiz media:list -s image   # or reuse an already-uploaded file

# 5. Post
postiz posts:create -c "Content" -m "image.jpg" -i "<integration-id>"

# 6. Analyze
postiz analytics:platform <integration-id> -d 30
postiz analytics:post <post-id> -d 7

# 7. Resolve (if analytics returns {"missing": true})
postiz posts:missing <post-id>
postiz posts:connect <post-id> --release-id "<content-id>"

---

Essential Commands

Authentication

**Option 1: OAuth2 (Recommended)**

# Login via device flow (opens browser, no client ID/secret needed)
postiz auth:login

# Check auth status (verifies credentials are still valid)
postiz auth:status

# Logout (remove stored credentials)
postiz auth:logout

Credentials are stored in `~/.postiz/credentials.json`. OAuth2 credentials take priority over API key.

**Option 2: API Key**

export POSTIZ_API_KEY=your_api_key_here

**Optional custom API URL:**

export POSTIZ_API_URL=https://custom-api-url.com

Integration Discovery

# List all connected integrations
postiz integrations:list

# List integrations belonging to a specific group (customer)
postiz integrations:list --group <group-id>

# List all groups (customers) as {id, name}
postiz integrations:groups

# Get settings schema for specific integration
postiz integrations:settings <integration-id>

# Trigger integration tool to fetch dynamic data
postiz integrations:trigger <integration-id> <method-name>
postiz integrations:trigger <integration-id> <method-n
Read more
@gitroomhq
Ships withpostiz

Social media automation CLI for AI agents - Schedule posts across 28+ platforms programmatically.

Stars on GitHub

Momentum

stars in total
566
Star history of gitroomhq/postiz-agent on GitHub, a chart by star-history.com

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n11d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about postiz.

Which coding agents can use postiz?
postiz installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.