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, Nostr, VK, Medium, Dev.to, Hashnode, WordPress, ListMonk
DeepseekModel
キュレーション済みスキル
品質 優秀 · 78
v1.0.0
取得
https://deepseekmodel.com/api/download.php?id=gitroomhq-postiz-agent-skill-md&format=skill
ダウンロード .skill
標準形式。system_prompt と model_config を収録し、任意の Agent で利用可能
.skill ファイルの system_prompt フィールドの実際の内容。
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":"[Truncated]","env":"[Truncated]"}}} 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 for scheduling posts across 28+ platforms 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. 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: OAuth2: postiz auth:login 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: Authenticate - Verify or set up authentication (see above) Discover - List integrations and get their settings Fetch - Use integration tools to retrieve dynamic data (flairs, playlists, companies) Prepare - Upload media files if needed Post - Create posts with content, media, and platform-specific settings Analyze - Track performance with platform and post-level analytics 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 # 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-name> -d '{"param":"value"}' Creating Posts # Simple post (date is REQUIRED) postiz posts:create -c "Content" -s "2024-12-31T12:00:00Z" -i "integration-id" # Draft post postiz posts:create -c "Content" -s "2024-12-31T12:00:00Z" -t draft -i "integration-id" # Post with media (upload each file FIRST — see Rule 2) IMG1=$(postiz upload img1.jpg | jq -r '.path' ) IMG2=$(postiz upload img2.jpg | jq -r '.path' ) postiz posts:create -c "Content" -m " $IMG1 , $IMG2 " -s "2024-12-31T12:00:00Z" -i "integration-id" # Post with comments (each with own media — every file uploaded first) MAIN=$(postiz upload main.jpg | jq -r '.path' ) C1=$(postiz upload comment1.jpg | jq -r '.path' ) C2A=$(postiz upload comment2.jpg | jq -r '.path' ) C2B=$(postiz upload comment3.jpg | jq -r '.path' ) postiz posts:create \ -c "Main post" -m " $MAIN " \ -c "First comment" -m " $C1 " \ -c "Second comment" -m " $C2A , $C2B " \ -s "2024-12-31T12:00:00Z" \ -i "integration-id" # Multi-platform post postiz posts:create -c "Content" -s "2024-12-31T12:00:00Z" -i "twitter-id,linkedin-id,facebook-id" # Platform-specific settings postiz posts:create \ -c "Content" \ -s "2024-12-31T12:00:00Z" \ --settings '{"subreddit":[{"value":{"subreddit":"programming","title":"My Post","type":"text"}}]}' \ -i "reddit-id" # Complex post from JSON file postiz posts:create --json post.json Managing Posts # List posts (defaults to last 30 days to next 30 days) # Each returned post includes its current `settings` (as a JSON string — JSON.parse it). # Workflow: run posts:list to read a post's current settings, then posts:settings to patch them. postiz posts:list # List posts in date range postiz posts:list --startDate "2024-01-01T00:00:00Z" --endDate "2024-12-31T23:59:59Z" # Delete post postiz posts:delete <post-id> # Change post status (draft ↔ schedule) postiz posts:status <post-id> --status draft # Move back to draft, terminates any running publish workflow postiz posts:status <post-id> --status schedule # Promote a draft into the publishing queue (uses the post's stored date) # Update a post's provider-specific settings (merged — only the keys you pass change) # Only DRAFT/QUEUE (unpublished) posts can be updated. Pass the MAIN post id, not a comment id. # Do NOT include __type — the backend adds it automatically from the integration. postiz posts:settings <post-id> --settings '{"content_posting_method":"DIRECT_POST"}' # Switch a TikTok draft to direct publishing postiz posts:settings <post-id> --settings '{"subreddit":[{"value":{"subreddit":"/r/selfhosted","title":"My title","type":"self","is_flair_required":true}}]}' # Set a Reddit post's subreddit Analytics # Get platform analytics (default: last 7 days) postiz analytics:platform <integration-id> # Get platform analytics for last 30 days postiz analytics:platform <integration-id> -d 30 # Get post analytics (default: last 7 days) postiz analytics:post <post-id> # Get post analytics for last 30 days postiz analytics:post <post-id> -d 30 Returns an array of metrics (e.g. Followers, Impressions, Likes, Comments) with daily data points and percentage change over the period. ⚠️ IMPORTANT: Missing Release ID Handling If analytics:post returns {"missing": true} instead of an analytics array, the post was published but the platform didn't return a usable post ID. You must resolve this before analytics will work: # 1. analytics:post returns {"missing": true} postiz analytics:post <post-id> # 2. Get available content from the provider postiz posts:missing <post-id> # Returns: [{"id": "7321456789012345678", "url": "https://...cover.jpg"}, ...] # 3. Connect the correct content to the post postiz posts:connect <post-id> --release-id "7321456789012345678" # 4. Now analytics will work postiz analytics:post <post-id> Connecting Missing Posts Some platforms (e.g. TikTok) don't return a post ID immediately after publishing. When this happens, the post's releaseId is set to "missing" and analytics are unavailable until resolved. # List recent content from the provider for a post with missing release ID postiz posts:missing <post-id> # Connect a post to its published content postiz posts:connect <post-id> --release-id "<content-id>" Returns an empty array if the provider doesn't support this feature or if the post doesn't have a missing release ID. Media Upload ⚠️ IMPORTANT: Always upload files to Postiz before using them in posts. Many platforms (TikTok, Instagram, YouTube) require verified URLs and will reject external links. # Upload file and get URL postiz upload image.jpg # Supports: images (PNG, JPG, GIF, WEBP, SVG), videos (MP4, MOV, AVI, MKV, WEBM), # audio (MP3, WAV, OGG, AAC), documents (PDF, DOC, DOCX) # Workflow: Upload → Extract URL → Use in post VIDEO=$(postiz upload video.mp4) VIDEO_PATH=$( echo " $VIDEO " | jq -r '.path' ) postiz posts:create -c "Content" -s "2024-12-31T12:00:00Z" -m " $VIDEO_PATH " -i "tiktok-id" Common Patterns Pattern 1: Discover & Use Integration Tools Reddit - Get flairs for a subreddit: # Get Reddit integration ID REDDIT_ID=$(postiz integrations:list | jq -r '.[] | select(.identifier=="reddit") | .id' ) # Fetch available flairs FLAIRS=$(postiz integrations:trigger " $REDDIT_ID " getFlairs -d '{"subreddit":"programming"}' ) FLAIR_ID=$( echo " $FLAIRS " | jq -r '.output[0].id' ) # Use in post postiz posts:create \ -c "My post content" \ -s "2024-12-31T12:00:00Z" \ --settings "{\"subreddit\":[{\"value\":{\"subreddit\":\"programming\",\"title\":\"Post Title\",\"type\":\"text\",\"is_flair_required\":true,\"flair\":{\"id\":\" $FLAIR_ID \",\"name\":\"Discussion\"}}}]}" \ -i " $REDDIT_ID " YouTube - Get playlists: YOUTUBE_ID=$(postiz integrations:list | jq -r '.[] | select(.identifier=="youtube") | .id' ) PLAYLISTS=$(postiz integrations:trigger " $YOUTUBE_ID " getPlaylists) PLAYLIST_ID=$( echo " $PLAYLISTS " | jq -r '.output[0].id' ) postiz posts:create \ -c "Video description" \ -s "2024-12-31T12:00:00Z" \ --settings "{\"title\":\"My Video\",\"type\":\"public\",\"playlistId\":\" $PLAYLIST_ID \"}" \ -m "video.mp4" \ -i " $YOUTUBE_ID " LinkedIn - Post as company: LINKEDIN_ID=$(postiz integrations:list | jq -r '.[] | select(.identifier=="linkedin") | .id' ) COMPANIES=$(postiz integrations:trigger " $LINKEDIN_ID " getCompanies)
このスキルを起動するキーワード。クリックでコピーできます。
このスキルにはトリガーワードがありません。
ダウンロードした .skill に含まれるフィールド。
| フィールド | 説明 |
|---|---|
| format | フォーマット識別子(skill/v1) |
| skill_id | スキル固有 ID |
| name | スキル名 |
| version | バージョン |
| description | 説明 |
| category | カテゴリ(配列) |
| trigger_words | トリガーワード |
| tags | タグ |
| source | ソース |
| source_url | ソース URL(本ページ) |
| exported_at | エクスポート日時(ダウンロード毎) |
| system_prompt | システムプロンプト本文 |
| model_config | モデル設定:provider / model / temperature / max_tokens / top_p |
| examples | サンプル |
| install_guide | 各プラットフォームの導入説明(Coze / Dify / Claude / カスタム) |