文档

自媒体选题日报系统

试用

跨平台自媒体选题日报系统 — 每天自动从 6 大数据源(头条/微博/B站/抖音/知乎/36氪) 抓取热点新闻,按 6 大类 119 词关键词库筛选,LLM 生成抖音钩子和公众号标题, 输出 Markdown 选题日报,推送到飞书 webhook。 适用场景: - 自媒体运营:每天 10 个候选选题,⭐ 优先 3 个 - 双平台发布:抖音 60s 口播 + 公众号 2000-3000 字图文 - "只看数据说话"人设:严格禁词清单 + 数据点必填 - 跨平台热点捕获:6 大数据源 + 36h 时间窗口过滤 本 skill 含完整工作流:4 个脚本 + 4 个 cron 配置 + 飞书 webhook 推送 + 限流 fallback。

它能做什么

跨平台自媒体选题日报系统 — 每天自动从 6 大数据源(头条/微博/B站/抖音/知乎/36氪) 抓取热点新闻,按 6 大类 119 词关键词库筛选,LLM 生成抖音钩子和公众号标题, 输出 Markdown 选题日报,推送到飞书 webhook。 适用场景: - 自媒体运营:每天 10 个候选选题,⭐ 优先 3 个 - 双平台发布:抖音 60s 口播 + 公众号 2000-3000 字图文 - "只看数据说话"人设:严格禁词清单 + 数据点必填 - 跨平台热点捕获:6 大数据源 + 36h 时间窗口过滤 本 skill 含完整工作流:4 个脚本 + 4 个 cron 配置 + 飞书 webhook 推送 + 限流 fallback。

技能文档

跨平台自媒体选题日报系统 (topic-factory)

每天凌晨自动从 6 大公开数据源抓取热点,按关键词库筛选行业新闻,LLM 生成抖音钩子 + 公众号标题 + 数据点,输出 Markdown 选题日报,飞书推送 ⭐ 优先选题。

核心特性

  • 6 大数据源:头条 / 微博 / B站 / 抖音 / 知乎 / 36氪(公开 JSON / RSS API)
  • 6 大类 119 词关键词库:财经投资 / 房产 / 政策 / AI科技 / 中国大模型公司
  • LLM 钩子:60s 口播钩子(≤30 字,含数字+时间戳)+ 公众号标题(≤25 字,无句末标点)
  • 36h 时间窗口:36氪 RSS 编辑推荐段旧文章过滤(防止"京东方 IPO"等 8/14 旧数据霸占选题)
  • 禁用词后处理:6 个常见违规词 → 同义中性词("背后" → "原因")
  • 飞书 webhook 推送:支持限流 fallback(输出 markers 给 cron agent 推私聊)
  • 3 次重试机制:shell wrapper 自动重试 + send_alert 告警
  • 2 个 cron 推荐:04:00 主任务 + 08:00 兜底(处理 LLM api 过载)

系统架构

┌─────────────────────────────────────────────────┐
│                 每日工作流                         │
├─────────────────────────────────────────────────┤
│                                                  │
│  [04:00 cron] → run_daily.sh                    │
│                  ↓                                │
│                  generate_topics.js              │
│                    ├─ 6 数据源并发抓取              │
│                    ├─ 关键词匹配 + 流量分排序         │
│                    ├─ LLM 钩子 + 标题 + 数据点        │
│                    └─ 输出 YYYYMMDD_topics.md      │
│                                                  │
│  [08:00 cron] → 兜底重试(若 04:00 失败)         │
│                                                  │
│  [09:00 cron] → notify_feishu.js                │
│                  ├─ 解析 ⭐ 选题                  │
│                  ├─ 飞书 webhook 推送              │
│                  └─ 失败时输出 fallback markers    │
│                                                  │
│  [23:55 cron] → archive_unused.js              │
│                  ├─ 扫未标注 ADOPTED 选题          │
│                  └─ 移到 history/                │
│                                                  │
└─────────────────────────────────────────────────┘

快速开始

1. 依赖安装

# Node.js 16+(推荐 18 LTS)
node --version

# 无需 npm 依赖(纯 Node 标准库 + 内置 fetch)

2. 部署脚本

# 推荐:~/.openclaw/workspace/.analysis/topic_factory/
mkdir -p ~/.openclaw/workspace/.analysis/topic_factory
mkdir -p ~/.openclaw/workspace/claude-hub/topics

cp scripts/*.js scripts/*.sh ~/.openclaw/workspace/.analysis/topic_factory/
chmod +x ~/.openclaw/workspace/.analysis/topic_factory/run_daily.sh

3. 配置环境变量

# LLM API(如使用 Anthropic Claude)
export ANTHROPIC_AUTH_TOKEN="sk-ant-..."
export ANTHROPIC_BASE_URL="https://api.anthropic.com"  # 默认
export LLM_MODEL="claude-3-5-sonnet-20241022"          # 默认

# 写入 ~/.zshrc 或 ~/.bashrc 永久生效
echo 'export ANTHROPIC_AUTH_TOKEN="sk-ant-..."' >> ~/.zshrc

4. 配置飞书 webhook(可选)

如果不用推送,可跳过;用的话:

# 编辑 notify_feishu.js 第 32 行
const FEISHU_WEBHOOK = 'https://open.feishu.cn/open-apis/bot/v2/hook/YOUR_TOKEN';

获取方式:飞书群 → 群设置 → 群机器人 → 添加机器人 → 自定义机器人 → 复制 webhook URL

5. 第一次运行

cd ~/.openclaw/workspace/.analysis/topic_factory
bash run_daily.sh

# 验证
ls -la ~/.openclaw/workspace/claude-hub/topics/  # 应有 YYYYMMDD_topics.md
cat ~/.openclaw/workspace/claude-hub/topics/$(date +%Y%m%d)_topics.md

6. 配置定时任务(推荐)

# 04:00 每日生成(主任务)
# 08:00 兜底重试(防 LLM 过载)
# 09:00 飞书推送
# 23:55 归档未选用

# OpenClaw cron 配置示例
openclaw cron add "04:00 topic-factory main" \
  --schedule "0 4 * * *" \
  --tz "Asia/Shanghai" \
  --command "bash ~/.openclaw/workspace/.analysis/topic_factory/run_daily.sh"

openclaw cron add "08:00 topic-factory fallback" \
  --schedule "0 8 * * *" \
  --tz "Asia/Shanghai" \
  --command "bash ~/.openclaw/workspace/.analysis/topic_factory/run_daily.sh"

openclaw cron add "09:00 topic-factory feishu" \
  --schedule "0 9 * * *" \
  --tz "Asia/Shanghai" \
  --command "node ~/.openclaw/workspace/.analysis/topic_factory/notify_feishu.js"

6 大数据源说明

数据源抓取方式API 类型特殊处理
头条HTTP JSON公开榜单 APITop 50,按热度排序
微博HTTP JSON公开热搜 APITop 50
B站HTTP JSON公开热搜 APITop 50
抖音HTTP JSON公开榜单 APITop 50
知乎HTTP JSON公开热榜 APITop 50
36氪RSS XML公开 RSS feed36h 时间窗口过滤

36氪特别说明

36氪 RSS feed 结构:

  • 第 1-10 条 = "编辑推荐"(混合多日数据,不按时间排序)
  • 第 11-30 条 = 按时间倒序的快讯(最新在前)

不加时间窗口会导致 8/14、8/15 的旧文章命中关键词后霸占选题。fetch36krRSS 内置 36h 时间过滤:

const TIME_WINDOW_HOURS = 36;
const cutoffMs = Date.now() - TIME_WINDOW_HOURS * 60 * 60 * 1000;
// 时间窗口过滤:跳过 36h 之前的文章

6 大类 119 词关键词库

类目名称词数典型词
A财经投资31半导体 / 存储 / 新质生产力 / 医疗 / A股 / 财报
B房产28城市更新 / 乡村振兴 / REITs / 楼市 / 保障房
C政策类9楼市新政 / 公积金 / 降息 / 央行 / 证监会
DAI 科技30AI / 大模型 / GPT / Claude / Gemini / 算力 / GPU
E中国大模型公司16智谱 / Kimi / 百川 / DeepSeek / Qwen / 豆包

优先级排序(流量分):D > A > B > C > E

可在 generate_topics.js 第 46-100 行自定义关键词库。

LLM 集成

3 个 LLM 调用点

  1. 钩子文案(60s 口播):20-30 字,含数字+时间戳
  2. 公众号标题候选:2 个,15-25 字,无句末标点
  3. 数据点补充:3 个,含数字 + 时间戳 + 权威来源

Prompt 模板

// generate_topics.js 第 661 行 generateHookCopy()
const prompt = `你是一个抖音/公众号自媒体运营专家,只看数据说话。
【约束清单】
1. 禁止词:颠覆 / 沉默 / 真相 / 背后 / 答案 / 原来如此 / 万万没想到
2. 禁止句末标点:!? 
3. 禁止主观判断
【输出】JSON: { hook, gzhTitles: [t1, t2] }`;

环境变量

变量必填默认值说明
ANTHROPIC_AUTH_TOKEN-API key
ANTHROPIC_BASE_URL-https://api.anthropic.comAPI endpoint
LLM_MODEL-claude-3-5-sonnet-20241022模型名

限流处理

LLM API 有限流,重试 2 次(间隔 3 秒),仍失败则用模板兜底。

飞书 webhook 推送

推送内容

从每天的 YYY主题_topics.md 提取 ⭐ 推送选题(前 10 个),拼接后发到飞书:

📋 自媒体选题日报
日期:2026-08-17 周日

#1 抖音「60岁AI动画赛道新人」7655448热度
钩子:60岁零基础入局AI动画,2026年8月单条视频播放破百万

#2 抖音「一条AI短片演绎时间焦虑」8856859热度
钩子:2026年8月,885万热度,一条AI短片呈现时间焦虑

#3 头条「问界儿童车即将上市」546.0万热度
钩子:546万人热议,问界儿童车8月正式上市,价格区间曝光
...

限流 fallback

飞书 webhook 偶发限流(code=11232psm=lark.oapi.app_platform_runtime),脚本检测后输出 fallback markers:

=== FALLBACK_MESSAGE_START ===
📋 自媒体选题日报
...
=== FALLBACK_MESSAGE_END ===

cron agent 检测到 markers 时,把内容直接推用户私聊(plain text,不加表格)。

4 个 cron 推荐配置

时间任务cron 表达式备注
04:00主任务生成0 4 * * *LLM 偶发过载
08:00兜底重试0 8 * * *处理 04:00 失败
09:00飞书推送0 9 * * *早上查看
23:55归档未选用55 23 * * *每日清理

时区:Asia/Shanghai(避免 UTC 算日期错位)

输出文件结构

~/.openclaw/workspace/claude-hub/topics/
├── YYYYMMDD_topics.md      # 每日选题日报(当天)
└── history/
    └── YYYYMMDD_unused.md  # 未选用归档(每天 23:55 生成)

Markdown 选题日报结构

# 自媒体选题日报 · 2026-08-17 周日
文件路径:~/.openclaw/workspace/claude-hub/topics/20260817_topics.md

## 今日总览
- 选题数量:10 个(推送 10 个)
- 分布:A 财经 5 / B 房产 0 / C 政策 0 / D AI 5

---

## 选题 1 · ⭐推送
**抖音「60岁AI动画赛道新人」7655448热度**

- **原始命中**:D AI科技(命中词:AI)
- **延伸方向**:A 财经投资、B 房产、C 政策类
- **目标平台**:抖音短视频 + 公众号图文

**钩子文案(用户可直接用)**
- 60岁零基础入局AI动画,2026年8月单条视频播放破百万

**3 个数据点(必填)**
1. 2025年全球AI内容创作工具市场规模达XX亿元(来源:IDC)
...

**来源链接**
- https://...

**用户操作**
- 想采用本选题:把注释改为 `<!-- __ADOPTED__: 选题 1 ✓ -->`
- 不采用:保持注释不变,编辑 .md 文件加备注

<!-- __ADOPTED__: 选题 1 -->
- [ ] 备注修改意见
- [ ] 触发 LLM 写完整公众号长文

故障排查

Q1: 36氪数据总是 8/14、8/15 旧数据

根因:36氪 RSS feed 前 10 条是"编辑推荐",混合多日数据,不按时间排序。

修复fetch36krRSS 加 36h 时间窗口(已内置)。验证日志:

[36氪] 获取 10 条(过滤 1 条 36h 之前旧文章)

Q2: LLM API 频繁 429 / overloaded

修复

  • 04:00 + 08:00 双 cron 兜底
  • 单次失败重试 2 次(间隔 3 秒)
  • 最终失败用模板兜底(钩子函数 fallbackHookCopy

Q3: 飞书 webhook 限流 code=11232

修复:脚本输出 fallback markers,cron agent 推用户私聊(plain text)。

Q4: 钩子 / 公众号标题含禁用词

修复:内置 sanitizeForbiddenWords 后处理:

  • 背后原因
  • 真相事实
  • 答案回复
  • 原来如此原来这样
  • 万万没想到没想到
  • 太可怕了值得关注

Q5: 04:00 cron 频繁失败

根因:minimax 私有 API 偶发 rate_limit / overloaded。

修复:08:00 兜底 cron 是关键。即使 04:00 失败,08:00 重生成。

Q6: 钩子超 30 字

修复truncateHook(text, 30) 智能截断到最近标点。

隐私与免责声明

数据源合规性

  • 所有数据源(头条/微博/B站/抖音/知乎/36氪)均为公开 API / RSS
  • 仅抓取公开热榜,不抓取用户隐私数据
  • 关键词匹配完全本地,无第三方数据上报

飞书 webhook

  • 推送内容由用户配置(公开 webhook URL)
  • 推送内容含钩子文案(用户生成或 LLM 增强)
  • 用户负责确保 webhook 群组合规

LLM 使用

  • 默认调用 Anthropic Claude API
  • 选题内容(公开新闻)发送至 LLM
  • LLM 返回钩子/标题/数据点(可能含虚构,需用户核实)

免责声明

本 skill 生成的选题内容仅供参考,不构成投资建议。发布前请用户核实数据真实性。

性能指标

操作耗时
6 数据源并发抓取~3-5 秒
关键词匹配 + 流量分排序< 1 秒
LLM 钩子 / 标题生成(10 个)~20-30 秒
数据点生成(10 个 × 3)~30-60 秒
整体生成~60-90 秒
飞书 webhook 推送< 1 秒

许可

MIT License

相关技能

每日精选 8 个值得关注的 ClawHub AI Agent Skill,可推送飞书或腾讯 IMA。

10 次安装1 星标

SkillHub Daily — 与 ClawHub Daily(口碑精品/趋势洞察)互补的每日推荐引擎。 本技能的行为范围(用户须知): - 读取本地记忆文件(TRAE memory 目录)提取关键词用于个性化推荐,仅使用关键词匹配,不传输原始记忆内容 - 调用 skillhub CLI 获取 SkillHub...

10 次安装1 星标

自动生成视频/图文选题,基于热点话题和用户偏好。当用户说"生成选题"、"给我一些选题建议"、"今天做什么内容"、"帮我找选题"时触发此技能。支持抖音、小红书、B站、知乎等平台风格。

1 次安装

Plan trending social content-marketing topics and headline directions. Based on account positioning and target audience, generates hot topic ideas, viral title angles, and content frameworks to solve topic burnout, sameness, and low-traffic problems. Use when the user wants social content topic ideas, does 选题 / 选题策划 / 爆款标题, plans a content calendar, or needs headline directions for a niche account. Trigger keywords: social content, topic, 选题, 选题策划, headline, 标题, content planning, 爆款, trending. Requires an API key from wsdsocial.com.

2 次安装

多平台AI信息源 — 一个 Skill 同时查询快手、公众号、B站、视频号、小红书五大平台的 AI 爆款内容,可指定单平台、多平台或全部平台。按各平台主指标(点赞/互动)筛选热门,智能聚类话题后生成一份统一的多平台 HTML 日报,含跨平台总览、跨平台话题对比、封面图、互动数据与平台筛选 Tab。同步对每平台 TOP 话题执行 AI 情报调查,采用多引擎搜索与交叉验证,输出带可信度标注的结构化调查报告。支持自定义关键词定向查询与每日订阅。⚠️快手/B站数据每日15:00更新前一天内容,公众号/视频号/小红书每日16:00更新,目标日期无数据时必须先告知用户并等待确认后才能调用接口,禁止自动获取