omnisocials
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseOmniSocials Skill
OmniSocials Skill
Create, schedule, and publish social media content across 10 platforms using OmniSocials.
OmniSocials is a social media management tool that lets you schedule posts, track analytics, and manage your inbox across Instagram, Facebook, LinkedIn, YouTube, TikTok, X (Twitter), Pinterest, Bluesky, Threads, and Mastodon.
使用OmniSocials跨10个平台创建、排期和发布社交媒体内容。
OmniSocials是一款社交媒体管理工具,支持你在Instagram、Facebook、LinkedIn、YouTube、TikTok、X(原Twitter)、Pinterest、Bluesky、Threads和Mastodon上排期帖子、追踪分析数据以及管理收件箱。
Setup
配置步骤
Before using this skill, ensure:
-
API Key: Run the setup command to configure your API key securely
- Get your key at https://app.omnisocials.com/settings/api
- Run:
<skill-path>/scripts/omnisocials.js setup - Or set environment variable:
export OMNISOCIALS_API_KEY=omsk_live_your_key
-
Requirements: Node.js 18+ (for built-in fetch API). No other dependencies needed.
Config priority (highest to lowest):
- environment variable
OMNISOCIALS_API_KEY - (project-local, in user's working directory)
./.omnisocials/config.json - (user-global)
~/.config/omnisocials/config.json
使用本技能前,请确保完成以下操作:
-
API密钥:运行配置命令安全设置你的API密钥
- 在https://app.omnisocials.com/settings/api获取密钥
- 运行命令:
<skill-path>/scripts/omnisocials.js setup - 或设置环境变量:
export OMNISOCIALS_API_KEY=omsk_live_your_key
-
系统要求:Node.js 18+(用于内置的fetch API),无需其他依赖。
配置优先级(从高到低):
- 环境变量
OMNISOCIALS_API_KEY - (项目本地配置,位于用户工作目录)
./.omnisocials/config.json - (用户全局配置)
~/.config/omnisocials/config.json
Handling "API key not found" errors
处理“API密钥未找到”错误
CRITICAL: When you receive an "API key not found" error from the CLI:
- Tell the user to run the setup command. The setup is interactive and requires user input, so you cannot run it on their behalf.
- Stop and wait. Do not continue with the task. Wait for the user to complete setup and confirm before proceeding.
Note: All script paths in this document are relative to the skill directory where this SKILL.md file is located. Resolve them accordingly based on where the skill is installed.
重要提示:当CLI返回“API密钥未找到”错误时:
- 告知用户运行配置命令。配置过程为交互式,需要用户输入信息,因此你无法代用户执行。
- 暂停操作并等待。不要继续任务,等待用户完成配置并确认后再推进。
注意:本文档中的所有脚本路径均相对于本SKILL.md文件所在的技能目录。请根据技能的安装位置相应解析路径。
Safety Rules
安全规则
IMPORTANT: Follow these rules at all times.
- NEVER publish a post without explicit user confirmation. Creating a draft is safe; publishing is irreversible and goes public instantly.
- NEVER delete posts, media, or webhooks without explicit user confirmation.
- Always list accounts first before creating posts, to get valid channel IDs. Do not guess channel IDs.
- Always verify media requirements before creating posts:
- Stories: ALWAYS require an image or video
- Reels: ALWAYS require a video
- Instagram posts: ALWAYS require at least one image or video
- TikTok posts: ALWAYS require at least one image or video
- Pinterest posts: ALWAYS require an image AND a
--pinterest-board-id - Other platforms (LinkedIn, X, Facebook posts, Bluesky, Threads, Mastodon): Media is optional
- Pinterest board — auto-default to first: If the user wants to post to Pinterest but hasn't specified a board, do NOT block on asking and do NOT skip Pinterest. Run — its output lists each board's name and ID. Use the FIRST board automatically. After the post is created, mention to the user which board was used (e.g. "Posted to your 'Marketing' board on Pinterest — let me know if you'd prefer a different one and I'll move it."). If the user named a specific board in the request, match it case-insensitively against the list and use that one instead.
accounts:get <pinterest_account_id>
- No duplicate content across posts unless explicitly requested.
- Always confirm timezone/datetime with the user when scheduling posts.
- For bulk operations, process one at a time and confirm between actions.
重要提示:请始终遵守以下规则。
- 未经用户明确确认,绝不要发布帖子。创建草稿是安全的;发布操作不可逆且会立即公开。
- 未经用户明确确认,绝不要删除帖子、媒体或Webhook。
- 创建帖子前始终先列出账户,以获取有效的频道ID,不要猜测频道ID。
- 创建帖子前始终验证媒体要求:
- Stories:必须包含图片或视频
- Reels:必须包含视频
- Instagram帖子:必须至少包含一张图片或一个视频
- TikTok帖子:必须至少包含一张图片或一个视频
- Pinterest帖子:必须包含图片以及参数
--pinterest-board-id - 其他平台(LinkedIn、X、Facebook帖子、Bluesky、Threads、Mastodon):媒体为可选
- Pinterest板块——自动默认第一个:如果用户想要发布到Pinterest但未指定板块,不要要求用户提供也不要跳过Pinterest。运行命令——其输出会列出每个板块的名称和ID。自动使用第一个板块。帖子创建完成后,告知用户使用了哪个板块(例如:“已发布到你Pinterest上的‘营销’板块——如果你想更换其他板块,请告诉我,我会帮你移动。”)。如果用户在请求中指定了具体板块名称,不区分大小写匹配列表并使用对应的板块。
accounts:get <pinterest_account_id>
- 除非用户明确要求,否则不要在多个帖子中重复相同内容。
- 排期帖子时始终与用户确认时区/日期时间。
- 对于批量操作,逐个处理并在操作之间确认。
Common Actions
常见操作
| User says... | Action |
|---|---|
| "Post this to Instagram" | |
| "Schedule a post for tomorrow" | |
| "Show my scheduled posts" | |
| "Upload this image" | |
| "Create a reel for TikTok" | |
| "Post to all platforms" | |
| "How are my posts doing?" | |
| "Delete that post" | Confirm with user, then |
| "Publish my draft" | Confirm with user, then |
| "Set up a webhook" | |
| 用户指令... | 操作 |
|---|---|
| "把这个发布到Instagram" | 运行 |
| "排一个明天的帖子" | |
| "显示我的排期帖子" | |
| "上传这张图片" | |
| "为TikTok创建一条Reel" | |
| "发布到所有平台" | |
| "我的帖子表现如何?" | |
| "删除那条帖子" | 与用户确认后,执行 |
| "发布我的草稿" | 与用户确认后,执行 |
| "设置一个Webhook" | |
Workflow
工作流程
Follow this workflow when creating posts:
-
List accounts to find available channel IDs:
./scripts/omnisocials.js accounts:list -
Upload media if needed (required for stories, reels, Instagram, TikTok, Pinterest):
./scripts/omnisocials.js media:upload --url "https://example.com/image.jpg"Note the returned.media_id -
Create the post with appropriate channels, media, and platform options:
./scripts/omnisocials.js posts:create --text "..." --channels <id1>,<id2> --media-ids <media_id> -
Schedule or publish as needed:
- Add to schedule
--schedule "2026-04-10T14:00:00Z" - Use to publish immediately
posts:create-and-publish - Or create as draft first, then after confirmation
posts:publish <id>
- Add
创建帖子时请遵循以下流程:
-
列出账户以获取可用的频道ID:
./scripts/omnisocials.js accounts:list -
上传媒体(如果需要,Stories、Reels、Instagram、TikTok、Pinterest要求必须上传):
./scripts/omnisocials.js media:upload --url "https://example.com/image.jpg"记录返回的。media_id -
创建帖子并指定相应的频道、媒体和平台选项:
./scripts/omnisocials.js posts:create --text "..." --channels <id1>,<id2> --media-ids <media_id> -
按需排期或发布:
- 添加参数进行排期
--schedule "2026-04-10T14:00:00Z" - 使用立即发布
posts:create-and-publish - 或先创建草稿,确认后执行发布
posts:publish <id>
- 添加
Commands Reference
命令参考
Setup & Configuration
配置与设置
| Command | Description |
|---|---|
| Interactive setup - prompts for API key, validates, and saves |
| Non-interactive setup to global config |
| Show current config, API key source |
| 命令 | 描述 |
|---|---|
| 交互式配置——提示输入API密钥,验证并保存 |
| 非交互式配置,保存到全局配置 |
| 显示当前配置及API密钥来源 |
Posts
帖子管理
| Command | Description |
|---|---|
| List posts. Flags: |
| Get full post details |
| Create a new post. Flags: |
| Create and publish immediately. Same flags as |
| Update a draft or scheduled post. Flags: |
| Publish a draft/scheduled post now |
| Delete a post (cannot be undone) |
| 命令 | 描述 |
|---|---|
| 列出帖子。参数: |
| 获取帖子完整详情 |
| 创建新帖子。参数: |
| 创建并立即发布。参数与 |
| 更新草稿或排期帖子。参数: |
| 立即发布草稿/排期帖子 |
| 删除帖子(不可撤销) |
Media
媒体管理
| Command | Description |
|---|---|
| List uploaded media files. Flags: |
| Upload media from URL (max 50MB). Flags: |
| Delete a media file |
| 命令 | 描述 |
|---|---|
| 列出已上传的媒体文件。参数: |
| 从URL上传媒体(最大50MB)。参数: |
| 删除媒体文件 |
Accounts
账户管理
| Command | Description |
|---|---|
| List all connected social media accounts with channel IDs, platforms, content types, and Pinterest boards |
| Get full account details including platform-specific info |
| 命令 | 描述 |
|---|---|
| 列出所有已连接的社交媒体账户,包含频道ID、平台、内容类型和Pinterest板块 |
| 获取账户完整详情,包括平台专属信息 |
Analytics
数据分析
| Command | Description |
|---|---|
| Get post analytics: impressions, engagements, likes, comments, shares, per-platform stats |
| Workspace analytics overview. Flags: |
| Account-level analytics (followers, subscribers). Flags: |
| 命令 | 描述 |
|---|---|
| 获取帖子分析数据:曝光量、互动量、点赞数、评论数、分享数以及各平台统计数据 |
| 工作区数据分析概览。参数: |
| 账户级分析数据(粉丝数、订阅数)。参数: |
Webhooks
Webhook管理
| Command | Description |
|---|---|
| List all webhooks |
| Create a webhook. Flags: |
| Get webhook details |
| Update webhook. Flags: |
| Delete a webhook |
| Rotate webhook signing secret (save the new secret immediately) |
| 命令 | 描述 |
|---|---|
| 列出所有Webhook |
| 创建Webhook。参数: |
| 获取Webhook详情 |
| 更新Webhook。参数: |
| 删除Webhook |
| 轮换Webhook签名密钥(请立即保存新密钥) |
Global Flags
全局参数
All commands support these flags:
| Flag | Description |
|---|---|
| Output raw JSON response (useful for parsing) |
| Override API key for this command |
| Override API base URL |
| Show help |
所有命令均支持以下参数:
| 参数 | 描述 |
|---|---|
| 输出原始JSON响应(便于解析) |
| 覆盖本次命令使用的API密钥 |
| 覆盖API基础URL |
| 显示帮助信息 |
Platform-Specific Reference
平台专属参考
Content Type Support Matrix
内容类型支持矩阵
| Platform | Post | Story | Reel | Media Required |
|---|---|---|---|---|
| Yes | Yes | Yes | Always (image or video) | |
| Yes | Yes | Yes | Optional for posts, required for stories/reels | |
| Yes | No | No | Optional | |
| YouTube | No | No | Yes (Shorts) | Always (video) |
| TikTok | Yes | No | Yes | Always (image or video) |
| X (Twitter) | Yes | No | No | Optional |
| Yes | No | No | Always (image + board_id) | |
| Bluesky | Yes | No | No | Optional |
| Threads | Yes | No | No | Optional |
| Mastodon | Yes | No | No | Optional |
| 平台 | 普通帖子 | Stories | Reels | 是否需要媒体 |
|---|---|---|---|---|
| 是 | 是 | 是 | 必须(图片或视频) | |
| 是 | 是 | 是 | 普通帖子可选,Stories/Reels必须 | |
| 是 | 否 | 否 | 可选 | |
| YouTube | 否 | 否 | 是(Shorts) | 必须(视频) |
| TikTok | 是 | 否 | 是 | 必须(图片或视频) |
| X(Twitter) | 是 | 否 | 否 | 可选 |
| 是 | 否 | 否 | 必须(图片+board_id) | |
| Bluesky | 是 | 否 | 否 | 可选 |
| Threads | 是 | 否 | 否 | 可选 |
| Mastodon | 是 | 否 | 否 | 可选 |
Platform-Specific Flags
平台专属参数
| Flag | Description |
|---|---|
| Required for Pinterest. Get board IDs from |
| Pin title |
| Link URL attached to the pin |
| 参数 | 描述 |
|---|---|
| Pinterest必填。从 |
| Pin标题 |
| Pin附带的链接URL |
YouTube (Shorts)
YouTube(Shorts)
| Flag | Description |
|---|---|
| Video title |
| Privacy: |
| Tags (comma-separated) |
| YouTube category ID |
| Made for kids flag |
| 参数 | 描述 |
|---|---|
| 视频标题 |
| 隐私设置: |
| 标签(逗号分隔) |
| YouTube分类ID |
| 儿童内容标记 |
| Flag | Description |
|---|---|
| Share reel to feed |
| Reel cover image URL |
| Thumbnail type: |
| 参数 | 描述 |
|---|---|
| 将Reels分享到主页 |
| Reels封面图片URL |
| 缩略图类型: |
TikTok
TikTok
| Flag | Description |
|---|---|
| Privacy: |
| Disable comments |
| Disable duets |
| Disable stitches |
| Mark as AI-generated content |
| 参数 | 描述 |
|---|---|
| 隐私设置: |
| 禁用评论 |
| 禁用合拍 |
| 禁用拼接 |
| 标记为AI生成内容 |
X (Twitter)
X(Twitter)
| Flag | Description |
|---|---|
| Who can reply: |
| 参数 | 描述 |
|---|---|
| 可回复人群: |
Per-Platform Media
分平台媒体设置
Media can be the same across all platforms or different per platform:
Same media for all platforms:
./scripts/omnisocials.js posts:create --text "..." --channels <ig>,<li> --media-urls "https://example.com/photo.jpg"Different media per platform (use flag and API directly for per-platform media objects):
The API supports as an object: . The key is the fallback for platforms without their own key. Pass an empty array to opt a platform out of media.
--jsonmedia_urls{ "default": ["url1"], "instagram": ["url2"], "pinterest": ["url3"] }default媒体可在所有平台使用相同内容,也可为不同平台设置不同内容:
所有平台使用相同媒体:
./scripts/omnisocials.js posts:create --text "..." --channels <ig>,<li> --media-urls "https://example.com/photo.jpg"不同平台使用不同媒体(需使用参数并直接调用API,传入分平台媒体对象):
API支持作为对象:。键为未指定专属媒体的平台提供 fallback。传入空数组可让对应平台不使用媒体。
--jsonmedia_urls{ "default": ["url1"], "instagram": ["url2"], "pinterest": ["url3"] }defaultExamples
示例
List connected accounts
列出已连接账户
./scripts/omnisocials.js accounts:list./scripts/omnisocials.js accounts:listCreate a text post to LinkedIn and X
创建文本帖子发布到LinkedIn和X
./scripts/omnisocials.js posts:create --text "Excited to announce our new feature!" --channels <linkedin_id>,<x_id>./scripts/omnisocials.js posts:create --text "Excited to announce our new feature!" --channels <linkedin_id>,<x_id>Create an Instagram reel with cover image
创建带封面图片的Instagram Reel
./scripts/omnisocials.js posts:create --text "Check this out" --channels <instagram_id> --type reel --media-urls "https://example.com/video.mp4" --instagram-share-to-feed --instagram-cover-url "https://example.com/cover.jpg"./scripts/omnisocials.js posts:create --text "Check this out" --channels <instagram_id> --type reel --media-urls "https://example.com/video.mp4" --instagram-share-to-feed --instagram-cover-url "https://example.com/cover.jpg"Schedule a post for next week
排期下周的帖子
./scripts/omnisocials.js posts:create --text "Happy Monday!" --channels <id1>,<id2> --schedule "2026-04-13T09:00:00Z"./scripts/omnisocials.js posts:create --text "Happy Monday!" --channels <id1>,<id2> --schedule "2026-04-13T09:00:00Z"Create a Pinterest pin
创建Pinterest Pin
./scripts/omnisocials.js posts:create --text "Beautiful design inspiration" --channels <pinterest_id> --media-urls "https://example.com/pin.jpg" --pinterest-board-id <board_id> --pinterest-title "Design Inspiration" --pinterest-link "https://example.com"./scripts/omnisocials.js posts:create --text "Beautiful design inspiration" --channels <pinterest_id> --media-urls "https://example.com/pin.jpg" --pinterest-board-id <board_id> --pinterest-title "Design Inspiration" --pinterest-link "https://example.com"Upload media and create a post with it
上传媒体并使用该媒体创建帖子
./scripts/omnisocials.js media:upload --url "https://example.com/photo.jpg"./scripts/omnisocials.js media:upload --url "https://example.com/photo.jpg"Returns: ID: media_abc123
Returns: ID: media_abc123
./scripts/omnisocials.js posts:create --text "New photo!" --channels <id> --media-ids media_abc123
undefined./scripts/omnisocials.js posts:create --text "New photo!" --channels <id> --media-ids media_abc123
undefinedCreate a YouTube Short
创建YouTube Short
./scripts/omnisocials.js posts:create --text "Quick tip" --channels <youtube_id> --type reel --media-urls "https://example.com/short.mp4" --youtube-title "Quick Tip #1" --youtube-privacy public --youtube-tags "tips,tutorial"./scripts/omnisocials.js posts:create --text "Quick tip" --channels <youtube_id> --type reel --media-urls "https://example.com/short.mp4" --youtube-title "Quick Tip #1" --youtube-privacy public --youtube-tags "tips,tutorial"Create a TikTok video
创建TikTok视频
./scripts/omnisocials.js posts:create --text "Watch this" --channels <tiktok_id> --type reel --media-urls "https://example.com/video.mp4" --tiktok-privacy PUBLIC_TO_EVERYONE./scripts/omnisocials.js posts:create --text "Watch this" --channels <tiktok_id> --type reel --media-urls "https://example.com/video.mp4" --tiktok-privacy PUBLIC_TO_EVERYONEView scheduled posts as JSON
以JSON格式查看排期帖子
./scripts/omnisocials.js posts:list --status scheduled --json./scripts/omnisocials.js posts:list --status scheduled --jsonGet analytics for the last 30 days
获取过去30天的分析数据
./scripts/omnisocials.js analytics:overview --period 30d./scripts/omnisocials.js analytics:overview --period 30dGet analytics for a specific date range
获取特定日期范围的分析数据
./scripts/omnisocials.js analytics:overview --start-date 2026-03-01 --end-date 2026-03-31./scripts/omnisocials.js analytics:overview --start-date 2026-03-01 --end-date 2026-03-31Create a webhook for post notifications
创建帖子通知Webhook
./scripts/omnisocials.js webhooks:create --url "https://yoursite.com/webhook" --events post.published,post.failed./scripts/omnisocials.js webhooks:create --url "https://yoursite.com/webhook" --events post.published,post.failedSetup (interactive)
交互式配置
./scripts/omnisocials.js setup./scripts/omnisocials.js setupSetup (non-interactive)
非交互式配置
./scripts/omnisocials.js setup --api-key omsk_live_xxx --global./scripts/omnisocials.js setup --api-key omsk_live_xxx --globalError Handling
错误处理
Common Errors
常见错误
| Error | Cause | Fix |
|---|---|---|
| No API key configured | Run |
| Invalid or expired API key | Check key at Settings > API |
| API key missing required scope | Create a new key with needed scopes |
| Too many requests (100/min limit) | Wait and retry after the reset time |
| Missing required fields or invalid data | Check required media/fields for the platform |
| Resource doesn't exist | Verify the ID is correct |
| 错误 | 原因 | 解决方法 |
|---|---|---|
| 未配置API密钥 | 运行 |
| API密钥无效或已过期 | 在设置>API页面检查密钥 |
| API密钥缺少必要权限 | 创建包含所需权限的新密钥 |
| 请求过多(每分钟100次限制) | 等待重置时间后重试 |
| 缺少必填字段或数据无效 | 检查对应平台的必填媒体/字段 |
| 资源不存在 | 验证ID是否正确 |
Rate Limits
请求限制
The API allows 100 requests per minute per API key. Response headers include:
- : Max requests per window
X-RateLimit-Limit - : Remaining requests
X-RateLimit-Remaining - : Unix timestamp when the window resets
X-RateLimit-Reset
API允许每个API密钥每分钟最多100次请求。响应头包含:
- : 窗口内最大请求数
X-RateLimit-Limit - : 剩余请求数
X-RateLimit-Remaining - : 窗口重置的Unix时间戳
X-RateLimit-Reset
Tips
小贴士
- Always start with to discover channel IDs and platform capabilities
accounts:list - Use when you need to parse the output programmatically
--json - Check content types: Use to see what content types each account supports (post, story, reel)
accounts:list - Pinterest boards: Run to see available boards and their IDs
accounts:get <pinterest_id> - Scheduling: Use ISO 8601 format for dates (e.g., )
2026-04-10T14:00:00Z - Media upload: Supports JPEG, PNG, GIF, WebP images and MP4, MOV, AVI videos (max 50MB)
- Draft first: When unsure, create as draft (no ), review, then publish with
--scheduleposts:publish
- 始终从开始,以获取频道ID和平台功能信息
accounts:list - 使用参数,当你需要以编程方式解析输出时
--json - 检查内容类型:使用查看每个账户支持的内容类型(帖子、Stories、Reels)
accounts:list - Pinterest板块:运行查看可用板块及其ID
accounts:get <pinterest_id> - 排期设置:使用ISO 8601格式的日期(例如:)
2026-04-10T14:00:00Z - 媒体上传:支持JPEG、PNG、GIF、WebP图片和MP4、MOV、AVI视频(最大50MB)
- 先创建草稿:不确定时,先创建草稿(不添加参数),查看后再用
--schedule发布posts:publish