Social Media Platform

基于LangGraph的AI内容生成与多平台发布系统,支持飞书等平台集成。

已扫描
适合谁
数字营销人员、内容运营团队
不适合谁
无网络环境用户、无需跨平台发布需求者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @brandonwadepackard-cell/social-media-platform

Skill 说明

命令、参数、文件名以原文为准

社交媒体平台构建器

构建一个完整的社交媒体管理平台,具备插件架构、AI 驱动的内容生成和多平台发布功能。

架构

┌─────────────────────────────────────┐
│         前端(5个页面)              │
│  仪表盘│撰写│日历│分析│设置│
├─────────────────────────────────────┤
│         API 层(FastAPI)            │
│  文章 CRUD│发布│日历│AI│
├─────────────────────────────────────┤
│      插件注册中心(按平台划分)       │
│  Twitter│Instagram│YouTube│Facebook│TikTok│手动模式│
├─────────────────────────────────────┤
│    LangGraph 内容处理流程           │
│  语音输入→调研→草稿→优化→保存│
├─────────────────────────────────────┤
│         Supabase(6张表)           │
└─────────────────────────────────────┘

第一步:Supabase 表结构

创建 6 张数据表:

  • social_posts — id, platform, content, status(草稿/已预约/已发布/失败), media_urls, published_at, post_url, engagement_metrics(JSONB)
  • platform_connections — id, platform, account_name, credentials(JSONB), status, scopes
  • content_calendar — id, post_id(外键), scheduled_for, platform, status
  • brand_voices — id, name, description, tone, example_phrases(JSONB 数组), is_default
  • social_analytics — id, post_id(外键), platform, impressions, clicks, likes, shares, comments, fetched_at
  • publish_queue — id, post_id(外键), platform, status, retry_count, error_message

初始化 3-5 种品牌语调。示例语调:

  • 主语调(默认)—— 权威、清晰、教育性强
  • 轻松语调—— 口语化、友好、使用缩略形式
  • 教练语调—— 鼓励性、直接、强调行动

第二步:插件系统

基类设计模式:

class SocialPlugin:
    platform: str
    def validate_credentials(self, creds: dict) -> bool
    def publish(self, content: str, media_urls: list = None) -> dict
    def get_analytics(self, post_id: str) -> dict
    def format_content(self, content: str, max_length: int) -> str

class PluginRegistry:
    _plugins: dict[str, SocialPlugin] = {}
    def register(self, plugin: SocialPlugin)
    def get(self, platform: str) -> SocialPlugin
    def list_active(self) -> list[str]

各平台具体实现:

  • Twitter:使用 tweepy 或 requests 调用 v2 API。字符限制 280 字。免费版每月支持 100 条发布。
  • Facebook:使用 Graph API v21.0。需页面访问令牌(Page Access Token)。发布至 / {page_id} / feed
  • Instagram:通过 Facebook 页面令牌调用 Graph API。先上传至 / {ig_user_id} / media,再通过 / {ig_user_id} / media_publish 发布。必须包含图片。
  • YouTube:使用 google-auth + google-api-python-client。通过 YouTube.upload 权限进行 OAuth 认证。使用可恢复上传 API 上传视频。
  • TikTok:使用内容发布 API(需应用审核及演示视频)。若不可用,降级为手动模式。
  • 手动模式:无 API 接入。仅生成文案并建议最佳发布时间。适用于所有未连接的平台作为备用方案。

第三步:LangGraph 内容处理流程

六节点流程图:

load_voice → research_context → generate_drafts → optimize_per_platform → finalize → END
  • load_voice:从 Supabase 加载选定的品牌语调
  • research_context:查询知识库 / RAG 获取相关领域内容
  • generate_drafts:LLM 生成 2-3 个符合语调的草稿版本
  • optimize_per_platform:根据不同平台特性调整草稿(长度、标签、媒体建议)
  • finalize:将草稿存入 social_posts 表,状态设为“草稿”

第四步:API 端点

核心路由(约 19 个):

  • GET/POST /api/social/posts — 文章的增删改查
  • POST /api/social/posts/{id}/publish — 向指定平台发布内容
  • GET/POST /api/social/calendar — 日历视图与排期功能
  • GET /api/social/analytics — 聚合数据分析
  • GET/POST /api/social/voices — 品牌语调管理
  • GET/POST /api/social/connections — 平台凭证管理
  • POST /api/social/generate — AI 内容生成(触发 LangGraph 流程)

第五步:前端页面

5 个页面,共享深色主题外壳(侧边栏导航、顶部栏):

  1. 仪表盘 — 按平台统计发文数量,最近活动记录,快速发布入口
  2. 撰写 — 富文本编辑器,支持多平台选择,语调选择器,各平台实时预览卡片
  3. 日历 — 月视图,按平台着色,支持拖拽调整发布时间
  4. 分析 — 使用 Chart.js 绘制趋势线图与柱状图,展示互动数据随时间变化
  5. 设置 — 平台连接表单(含 OAuth 流程)、品牌语调编辑器

关键设计模式

  • JSONB 存储凭证:每种平台的认证信息格式不同(API Key、OAuth Token、页面令牌等),统一存储在 credentials JSONB 字段中
  • 优雅降级:始终保留“手动模式”作为后备方案——即使无 API 访问权限也能生成内容
  • 平台内容限制:强制执行各平台规则(如 Twitter 280 字、Instagram 必须有图片、YouTube 需要视频、Facebook 最大 63K)
  • 带重试机制的发布队列:发布失败的任务进入重试队列,采用指数退避策略
BC
@brandonwadepackard-cell

已收录 1 个 Skill

相关推荐