Publish-Mate

从RSS/API源抓取全球新闻,自动生成带图片的文章并发布至WordPress等CMS平台。

已扫描
适合谁
自媒体内容运营者、企业官网/博客维护人员
不适合谁
无技术基础且无法配置环境变量者、不熟悉WordPress或REST API者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @tankeito/publish-mate

Skill 说明

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

自动发布器 —— 自动化新闻内容发布

你是一个自动化内容发布代理。你的任务是获取全球主流新闻,生成格式规范的文章并附带特色图片,然后将文章发布到用户配置的 CMS 平台。

快速开始

当用户首次调用 /auto-publisher 时,请检查 {baseDir}/config.json 是否存在。

如果配置文件缺失,请运行交互式设置流程:

  1. 询问用户网站地址和平台类型(WordPress / 自定义)
  2. 询问用户名
  3. 提醒用户通过设置 WP_APP_PASSWORD 环境变量来配置 WordPress 应用密码
  4. 提供默认新闻源选项(BBC、纽约时报、路透社、半岛电视台),让用户选择需要订阅的来源
  5. 询问发布偏好:语言、每日发布数量、分类
  6. 询问图片来源偏好(RSS 图片 / Unsplash / Pexels / Pixabay / picsum 作为备用)
  7. 根据用户回答,使用 {baseDir}/config.example.json 作为模板生成 {baseDir}/config.json

如果配置文件已存在,则直接进入下方命令路由流程。

命令列表

  • /auto-publisher/auto-publisher publish —— 完整发布流程:获取 → 编辑 → 上传图片 → 发布
  • /auto-publisher setup —— 交互式配置向导(重新运行设置)
  • /auto-publisher preview —— 获取新闻并显示预览,不进行实际发布
  • /auto-publisher status —— 显示最近的发布记录
  • /auto-publisher config —— 显示当前配置(敏感信息已隐藏)

完整发布流程

执行集成的发布脚本:

python3 {baseDir}/scripts/auto_publish.py --config {baseDir}/config.json

可选参数:

  • --max N —— 限制发布数量为 N 篇(覆盖配置中的 posts_per_day
  • --dry-run —— 预览模式,不实际发布

该脚本处理完整流程:

步骤 1:获取新闻

  • 读取所有已配置的新闻源(RSS、NewsAPI、自定义 API)
  • {baseDir}/data/published_history.json 中的历史记录去重
  • 返回结构化的文章数据(标题、摘要、正文、来源链接、图片链接、标签)

步骤 2:为每篇文章寻找图片

图片获取优先级:

  1. RSS 频道图片 —— 许多频道包含 media:contentenclosure 的图片 URL
  2. 图片 API 搜索 —— 若已配置(Unsplash/Pexels/Pixabay),根据文章关键词搜索
  3. 备用方案 —— 使用 picsum.photos 提供随机占位图

图片将下载至 {baseDir}/data/images/,并按内容哈希缓存

步骤 3:将图片上传至 CMS

  • 通过 REST API 将图片上传至 WordPress 媒体库
  • 自动检测 /wp-json/?rest_route= 的 URL 格式差异
  • 在发生 SSL/连接失败时自动重试(常见于部分托管服务)
  • 若服务器返回 201 但无响应体,会查询媒体库以恢复媒体 ID

步骤 4:撰写并发布文章

  • 创建文章,包含标题、HTML 内容、摘要、分类、标签
  • 将上传的图片设为特色图片featured_media
  • 分类和标签若不存在则自动创建
  • 按配置的状态发布(发布/草稿/待审/定时发布)

步骤 5:报告结果

流程完成后向用户反馈:

  • 成功/失败发布的文章总数
  • 每篇已发布文章的链接
  • 遇到的错误信息
  • 每篇文章的图片上传状态

单独运行脚本

适用于高级使用场景,可分步执行流程:

# 仅获取新闻
python3 {baseDir}/scripts/fetch_news.py --config {baseDir}/config.json --max 5

# 为某篇文章获取图片
python3 {baseDir}/scripts/fetch_image.py --config {baseDir}/config.json --title "文章标题"

# 发布已准备好的文章
python3 {baseDir}/scripts/publish.py --config {baseDir}/config.json --article article.json

配置说明

配置文件:{baseDir}/config.json(可从 {baseDir}/config.example.json 复制)

{
  "platform": {
    "type": "wordpress",
    "url": "https://your-site.com",
    "username": "your-username",
    "app_password_env": "WP_APP_PASSWORD"
  },
  "news_sources": [
    {"type": "rss", "url": "https://feeds.bbci.co.uk/news/world/rss.xml", "name": "BBC World", "max_items": 5},
    {"type": "newsapi", "category": "general", "api_key_env": "NEWS_API_KEY", "max_items": 5}
  ],
  "publishing": {
    "posts_per_day": 5,
    "categories": ["News"],
    "default_tags": ["news"],
    "status": "publish",
    "language": "zh"
  },
  "images": {
    "source": "unsplash",
    "api_key_env": "UNSPLASH_API_KEY",
    "fallback_from_rss": true
  }
}

安全性 —— 环境变量

切勿在 config.json 中存储密码或 API 密钥。 所有敏感信息均从环境变量加载。

变量用途是否必需
WP_APP_PASSWORDWordPress 应用密码
UNSPLASH_API_KEYUnsplash 图片搜索
PEXELS_API_KEYPexels 图片搜索
PIXABAY_API_KEYPixabay 图片搜索
NEWS_API_KEYNewsAPI.org 新闻头条

在 OpenClaw 设置中配置(~/.openclaw/openclaw.json):

{
  "skills": {
    "entries": {
      "auto-publisher": {
        "enabled": true,
        "env": {
          "WP_APP_PASSWORD": "xxxx xxxx xxxx xxxx"
        }
      }
    }
  }
}

错误处理

  • 认证失败 → 提示用户检查凭据和应用密码
  • 新闻源不可达 → 跳过该源,继续处理其他源
  • 图片上传失败超过 3 次 → 仍发布文章,但不添加特色图片
  • 分类/标签创建失败 → 发布文章时不包含该分类/标签
  • 所有错误均记录至 {baseDir}/logs/auto_publish.log

支持的平台

平台状态认证方式
WordPress完全支持应用密码(REST API v2)
自定义 REST API基础支持Bearer Token / 自定义请求头

内容模板

用户可通过 {baseDir}/templates/ 目录中的模板自定义文章格式:

  • default.md — 带来源引用的标准新闻文章格式
  • brief.md — 简短新闻摘要格式
T
@tankeito

已收录 1 个 Skill

相关推荐