Boring Social Publisher
Publish content to multiple social media platforms with a single message. Powered by Boring — a unified social media publishing API.
Security & Data Handling
- - MCP link is a credential: Your MCP Server URL (
https://boring.aiagent-me.com/mcp/t/xxxxx...) contains an embedded authentication token. Treat it like a password — do not share it publicly. - Token scope: The embedded token grants publish access to your connected social media accounts. It can create posts, upload media, and manage scheduled posts on the platforms you have connected. It cannot access your social media passwords or modify account settings.
- Token storage: The token is stored server-side in Boring's database (MongoDB on DigitalOcean). It is never written to your local filesystem. You can regenerate or revoke it anytime at boring.aiagent-me.com/settings.
- Data flow: Analytics queries are sent from Boring's server (Google Cloud, us-central1) to the platform's API on your behalf. Only performance metrics are retrieved — no content is uploaded or modified.
- No local credentials: No local API keys, environment variables, or secrets are needed. All auth is embedded in the MCP link.
- Third-party service: This skill relies on Boring, an open-source social media management tool. Source code: github.com/snoopyrain.
Prerequisites
- 1. Sign up at boring.aiagent-me.com with Google
- Connect your social accounts — link Facebook Pages, Instagram Business, Threads, YouTube, TikTok, or X accounts via OAuth
- Get your MCP link: Go to Settings → copy your MCP Server URL (contains your auth token — treat it like a password)
- Add to Claude: Paste the MCP link into Claude settings as a Connector — no install, no API key needed
Workflow
When the user wants to publish content across platforms, follow these steps:
Step 1: Get Available Accounts
Call boring_list_accounts to see which platforms the user has connected. Show them a summary:
- - Account name and platform
- Connection status
Step 2: Confirm Content and Platforms
Ask the user:
- - What content to post (text, images, videos)
- Which platforms to target (or "all")
- Whether to publish now or schedule for later
Step 3: Prepare Media (if needed)
If the user provides local files or URLs:
- - Local files: Use
boring_upload_file with file_path to upload and get a public URL - External URLs: Use
boring_upload_from_url to re-host the media on Boring's cloud storage - Google Drive links: Pass directly — Boring handles Google Drive URLs automatically
Step 4: Adapt Content Per Platform
Automatically adjust content for each platform's requirements:
| Platform | Text Limit | Media Required | Notes |
|---|
| Facebook | No strict limit | No | Supports text, photo, album (2-10), video |
| Instagram |
2,200 chars |
Yes | Photo, carousel (2-10), Reels (video 9:16) |
| Threads | 500 chars | No | Text, photo, carousel (2-20), video |
| YouTube | Title: 100, Desc: 5,000 |
Yes (video) | Text format:
Title\n\nDescription |
| TikTok | 2,200 chars |
Yes (video or photos) | Video or photo carousel (up to 35) |
| X | 280 chars | No | Text, up to 4 images or 1 video |
Important adaptations:
- - Truncate text to fit platform limits
- Skip Instagram if no media is available (media is mandatory)
- For YouTube: format text as INLINECODE6
- For Threads: split long content into a thread if over 500 chars using INLINECODE7
Step 5: Publish
For each selected platform, call boring_publish_post with:
- -
account_id: from the account list - INLINECODE10 : the platform name
- INLINECODE11 : adapted content
- INLINECODE12 : array of media URLs (if any)
- INLINECODE13 : ISO 8601 datetime if scheduling (e.g.,
2025-12-25T10:00:00Z)
Step 6: Report Results
After publishing, summarize:
- - Which platforms succeeded with post IDs
- Which platforms failed and why
- If scheduled, show the scheduled time and post IDs
Scheduling
To schedule posts for later:
- - Add
scheduled_at parameter with ISO 8601 format: INLINECODE16 - Use
boring_list_scheduled_posts to view queued posts - Use
boring_cancel_scheduled_post to cancel before publish time
Error Handling
| Error | Solution |
|---|
| INLINECODE19 | MCP link may be invalid — regenerate it at boring.aiagent-me.com Settings |
| INLINECODE20 |
Ask user to reconnect the account at boring.aiagent-me.com |
|
MediaRequired | Instagram/TikTok require media — skip or ask user for an image |
|
TextTooLong | Truncate or split content for the platform |
|
RateLimitExceeded | Wait and retry (check
retry_after field) |
|
AccountDisabled | Account was disconnected — reconnect at dashboard |
Example Usage
User: "Post 'Just launched our new product!' with this image to all my accounts"
Agent workflow:
- 1.
boring_list_accounts → finds Facebook, Instagram, Threads accounts - INLINECODE27 (if image is a URL) → gets hosted URL
- INLINECODE28 to Facebook with text + image
- INLINECODE29 to Instagram with text + image
- INLINECODE30 to Threads with text + image
- Report: "Published to 3 platforms successfully"
Documentation
Full API docs: boring-doc.aiagent-me.com
Boring Social Publisher
通过单条消息将内容发布到多个社交媒体平台。由 Boring 提供支持——一个统一的社交媒体发布 API。
安全与数据处理
- - MCP 链接即凭证:您的 MCP 服务器 URL(https://boring.aiagent-me.com/mcp/t/xxxxx...)包含嵌入式身份验证令牌。请将其视为密码——不要公开分享。
- 令牌范围:嵌入式令牌授予对您已连接社交媒体账户的发布权限。它可以在您已连接的平台上创建帖子、上传媒体和管理定时帖子。它无法访问您的社交媒体密码或修改账户设置。
- 令牌存储:令牌存储在 Boring 的数据库(DigitalOcean 上的 MongoDB)中。它永远不会写入您的本地文件系统。您可以随时在 boring.aiagent-me.com/settings 重新生成或撤销它。
- 数据流:分析查询从 Boring 的服务器(Google Cloud,us-central1)代表您发送到平台的 API。仅检索性能指标——不会上传或修改任何内容。
- 无本地凭证:无需本地 API 密钥、环境变量或机密信息。所有身份验证都嵌入在 MCP 链接中。
- 第三方服务:此技能依赖于 Boring,一个开源社交媒体管理工具。源代码:github.com/snoopyrain。
前提条件
- 1. 在 boring.aiagent-me.com 使用 Google 注册
- 连接您的社交媒体账户——通过 OAuth 关联 Facebook 主页、Instagram 商业账户、Threads、YouTube、TikTok 或 X 账户
- 获取您的 MCP 链接:前往设置 → 复制您的 MCP 服务器 URL(包含您的身份验证令牌——请将其视为密码)
- 添加到 Claude:将 MCP 链接作为连接器粘贴到 Claude 设置中——无需安装,无需 API 密钥
工作流程
当用户想要跨平台发布内容时,请遵循以下步骤:
第 1 步:获取可用账户
调用 boringlistaccounts 查看用户已连接了哪些平台。向用户展示摘要:
第 2 步:确认内容和平台
询问用户:
- - 要发布什么内容(文本、图片、视频)
- 目标平台(或全部)
- 立即发布还是稍后定时发布
第 3 步:准备媒体(如果需要)
如果用户提供本地文件或 URL:
- - 本地文件:使用 boringuploadfile 配合 filepath 上传并获取公共 URL
- 外部 URL:使用 boringuploadfromurl 将媒体重新托管到 Boring 的云存储
- Google Drive 链接:直接传递——Boring 会自动处理 Google Drive URL
第 4 步:按平台调整内容
自动为每个平台的要求调整内容:
| 平台 | 文本限制 | 是否需要媒体 | 备注 |
|---|
| Facebook | 无严格限制 | 否 | 支持文本、照片、相册(2-10张)、视频 |
| Instagram |
2,200 字符 |
是 | 照片、轮播(2-10张)、Reels(9:16视频) |
| Threads | 500 字符 | 否 | 文本、照片、轮播(2-20张)、视频 |
| YouTube | 标题:100,描述:5,000 |
是(视频) | 文本格式:标题\n\n描述 |
| TikTok | 2,200 字符 |
是(视频或照片) | 视频或照片轮播(最多35张) |
| X | 280 字符 | 否 | 文本,最多4张图片或1个视频 |
重要调整:
- - 截断文本以适应平台限制
- 如果没有媒体则跳过 Instagram(媒体是必需的)
- 对于 YouTube:将文本格式化为 视频标题\n\n描述文本
- 对于 Threads:如果内容超过500字符,使用 boringpublishthread 拆分成串文
第 5 步:发布
对于每个选定的平台,调用 boringpublishpost,参数包括:
- - accountid:来自账户列表
- platform:平台名称
- text:调整后的内容
- mediaurls:媒体 URL 数组(如果有)
- scheduled_at:如果定时发布,使用 ISO 8601 日期时间(例如 2025-12-25T10:00:00Z)
第 6 步:报告结果
发布后,总结:
- - 哪些平台成功发布,附带帖子 ID
- 哪些平台失败及原因
- 如果定时发布,显示定时时间和帖子 ID
定时发布
要定时稍后发布帖子:
- - 添加 scheduledat 参数,使用 ISO 8601 格式:2025-12-25T10:00:00Z
- 使用 boringlistscheduledposts 查看已排队的帖子
- 使用 boringcancelscheduled_post 在发布时间前取消
错误处理
| 错误 | 解决方案 |
|---|
| InvalidApiKey | MCP 链接可能无效——在 boring.aiagent-me.com 设置中重新生成 |
| TokenExpired |
要求用户在 boring.aiagent-me.com 重新连接账户 |
| MediaRequired | Instagram/TikTok 需要媒体——跳过或要求用户提供图片 |
| TextTooLong | 为平台截断或拆分内容 |
| RateLimitExceeded | 等待并重试(检查 retry_after 字段) |
| AccountDisabled | 账户已断开连接——在仪表板重新连接 |
使用示例
用户:将我们刚刚发布了新产品!连同这张图片发布到我所有账户
代理工作流程:
- 1. boringlistaccounts → 找到 Facebook、Instagram、Threads 账户
- boringuploadfromurl(如果图片是 URL)→ 获取托管 URL
- boringpublishpost 到 Facebook,附带文本 + 图片
- boringpublishpost 到 Instagram,附带文本 + 图片
- boringpublish_post 到 Threads,附带文本 + 图片
- 报告:已成功发布到 3 个平台
文档
完整 API 文档:boring-doc.aiagent-me.com