
Makecontents
- 3 installs
- 357 repo stars
- Updated March 10, 2026
- comeonzhj/autocontents
Drives the local MakeContents app API to pull RSS news, filter and push items, create Xiaohongshu-style content, and archive results to Feishu.
About
Calls the locally running MakeContents API to fetch RSS feeds, select valuable items, generate and render social content, distribute to WeChat and Feishu, and archive for review. A user uses it to run an automated content creation and distribution pipeline.
- Calls local MakeContents API via curl, not web_fetch
- Pulls RSS, filters, renders cards, distributes, and archives
Makecontents by the numbers
- 3 all-time installs (skills.sh)
- Ranked #1,816 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/comeonzhj/autocontents --skill makecontentsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 3 |
|---|---|
| repo stars | ★ 357 |
| Last updated | March 10, 2026 |
| Repository | comeonzhj/autocontents ↗ |
What it does
Drives the local MakeContents app API to pull RSS news, filter and push items, create Xiaohongshu-style content, and archive results to Feishu.
Files
MakeContents Agent 技能
概述
MakeContents 是一个本地运行的 RSS 资讯聚合与内容创作应用。此技能让 Agent 能够自主完成以下工作:
1. 拉取资讯 — 从配置的 RSS/RSSHub 信源获取最新内容 2. 筛选推送 — 根据学习到的规律选择有价值的资讯,直接生成推送内容并分发到微信和飞书知识库 3. 内容创作 — 为选定资讯生成小红书风格的图文内容,自动渲染封面和详情图 4. 内容归档 — 将创作结果保存到飞书多维表,通知人类审核
配置
在开始前确认以下配置(通过应用系统配置页面或 .env 设置):
- MakeContents 服务地址:默认
http://localhost:3710 - 各功能所需的 API Key(飞书、微信)已在应用配置页填写
- 飞书多维表 URL 已配置(用于内容归档,可选)
- 飞书机器人 Webhook 已配置(用于完成通知)
- 小红书 Cookie 已配置 + 发布开关已开启(用于发布笔记,默认关闭,需人类主动开启)
重要提示
- 必须使用 `exec` + `curl` 调用 API,不要使用
web_fetch(后者用于抓取外部网页,无法访问本地服务) - 所有 API 请求需包含 Header:
Content-Type: application/json和Accept: application/json - 执行前建议先检查服务健康:
curl -s http://localhost:3710/api/health应返回{"status":"ok"}
API 参考
完整 API 文档见 references/api.md,包含所有接口的请求/响应格式。
选择规律记忆
Agent 的学习规律存储在技能文件路径下 references/agent-rules.md,每次学习后更新此文件。
---
执行流程
流程一:学习选择规律(可选)
先读取文件references/agent-rules.md文档,如果包含内容筛选规律则使用此规律作为后续任务的选择标准,跳过此步骤;无可参考的规律内容时按顺序执行:
1. 调用 GET /api/news/agent-summary 获取学习数据 2. 分析数据:
saved_news:用户推送过的资讯(含 push_type)all_news_in_period:对应时段所有资讯- 对比两个列表,提炼被选中资讯的共同特征
3. 将分析的规律追加到 references/agent-rules.md中
分析角度:
- 被选中资讯的来源分布(哪些信源更受偏好)
- 被选中资讯的主题特征(关键词、话题类型)
- 推送类型分布(用户倾向于哪类推送)
- 内容创作选题特征(哪类话题被创作)
流程二:资讯推送
To execute the news push workflow:
1. 调用 POST /api/news/fetch 拉取最新资讯 2. 调用 GET /api/news/grouped?agent=1 获取资讯列表(已推送条目自动排除,无需手动去重) 3. 使用 references/agent-rules.md 中的筛选规律 4. 根据规律从列表中筛选 0-5 条有价值的资讯(无有价值资讯可直接结束此流程) 5. 对每条资讯:
- 判断推送类型(ainews / aitopics / aitools)
- 生成
news_title(≤30字,精炼有力)和news_summary(100-200字,符合对应风格) - 调用对应推送接口(注意:接口路径为
/api/news/{id}/ainews等,不是/{id}/ainews/):
POST /api/news/{id}/ainews
POST /api/news/{id}/aitopics
POST /api/news/{id}/aitools- 请求体示例:
{"news_title":"标题","news_summary":"摘要内容"}
6. 完成后调用 POST /api/content/notify-bot 通知人类
推送类型判断原则:
ainews:客观事实类资讯,速报风格aitopics:有争议或引人思考的话题,末尾加引导性问题aitools:新工具/新产品发布,突出功能和使用场景
流程三:内容创作
To execute the content creation workflow:
1. 从资讯列表选定 0-3 条适合内容创作的资讯(通常是有深度或有趣的话题,无有价值资讯可直接结束此流程) 2. 对每条资讯,构造以下参数并调用 POST /api/content/agent-render:
news_id:资讯 IDsource_url:原始链接(description中的链接,不是资讯的链接;有则填,服务会自动截图)cover_word:1-2个英文单词,概括核心主题cover_title:≤15字,有冲击力的中文标题cover_description:≤20字,补充说明cover_emoji:1个相关 Emojicontent_type:news/tools/topics/default(决定配色)title:≤20字,小红书风格标题content:正文,500-800字,小红书风格,有观点有情感tags:3-5个标签,逗号分隔
3. 获取渲染结果的 saved_content_id、cover_url、detail_urls 4. (可选,未明确则跳过)调用 POST /api/content/save-to-bitable 存入飞书多维表(传 saved_content_id) 5. 调用 POST /api/content/publish-xhs将笔记内容发布到小红书:
{
"title": "{title(≤20字)}",
"desc": "{content}",
"cover_url": "{cover_url}",
"detail_urls": ["{detail_urls[0]}", "..."],
"is_private": true
}- Agent 必须传 `"is_private": true`,笔记将以「仅自己可见」发布,由人类在小红书 App 中审核后手动设为公开
- 成功后从响应中取
note_url - 若接口返回错误"小红书发布功能未开启",不重试、不报错,跳过此步骤即可
6. 调用 POST /api/content/notify-bot 发送通知,消息格式:
✅ 内容创作完成
标题:{title}
类型:{content_type}
标签:{tags}
已存入飞书多维表,请审核。
{如已发布到小红书:🔗 小红书笔记(仅自己可见,请在 App 审核后设为公开):{note_url}}---
注意事项
- 截图详情图可能因目标网站防爬而失败,失败时静默跳过,只生成封面
- 推送接口会自动标记资讯为已保存,无需手动调用 save 接口
- Agent 生成内容时,
news_title和news_summary直接作为推送内容,需保证质量 - 每次执行完整流程后,建议执行一次学习流程以更新规律记忆
- 小红书发布:发布开关默认关闭,由人类决定是否授权。Agent 应尊重此开关,收到"未开启"错误时静默跳过,不得反复重试或提示人类开启
- 服务不可用:调用 API 前建议先 GET
/api/health。若请求返回 5xx 错误,可能是服务临时故障,可等待数秒后重试一次;若仍失败则终止流程并通知人类
Agent 选择规律记忆文档
此文件由 Agent 在执行"学习规律"流程后自动维护,记录从用户历史行为中归纳出的选择偏好。
每次执行学习流程后追加或更新对应章节,不删除历史记录。
---
资讯筛选规律
Agent 学习并填写:哪类资讯标题/来源/主题会被用户选择推送
- 待学习(首次运行学习流程后更新)
---
推送类型判断规律
Agent 学习并填写:什么类型的资讯用 AINews/AITopics/AITools 推送
| 特征 | 推送类型 | 示例关键词 |
|---|---|---|
| 待学习 | - | - |
---
内容创作规律
Agent 学习并填写:哪类资讯会被选为内容创作对象,创作偏好是什么
- 待学习
---
学习历史
| 时间 | 样本数(已保存/总量) | 更新内容 |
|---|---|---|
| - | - | 初始化 |
MakeContents API 参考文档
本文档描述 MakeContents 应用暴露的所有 API 接口,供 Agent 调用。
基础信息
- Base URL:
http://localhost:3710/api(本地开发)或http://<服务器IP>:3710/api(Docker 部署) - 所有请求/响应均为 JSON(下载接口除外)
- 成功响应格式:
{ "success": true, "data": ... } - 失败响应格式:
{ "success": false, "error": "错误信息" }
---
资讯接口
拉取最新资讯
POST /news/fetch
Body: {} (全部信源)响应:每个信源的拉取结果,含新增条数。
获取资讯列表(分组)
GET /news/grouped # 人工模式:显示所有未隐藏资讯(含已推送)
GET /news/grouped?agent=1 # Agent 模式:额外过滤掉已推送(ai_newsed=1)的条目,避免重复处理响应:按信源分组的资讯列表(hidden=0)。Agent 调用时必须加 `?agent=1`。
获取 Agent 学习摘要
GET /news/agent-summary响应:
{
"saved_news": [...], // 最近 5 条已保存资讯(含 push_type)
"saved_contents": [...], // 最近 5 条已保存内容
"all_news_in_period": [...] // 对应时段全量资讯标题(用于学习选择规律)
}推送资讯(支持 Agent 直传内容)
POST /news/{id}/ainews
POST /news/{id}/aitopics
POST /news/{id}/aitoolsAgent 模式(直接传入内容,跳过 LLM 总结):
{
"news_title": "Agent 生成的标题(≤30字)",
"news_summary": "Agent 生成的摘要(100-200字)"
}人工模式:body 为空,后端自动调用 LLM 生成。
推送后自动:
- 微信推送(带对应 tag:#AINews / #AITopic / #AITools)
- 飞书知识库写入(带对应 emoji:🆕 / 💬 / 🛠)
- 标记资讯为已保存,记录 push_type
保存/取消保存资讯
POST /news/{id}/save
POST /news/{id}/unsave隐藏资讯
POST /news/{id}/hide获取已保存资讯
GET /news/saved---
内容创作接口
Agent 一步完成创作渲染(推荐 Agent 使用)
POST /content/agent-render请求体:
{
"news_id": 42, // 关联的资讯 ID(可选)
"source_url": "https://...", // 原始链接,有则截图作为详情图
"cover_word": "INNOVATION", // 封面英文词(必填)
"cover_title": "AI重塑未来", // 封面主标题,≤15字(必填)
"cover_description": "探索无限可能的新时代", // 封面描述,≤20字
"cover_emoji": "🚀", // 封面 Emoji
"cover_title_color": "#06FFA5", // 可选,留空则按 content_type 自动选
"content_type": "news", // 用于自动选色:"news"|"tools"|"topics"|"default"
"title": "AI正在重塑每个行业", // 内容标题,≤20字(必填)
"content": "正文内容...", // 内容正文(必填)
"tags": "AI,大模型,未来" // 逗号分隔的标签(可选)
}响应:
{
"saved_content_id": 5,
"session_id": "uuid",
"cover_url": "/uploads/rendered/xxx_cover.png",
"detail_urls": ["/uploads/rendered/xxx_detail_0.png"],
"title_color": "#FF6B35"
}颜色自动选择规则(当 cover_title_color 为空时按 content_type 选):
| content_type | 颜色 | 场景 |
|---|---|---|
default / 不确定 | #06FFA5 翠绿 | 通用 |
news | #FF6B35 橙红 | 新闻资讯 |
tools | #5478EB 蓝紫 | 工具推荐 |
topics | #FFD700 金黄 | 话题讨论 |
截图规则:
- 有
source_url且可访问:截图作为详情图 - 页面宽高比 < 3:4(长页面):自动裁切为多张 3:4 图,逐张渲染(最多 5 张)
- 页面宽高比 ≥ 3:4:整张截图渲染
- 截图失败:静默跳过,只生成封面
保存内容到飞书多维表
POST /content/save-to-bitable请求体(方式一,推荐):
{ "saved_content_id": 5 }请求体(方式二,直接传数据):
{
"title": "标题",
"content": "正文",
"source_url": "https://...",
"news_title": "原始资讯标题",
"news_source_url": "原始资讯链接",
"tags": "AI,工具",
"cover_url": "/uploads/rendered/xxx_cover.png",
"detail_urls": ["/uploads/rendered/xxx_detail_0.png"]
}飞书机器人通知
POST /content/notify-bot
Body: { "message": "通知内容文本" }使用场景:Agent 完成任务后通知人类。
发布笔记到小红书
POST /content/publish-xhs请求体:
{
"title": "笔记标题(≤20字,超长自动截断)",
"desc": "笔记正文(支持 #话题[话题]# 格式插入话题标签)",
"cover_url": "/uploads/rendered/xxx_cover.png",
"detail_urls": [
"/uploads/rendered/xxx_detail_0.png",
"/uploads/rendered/xxx_detail_1.png"
],
"is_private": true
}Agent 调用时必须传 `"is_private": true`,发布为仅自己可见,等待人类在小红书 App 审核后设为公开。
响应:{ "success": true, "data": { "note_id": "67a1b2c3d4e5f6...", "note_url": "https://www.xiaohongshu.com/explore/67a1b2c3d4e5f6..." } }
**前置条件**:
- 系统配置页「小红书发布」Tab 中填写了有效的 Cookie(含 `a1` 和 `web_session` 字段)
- 「发布开关」已开启(`xhs_enabled = 1`)
- 图片文件必须是已通过 `/content/render` 或 `/content/agent-render` 渲染生成的本地文件
**可见性规则**:
- **人工发布**(通过应用界面点击按钮):直接发布为**公开可见**
- **Agent 发布**:必须传 `"is_private": true`,发布为**仅自己可见**,由人类在小红书 App 中审核后手动改为公开
**错误情况**:
- `小红书发布功能未开启` — 需在配置页开启开关
- `未配置小红书 Cookie` — 需在配置页填写 Cookie
- `Cookie 不完整,缺少 a1 或 web_session 字段` — Cookie 无效,需重新获取
- `发布失败: ...` — 小红书接口返回错误,可能 Cookie 已过期
### 获取已保存内容列表GET /content/saved
---
## 完整 Agent 工作流
### 资讯推送流程1. POST /news/fetch # 拉取最新资讯 2. GET /news/grouped?agent=1 # 获取资讯列表(自动排除已处理条目) 3. 根据学习到的规律筛选资讯 4. 对每条目标资讯,确定推送类型:
- 新闻速报 → POST /news/{id}/ainews (body 含 news_title + news_summary)
- 话题讨论 → POST /news/{id}/aitopics (body 含 news_title + news_summary)
- 工具推荐 → POST /news/{id}/aitools (body 含 news_title + news_summary)
### 内容创作流程1. 选定目标资讯(从 /news/grouped?agent=1 列表中) 2. 判断 content_type(news/tools/topics/default) 3. 生成创作参数(cover_word, cover_title, cover_description, cover_emoji, title, content, tags) 4. POST /content/agent-render # 一步完成渲染,自动截图+保存 5. POST /content/save-to-bitable # 存入飞书多维表供审核(传 saved_content_id) 6. POST /content/notify-bot # 通知人类审核 message 示例:"✅ 已完成内容创作:《{title}》\n封面:{cover_url}\n请在飞书多维表查看审核"
### 发布到小红书流程(需人类开启开关)
> ⚠️ 此流程只有在系统配置中「小红书发布开关」开启时才可执行。Agent 不得绕过此开关。
1. (前提)确认 xhs_enabled 已开启,否则跳过此流程 2. 完成内容创作流程,获得 cover_url 和 detail_urls 3. POST /content/publish-xhs # 发布到小红书(Agent 必须传 is_private: true)
- title: 笔记标题(来自 agent-render 的 title 字段,≤20字)
- desc: 笔记正文(来自 agent-render 的 content 字段)
- cover_url / detail_urls: 渲染结果路径
- is_private: true # ⚠️ Agent 发布必须设为 true(仅自己可见),人类审核后自行在 App 改为公开
4. 检查响应中的 note_url,确认发布成功 5. POST /content/notify-bot # 通知人类(附上笔记链接,提示需在小红书 App 审核后设为公开) message 示例:"✅ 已发布到小红书:《{title}》\n🔗 {note_url}"
### 学习选择规律流程1. GET /news/agent-summary # 获取学习数据 2. 分析 saved_news 和 all_news_in_period 的差异,学习人类的筛选偏好 3. 将学习到的规律写入 Agent 的永久记忆文档