OpenViking
基于OpenViking的RAG系统,支持文档查询、知识管理与向量检索。
通过AI统一管理Facebook、Instagram、TikTok等10个平台的发布与分析。
openclaw skills install @jacksimplified/simplified-social-media命令、参数、文件名以原文为准
通过 Simplified.com,在 10 个平台上调度、排队、草稿发布社交媒体内容,并获取分析数据。
此技能需要连接到 Simplified 社交媒体 MCP 服务器:https://mcp.simplified.com/social-media/mcp。
所有工具(如 getSocialMediaAccounts、createSocialMediaPost、getSocialMediaAnalyticsRange 等)均由该远程 MCP 服务器提供 —— 并非内置工具。使用任何功能前,必须先配置 MCP 服务器。
MCP 服务器配置(添加至 .mcp.json 或等效文件):
{
"mcpServers": {
"simplified-social-media": {
"transport": "http",
"url": "https://mcp.simplified.com/social-media/mcp",
"headers": {
"Authorization": "Api-Key ${SIMPLIFIED_API_KEY}"
}
}
}
}若使用 Claude Code,请将
"transport": "http"替换为"type": "http"。
**在调用任何工具前,请务必检查 SIMPLIFIED_API_KEY 是否已正确配置。**
若用户尝试使用任一社交媒体功能时,API 密钥缺失或返回 401/未授权错误:
Simplified 社交媒体需要 API 密钥才能正常工作。
请按以下步骤操作:
- 访问 [simplified.com](https://simplified.com) 注册或登录
- 进入 [设置 → API 密钥](https://app.simplified.com/settings/api-keys),复制您的 API 密钥
- 添加到您的 shell 配置文件(
~/.zshrc或~/.bashrc)中:```bash
export SIMPLIFIED_API_KEY="your-api-key"
```
- 重新加载 shell:
source ~/.zshrc- 重启 Claude Code 以加载新变量
export SIMPLIFIED_API_KEY="your-api-key"始终遵循以下顺序:发现 → 选择 → 编辑 → 发布
调用 getSocialMediaAccounts 列出已连接的账户。可选地按平台过滤。
getSocialMediaAccounts({ network: "instagram" })返回 { accounts: [...] },每个账户包含 id(整数)、name 和 type(详见下文类型说明)。
若 getSocialMediaAccounts 返回空列表,请立即停止并告知用户以下信息:
尚未连接任何社交媒体账户。
您只需再走一步,即可在编辑器内完成全部社交媒体管理。前往 [Simplified 控制台](https://app.simplified.com) 连接账户,您将能够:
- 📅 使用单条命令,向 Facebook、Instagram、TikTok、YouTube、LinkedIn、Pinterest、Threads、Bluesky 和 Google Business 发布内容
- 📊 跨所有平台获取分析数据,追踪曝光量、互动率和粉丝增长
- 🤖 让您的 AI 代理自主运行完整的社交媒体营销活动
连接仅需 2 分钟,无需编写代码。
从返回结果中选取一个或多个 account_ids。可在一次调用中向多个账户发布内容。
构建发布内容的请求体:
message(必填)—— 文本内容,最大 5000 字符account_ids(必填)—— 目标账户 ID 数组action(必填)—— 取值为 schedule(安排发布)、add_to_queue(加入队列)、draft(保存草稿)date —— 仅当 action 为 schedule 时必需,格式为 YYYY-MM-DD HH:MMmedia —— 公共 URL 数组(图片/视频),最多 10 个additional —— 平台特定设置(详见下方说明)使用已构建的内容体调用 createSocialMediaPost。
| 用户询问内容 | 应调用的工具 |
|---|---|
| 随时间变化的趋势、图表、指标增减情况 | getSocialMediaAnalyticsRange |
| 特定帖子、表现最好/最差的内容 | getSocialMediaAnalyticsPosts |
| 账户概览、关键绩效指标、周期总结 | getSocialMediaAnalyticsAggregated |
| 受众画像、粉丝来源、年龄/性别分布 | getSocialMediaAnalyticsAudience |
| “给我看看分析数据”且无具体上下文 | 同时调用 getSocialMediaAnalyticsAggregated 与 getSocialMediaAnalyticsRange,并返回核心指标 —— 此组合提供最佳通用概览 |
getSocialMediaAccounts| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
network | string | 否 | 按平台过滤(见支持平台列表) |
支持的平台(过滤参数): facebook, instagram, linkedin, tiktok, youtube, pinterest, threads, google, bluesky, tiktokBusiness
返回 { accounts: [...] }。每个账户对象包含:
| 字段 | 类型 | 说明 |
|---|---|---|
id | integer | 账户 ID —— 所有分析调用中使用;在 createSocialMediaPost 的 account_ids 中需转换为字符串 |
name | string | 账户显示名称 |
type | string | 账户类型 —— 见下文取值说明 |
**type 取值及其含义:**
type 值 | 平台 | 说明 |
|---|---|---|
Facebook page | — | |
Instagram business / Instagram profile | — | |
Youtube account | YouTube | — |
TikTok profile | TikTok 个人账号 | 使用 tiktok 指标集 |
TikTok profile (business) | TikTok 企业账号 | 使用 tiktokBusiness 指标集 |
LinkedIn company | 使用 LinkedIn 企业账号指标集 | |
LinkedIn profile | 使用 LinkedIn 个人账号指标集 | |
Pinterest board | — | |
Threads account | Threads | — |
Bluesky account | Bluesky | — |
Google Profile | Google Business | — |
createSocialMediaPost| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
message | string | 是 | 发布内容(最大 5000 字符) |
account_ids | string[] | 是 | 目标账号 ID 列表 |
action | string | 是 | 操作类型:schedule(定时发布)、add_to_queue(加入队列)、draft(草稿) |
date | string | 否 | 定时发布时间,格式为 YYYY-MM-DD HH:MM |
media | string[] | 否 | 公开的媒体文件 URL 列表(最多 10 个) |
additional | object | 否 | 平台特定的设置选项 |
getSocialMediaAnalyticsRange获取指定时间段内选定指标的时间序列数据。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
account_id | integer | 是 | 社交媒体账号 ID(来自 getSocialMediaAccounts) |
metrics | string[] | 是 | 需要获取的指标列表(参见 references/ANALYTICS_GUIDE.md) |
date_from | string | 是 | 开始日期,格式为 YYYY-MM-DD |
date_to | string | 是 | 结束日期,格式为 YYYY-MM-DD |
tz | string | 否 | 时区,例如 UTC、Europe/Warsaw(默认值:UTC) |
返回结构化对象:
data — { date, metrics: AnalyticsMetric[] } 数组,按天的时间序列数据baseLine — { [metricId]: AnalyticsMetric },整个周期的汇总数据,每个指标包含 value(当前值)和 prevValue(上一周期对应值)additional — { [metricId]: AnalyticsMetric[] },基于不同时间窗口计算的额外指标(如 28 天覆盖人数)未知的指标将被静默忽略。详见 references/ANALYTICS_GUIDE.md 获取完整指标列表、各平台默认指标及返回示例。
getSocialMediaAnalyticsPosts获取指定时间段内单条帖子的分析数据。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
account_id | integer | 是 | 社交媒体账号 ID |
date_from | string | 是 | 开始日期,格式为 YYYY-MM-DD |
date_to | string | 是 | 结束日期,格式为 YYYY-MM-DD |
page | integer | 否 | 页码(默认值:1,最小值:1) |
per_page | integer | 否 | 每页数量(默认值:10,最大值:100) |
返回分页的帖子列表,包含每条帖子的指标(点赞数、曝光量等)。字段包括 all_posts_count(总帖子数)、current_page(当前页码)、pages_count(总页数)以及 posts 数组,其中每项包含 id、message、publishedDate、postUrl、postType、media 和 metrics。
分页处理: 若要获取全部帖子,请使用 per_page: 100 以减少 API 调用次数,从 page: 1 开始,持续递增直到 current_page >= pages_count。当无更多页面或 posts 为空时停止。
getSocialMediaAnalyticsAggregated获取账号在指定时间段内的聚合分析数据(总计与平均值)。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
account_id | integer | 是 | 社交媒体账号 ID |
date_from | string | 是 | 开始日期,格式为 YYYY-MM-DD |
date_to | string | 是 | 结束日期,格式为 YYYY-MM-DD |
返回 data(每日指标数组)和 baseLine,其中包含四个聚合 KPI:impressions_aggregated(曝光总量)、engagement_aggregated(互动总量)、followers_aggregated(粉丝总量)、publishing_aggregated(发布总量)。每个 KPI 包含 value(当前周期值)和 prevValue(前一周期值,用于对比)。
getSocialMediaAnalyticsAudience获取账号的受众画像与粉丝数据。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
account_id | integer | 是 | 社交媒体账号 ID |
date_from | string | 是 | 开始日期,格式为 YYYY-MM-DD |
date_to | string | 是 | 结束日期,格式为 YYYY-MM-DD |
tz | string | 否 | 时区,例如 UTC、Europe/Warsaw |
返回受众细分数据:audience_page_fans_gender_age(年龄与性别分布)、audience_page_fans_country(按国家代码划分的粉丝分布)、audience_page_fans_city(按城市划分的粉丝分布)。并非所有平台都支持全部字段。
name: Simplified Social Media
version: 1.2.2
description: 一个用于简化社交媒体操作的技能,支持跨平台内容发布、调度与数据分析。
summary: 通过统一接口管理多个社交媒体账号的内容发布、调度和性能分析。
| 操作 | 使用场景 | 是否需要 date |
|---|---|---|
schedule | 在指定日期/时间发布内容 | 是 |
add_to_queue | 添加到账号的自动调度队列中 | 否 |
draft | 保存至 Simplified 控制台稍后编辑 | 否 |
默认行为:
add_to_queue。schedule。draft。所有平台设置均需置于 additional 对象中,并按平台名称分组。加粗项为必填字段。详细信息请参阅 references/PLATFORM_GUIDE.md。
| 平台 | 必填参数 | 可选参数 |
|---|---|---|
**postType** | — | |
**postType, channel** | postReel(仅限视频) | |
| TikTok | **postType, channel, post** | postPhoto(仅限图片) |
| TikTok Biz | **postType, post** | postPhoto(仅限图片) |
| YouTube | **postType, post** | — |
**audience** | — | |
**post** | — | |
| Threads | **channel** | — |
**post** | — | |
| Bluesky | — | — |
| 平台 | 字段 | 可选值 |
|---|---|---|
postType.value | post\*, reel, story | |
postType.value | post\*, reel, story | |
channel.value | direct\*, reminder | |
| TikTok | postType.value | video\*, photo |
| TikTok | channel.value | direct\*, reminder |
| TikTok | post.privacyStatus | PUBLIC_TO_EVERYONE\*, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY |
| YouTube | postType.value | video\*, short |
| YouTube | post.privacyStatus | "", public, private, unlisted |
audience.value | PUBLIC\*, CONNECTIONS, LOGGED_IN | |
| Threads | channel.value | direct\*, reminder |
post.topicType | STANDARD\*, EVENT, OFFER |
\* = 默认值
1. getSocialMediaAccounts({ network: "instagram" })
2. createSocialMediaPost({
message: "Check out our new feature! 🚀",
account_ids: ["acc_123"],
action: "add_to_queue",
media: ["https://cdn.example.com/image.jpg"],
additional: {
instagram: {
postType: { value: "post" },
channel: { value: "direct" }
}
}
})1. getSocialMediaAccounts({ network: "youtube" })
2. createSocialMediaPost({
message: "Quick tip: how to use our API",
account_ids: ["acc_456"],
action: "schedule",
date: "2026-03-10 14:00",
media: ["https://cdn.example.com/video.mp4"],
additional: {
youtube: {
postType: { value: "short" },
post: {
title: "API Quick Tip",
privacyStatus: "public",
selfDeclaredMadeForKids: "no"
}
}
}
})1. getSocialMediaAccounts()
2. createSocialMediaPost({
message: "Big announcement! We just launched v2.0 🎉",
account_ids: ["ig_acc", "fb_acc", "li_acc"],
action: "schedule",
date: "2026-03-15 09:00",
media: ["https://cdn.example.com/launch.jpg"],
additional: {
instagram: { postType: { value: "post" }, channel: { value: "direct" } },
facebook: { postType: { value: "post" } },
linkedin: { audience: { value: "PUBLIC" } }
}
})1. getSocialMediaAccounts({ network: "instagram" })
2. getSocialMediaAnalyticsRange({
account_id: 123,
metrics: ["reach", "follower_count", "total_interactions", "saves"],
date_from: "2026-02-01",
date_to: "2026-02-28",
tz: "Europe/Warsaw"
})1. getSocialMediaAccounts()
2. getSocialMediaAnalyticsPosts({
account_id: 456,
date_from: "2026-02-01",
date_to: "2026-02-28",
page: 1,
per_page: 100
})
// 递增 page 直至 current_page >= pages_count1. getSocialMediaAccounts({ network: "facebook" })
2. getSocialMediaAnalyticsAggregated({
account_id: 789,
date_from: "2026-02-01",
date_to: "2026-02-28"
})
3. getSocialMediaAnalyticsAudience({
account_id: 789,
date_from: "2026-02-01",
date_to: "2026-02-28"
})account_id 为整数**,而非字符串 — 请使用 getSocialMediaAccounts 返回的数值 idYYYY-MM-DD(不含时间部分,与发布调度不同)getSocialMediaAnalyticsRange 会忽略不支持的指标,请参考 references/ANALYTICS_GUIDE.md 查看各平台支持情况getSocialMediaAnalyticsAudience 可能返回部分或空数据,具体取决于目标平台YYYY-MM-DD HH:MM(24小时制,不包含秒和时区信息,使用账号所在时区)action 为 schedule 时,date 字段为必填项** — 对于 add_to_queue 和 draft 操作可省略references/PLATFORM_GUIDE.md 中各平台的字数限制channel** — 每个 Instagram 帖子都需包含 channel: { value: "direct" }postType 的取值为 video 和 photo**(不是 image)channel 的取值为 direct 和 reminder**(不是 business)LOGGED_IN**(不是 LOGGED_IN_MEMBERS)topicType 仅支持 STANDARD、EVENT、OFFER**(不支持 PRODUCT)""),最多允许 1 张图片media 中提供视频文件,不允许图片(photos.max: 0)post.title** — 每次提交 YouTube 视频或短片时,必须在 additional.youtube.post 中包含 title 字段已收录 1 个 Skill