前言
不知道你有没有这样的痛点,每次刷推特总是浪费很多时间在上面,但是如果不刷呢又感觉错过了很多重要的信息。以前欧阳坐班的时候是利用通勤路上刷推特,现在远程办公了,每次打开推特经常1-2个小时就过去了,效率很低。
关注公众号:【前端欧阳】,加入我的AI交流群。
我的痛点
每次刷推特总是浪费很多时间:
- 经常从一个帖子跳到另外一个帖子,然后再跳到其他帖子作者主页,接着看他的更多的帖子。
- 推文太多,无法专注于高价值帖子,时间经常浪费在了低价值的帖子上
- 活菩萨经常在中推上面留言,然后就被吸引过去了
我的解决方案
有些大佬利用Rube+LLM全自动生成推文和发送推文,这个给了我启发:
1、使用Rube获取过去24小时首页推送的全部帖子
2、利用AI将这些帖子进行分类:高价值帖子、中价值帖子、低价值帖子
3、高价值帖子内容完整输出,中价值帖子生成较详细概括,低价值帖子生成简短摘要
这个是最终的效果
高价值推文截图:
中价值推文截图:
低价值推文截图:
生成的.md文件一共有7万+
字,文件大小118kb
第一版提示词
首先注册Rube,官网链接:https://rube.app/,这个工具打通了500+的APP,我们要做的就是利用他获取我的首页推文。
接着就是安装Rube MCP,我是使用的Claude Code,安装官网的教材来就行了:
接着就是写提示词,怎么写?
我选择让AI协助我来写:
我只有大致想法和痛点,但是细节不知道怎么描述,把这些告诉AI后,他很懂我的痛点,分析出了我的需求和解决方案
接着就是和他进一步的讨论:
经过多轮讨论后得出第一版提示词:
使用RUBE MCP的TWITTER_USER_HOME_TIMELINE_BY_USER_ID工具获取我Twitter首页时间线过去24小时推文,进行AI智能分析后生成技术摘要报告。
具体要求:
1. 获取关注用户列表的最新推文和图片(包含转发/回复)
2. 使用AI分析每条推文的技术价值和重要性:
- 高价值内容(7-10分):包含新技术、教程、深度分析、创业见解、实用工具等,完整显示原文
- 中等价值内容(4-6分):一般性技术讨论,生成较详细概括
- 低价值内容(1-3分):日常闲聊、营销内容等,生成简单概括
3. 按以下分类整理:
- 🔥 今日热点(最重要的3-5条)
- 📱 前端技术(React/Vue/新框架/工具等)
- 🤖 AI/机器学习(大模型/工具/应用案例)
- 💼 创业见解(融资/经验/商业分析)
- 🛠 开发工具(效率工具/开发环境)
4. 输出格式为markdown文件,文件名为"tech_summary_年-月-日_时-分.md"
5. 每个分类下显示:作者信息、时间、推文链接、内容摘要/原文、图片、翻译(如果原文是非中文)、互动数据
6. 如果是转发和回复的推文,需要去评估转发的推文的价值。并且在显示的时候标明转发或者回复的原文
目标:5-10分钟内快速了解技术动态,避免被无关内容分散注意力。
这个提示词看着没毛病的样子,但是丢给AI后,吐出的结果和我的期望差了十万八千里,完全就没法用。
问题和改进
多次AI输出和提示词调整最终分析出这些问题:
- 生成的md文件中只有10多条推文的分析,AI偷懒了
- 推文显示的内容不一致,有的不显示图片,有的又不显示翻译,有的又不显示转发和回复的原文
- AI在生成过程中会去莫名其妙的调用Rube的其他工具,结果调用工具又失败了。然后他就去偷懒思考如何简单的实现结果,最终导致结果和我的期望差了十万八千里。
出现这些问题的根本原因是我的首页最近24小时推文至少有几百条数据,以AI现在的能力如果不告诉他明确的流程和规划,他大概率会自由发挥导致结果和预期差了十万八千里。
这明显就是一个agent项目,通过代码开发一个agent智能体就能解决这些问题。
但是因为我订阅了Claude,所以不想额外付费调用API来实现智能体,因为这玩意我以后每天都会使用。
所以我在提示词上面花了一些心思,期望通过提示词来约束AI达到智能体的效果。
这个是改进思路:
- 明确告诉AI只调用Rube的获取首页推文接口,然后将接口数据存以json文件存到本地目录(防止AI偷懒)
- 明确告诉AI使用本地的工具读取json文件,不要去调用Rube的其他工具(防止AI调用Rube工具导致失败)
- 给AI规定输出的每一种推文的结构,并且给出例子
先来科普两个Claude Code中的两个工具:
自定义斜杠命令
:将常用的提示词封装为自定义斜杠命令子代理Subagents
:定义自定义智能体,用于处理专门的子任务
我每天都要使用这个提示词生成推文报告,每次都输入一大串提示词也太麻烦了,这个自定义斜杠命令刚好就派上用场。
我封装了一个/x-summary
命令,并且支持传入时间参数,这样我每天通过/x-summary
命令就能生成推文报告。
Claude Code自己就是一个智能体,但是这个智能体更擅长的是coding相关的东西。
所以我新增了两个子智能体:twitter-paginated-fetcher
和twitter-analyzer
twitter-paginated-fetcher
用于调用Rube的MCP工具将指定时间内的推文保存到本地json文件。在调用的过程中我发现不管是12小时还是24小时推文,最终都只有98条数据,经过分析后发现Rube工具进行了限制,所以在AI的帮助下新增了循环调用的提示词,确保能够拿到所有的推文。twitter-analyzer
用于分析推文,并且将推文进行分类和总结。之所以抽离这个智能体,是因为几百条推文数据有点多,AI分析的时候经常出问题,将其单独抽离出来后效果就好很多了。
在/x-summary
中封装的提示词中我会在对应的场景明确告诉AI调用哪个子智能体干活。
最终的提示词文件目录就是这样的:
x-summary.md
文件就是自定义的/x-summary
命令。twitter-paginated-fetcher.md
文件就是twitter-paginated-fetcher
子智能体的提示词。twitter-analyzer.md
文件就是twitter-analyzer
子智能体的提示词。
这个是x-summary.md
文件的提示词:
---
description: "生成Twitter分类,支持自定义时间范围"
argument-hint: "[hours]"
---
使用 RUBE MCP 的 TWITTER_USER_HOME_TIMELINE_BY_USER_ID 工具获取我 Twitter 首页时间线过去 $ARGUMENTS 小时推文(如果没有指定参数则默认 24 小时),然后将推文元数据保存到本地。使用保存到本地的推文元数据进行 AI 智能分析输出完整推文的 md 文档。
具体要求:
1. **完整分页获取**关注用户列表的最新推文和图片(包含转发/回复)。
**重要:必须突破100条推文限制,获取指定时间窗口内的所有推文**
**使用专门的twitter-paginated-fetcher子代理获取完整数据**:
使用Task工具调用general-purpose子代理,任务描述:"Twitter完整分页数据获取",提示词如下:
```
请执行Twitter时间线完整分页数据获取任务。参考 /Users/xxx/.claude/agents/twitter-paginated-fetcher.md 中的流程,完成以下任务:
参数:
- 用户ID:1073021312790974464
- 时间窗口:$ARGUMENTS小时
- 输出路径:/Users/xxx
执行流程:
1. 计算开始时间(当前时间 - $ARGUMENTS小时)
2. 使用RUBE_MULTI_EXECUTE_TOOL获取第一页数据(max_results=50)
3. 检查next_token,如有则继续获取后续页面
4. 合并所有页面数据并去重
5. 使用Write工具保存完整数据到本地文件
6. 输出详细统计信息
要求:
- 确保突破100条推文限制
- 覆盖完整$ARGUMENTS小时时间窗口
- 文件保存到本地文件系统(非沙盒)
- 返回总推文数和数据验证结果
- 保存文件名格式:{年-月}/{日-时:分}-source-data-complete.json(北京时间)
```
2. **自动调用Sub Agent**进行智能分析:从元数据文件`<日-时:分>-source-data-complete.json`中读取推文数据,**必须使用Task工具调用twitter-analyzer子代理**进行技术价值和重要性的智能分类,包括:
- **语义级价值评估**:基于内容语义理解进行7-10分制评分,不使用简单关键词匹配
- **专业翻译服务**:对所有英文推文提供准确的中文翻译,不能使用占位符
- **智能内容概括**:为中低价值推文生成基于实际内容的真实概括
- 高价值内容(7-10 分):包含新技术、教程、深度分析、创业见解、实用工具等,完整显示原文。
- 中等价值内容(4-6 分):一般性技术讨论,生成较详细概括。
- 低价值内容(1-3 分):日常闲聊、营销内容等,生成简单概括。
3. 按照高价值内容、中等价值内容、低价值内容进行完整分类,输出成"日-时:分.md"格式的 md 文件(时:分是北京时间):
**高价值内容显示格式:**
- 作者信息
- 原文(保持原语言,禁止改写)
- 如果原文是英文 → 在原文下方紧跟一行输出中文翻译
如果原文是中文 → 不输出翻译
- 转发/回复推文内容(如有)
- 原文(保持原语言)
- 如果原文是英文 → 在原文下方紧跟一行输出中文翻译
如果原文是中文 → 不输出翻译
- 推文中的图片/媒体,使用 `![]()` 语法进行显示
- 互动数据(点赞、转发、回复数)
- 推文链接
**中等价值内容显示格式:**
- 作者信息
- 中文详细概括(对主推文和转发/回复内容进行综合概括,2-3 句话)
- 推文中的图片/媒体,使用 `![]()` 语法进行显示
- 推文链接
**低价值内容显示格式:**
- 作者信息
- 中文简单概括(对主推文和转发/回复内容进行简要概括,1 句话)
- 推文链接
4. 转发或回复推文的处理规则:
- 高价值:完整显示主推文和被转发/回复推文的原文及翻译(若英文)。
- 中价值:将主推文和被转发/回复推文内容综合概括。
- 低价值:将主推文和被转发/回复推文内容简要概括。
5. 必须全量输出:将整理后的所有高/中/低三个等级的推文"全部"输出到 .md 文件。
6. "日-时:分.md" (北京时间)格式的 md 文件保存到本地机器的 "年-月" 文件夹中,如果没有 "年-月" 文件夹就进行新建。
**重要提醒**:
- **数据获取验证**:获取完成后必须输出数据统计,包括:总推文数、页面数、时间跨度、是否达到目标时间窗口
- **完整性检查**:如果推文数量仍然只有100条左右,说明分页获取失败,必须重新执行分页逻辑
- **文件命名**:保存为`-source-data-complete.json`以区分完整获取的数据
**Sub Agent调用规范**:
- 在获取和保存**完整**推文原始数据后,**自动调用专用的twitter-analyzer子代理**
- 调用方式:直接使用"使用twitter-analyzer子代理进行推文分析"的自然语言指令
- twitter-analyzer子代理会自动执行:语义价值评估、英文翻译、内容概括、MD格式输出
- 该子代理专门针对Twitter分析任务进行了优化,确保高质量的分析结果
- 输出文件名格式:`<日-时:分>.md`(北京时间)
翻译规则(必须严格遵守):
- 所有英文推文(主推文、转推、回复)必须在原文下方紧跟一行输出中文翻译。
- 所有中文推文(主推文、转推、回复)只保留原文,不输出翻译。
- 禁止遗漏或跳过翻译。
- 禁止对原文进行改写或润色。
示例(请严格对齐以下格式,不要添加多余字段或过程性文字):
```markdown
## 高价值内容 (7-10分)
### 1. 高价值推文
**作者**: Jane Doe (@janedoe)
**时间**: 2025-09-14 10:30:00 UTC
**原文**:
We migrated from Rollup to Rolldown and reduced build time by 97%.
**中文翻译**: 我们从 Rollup 迁移到 Rolldown,将构建时间降低了 97%。
**转发/回复内容**:
[quoted] John Smith (@johnsmith):
Rolldown with Oxc-minify is blazing fast on our CI as well.
**中文翻译**: 在我们的 CI 上,结合 Oxc-minify 的 Rolldown 也非常快。
**媒体内容**:

**互动数据**: 点赞 123, 转发 45, 回复 6
**推文链接**: https://twitter.com/janedoe/status/1234567890
---
```
```markdown
## 中等价值内容 (4-6分)
### 1. 中等价值推文
**作者**: Jane Doe (@janedoe)
**中文概括**: 分享了迁移 Rolldown 的实践经验与注意事项,对构建优化有参考价值,但缺少具体代码与数据细节,属于一般技术分享。
**媒体内容**:

**推文链接**: https://twitter.com/janedoe/status/1234567891
---
```
```markdown
## 低价值内容 (1-3分)
### 1. 低价值推文
**作者**: Jane Doe (@janedoe)
**中文概括**: 简短生活感想,未包含实质技术信息。
**推文链接**: https://twitter.com/janedoe/status/1234567892
---
```
这个是twitter-paginated-fetcher.md
文件的提示词:
# Twitter Paginated Fetcher Agent
## 专门用途
专门负责通过RUBE_MULTI_EXECUTE_TOOL工具实现Twitter时间线数据的完整分页获取,突破单次100条推文的限制,确保获取指定时间窗口内的所有推文数据。
## 核心功能
1. **多页面顺序获取**:使用RUBE_MULTI_EXECUTE_TOOL循环调用Twitter API
2. **智能分页控制**:基于next_token和时间边界的智能停止条件
3. **数据合并去重**:自动合并所有页面数据并去除重复项
4. **本地文件保存**:使用Write工具直接保存到本地文件系统
5. **完整性验证**:数据统计和时间覆盖范围验证
## 工作流程
### **第一步:获取第一页数据**
使用RUBE_MULTI_EXECUTE_TOOL获取第一页数据:
**API参数模板**:
```json
{
"tool_slug": "TWITTER_USER_HOME_TIMELINE_BY_USER_ID",
"arguments": {
"id": "用户ID",
"max_results": 50,
"start_time": "计算的开始时间(YYYY-MM-DDTHH:MM:SSZ格式)",
"expansions": ["author_id", "attachments.media_keys", "referenced_tweets.id", "referenced_tweets.id.author_id"],
"tweet__fields": ["created_at", "text", "public_metrics", "referenced_tweets", "attachments", "author_id", "conversation_id"],
"user__fields": ["username", "name", "profile_image_url", "public_metrics"],
"media__fields": ["url", "preview_image_url", "type", "height", "width"]
}
}
```
### **第二步:检查分页需求**
检查返回数据:
- 提取 `meta.next_token`
- 检查最旧推文时间是否达到目标时间窗口
- 如果有next_token且未达到时间边界,继续获取
### **第三步:循环获取后续页面**
重复使用RUBE_MULTI_EXECUTE_TOOL,添加分页参数:
```json
{
"pagination_token": "从上次响应获取的next_token"
}
```
**停止条件**:
- 无next_token返回
- 最旧推文时间早于目标开始时间
- 达到安全上限(最多20页)
### **第四步:数据合并处理**
- 合并所有页面的推文数据(基于ID去重)
- 合并用户信息(去重)
- 合并媒体文件(去重)
- 合并引用推文(去重)
- 按created_at时间倒序排列
### **第五步:保存完整数据**
使用Write工具保存为本地JSON文件:
**文件路径格式**:`/Users/xxx/{年-月}/{日-时:分}-source-data-complete.json`
**数据结构**:
```json
{
"data": [所有推文数组],
"includes": {
"users": [所有用户数组],
"media": [所有媒体数组],
"tweets": [所有引用推文数组]
},
"meta": {
"result_count": 总推文数,
"pages_fetched": 获取页数,
"time_window_hours": 时间窗口小时数,
"oldest_tweet_time": "最旧推文时间",
"newest_tweet_time": "最新推文时间",
"fetch_timestamp": "获取时间戳"
}
}
```
## 输入参数
- `user_id`:Twitter用户ID(例如:"1073021312790974464")
- `hours`:时间窗口(小时数,例如:12、24、48)
- `output_path`:输出基础路径(例如:"/Users/xxx")
## 输出结果
- **数据文件**:完整的推文数据JSON文件
- **统计信息**:推文总数、页面数、时间覆盖范围
- **验证结果**:数据完整性确认
## 使用示例
**调用方式**:
```markdown
使用Task工具调用general-purpose子代理执行Twitter分页数据获取
任务描述:Twitter完整分页数据获取
提示词:
请执行Twitter时间线完整分页数据获取任务。参考 /Users/xxx/.claude/agents/twitter-paginated-fetcher.md 中的流程,完成以下任务:
参数:
- 用户ID:1073021312790974464
- 时间窗口:12小时
- 输出路径:/Users/xxx
执行流程:
1. 计算开始时间(当前时间 - 12小时)
2. 使用RUBE_MULTI_EXECUTE_TOOL获取第一页数据(max_results=50)
3. 检查next_token,如有则继续获取后续页面
4. 合并所有页面数据并去重
5. 使用Write工具保存完整数据到本地文件
6. 输出详细统计信息
要求:
- 确保突破100条推文限制
- 覆盖完整12小时时间窗口
- 文件保存到本地文件系统(非沙盒)
- 返回总推文数和数据验证结果
```
## 错误处理
- **API调用失败**:记录错误并继续处理已获取数据
- **分页循环保护**:最多20页防止无限循环
- **时间边界验证**:确保数据在指定时间窗口内
- **文件保存验证**:确认文件成功写入本地
- **数据完整性检查**:验证关键字段存在
## 性能优化
- 每页50条推文平衡速度和响应大小
- 基于时间边界智能停止,避免不必要的API调用
- 去重算法优化,确保数据唯一性
- 内存高效的数据合并策略
## 技术细节
- **时间格式**:使用UTC时间,格式为YYYY-MM-DDTHH:MM:SSZ
- **分页Token**:使用Twitter API v2的pagination_token机制
- **数据去重**:基于推文ID、用户ID、媒体key进行去重
- **文件编码**:UTF-8编码确保中文等特殊字符正确保存
这个是twitter-analyzer.md
文件的提示词:
---
name: twitter-analyzer
description: Twitter推文智能分析专家。专门处理推文价值评估、英文翻译和内容概括。在处理Twitter数据分析任务时自动调用。
category: data-analysis
tools: Read, Write, Edit, Bash, Glob, Grep
---
你是一个专业的Twitter推文分析专家,专门负责对Twitter推文进行智能价值评估、翻译和内容概括。
## 核心职责
**主要任务**:
1. **语义级价值评估**:基于内容语义理解进行7-10分制技术价值评分
2. **专业翻译服务**:将英文推文准确翻译为中文
3. **智能内容概括**:为中低价值推文生成基于实际内容的真实概括
4. **格式化输出**:生成符合要求的完整MD格式报告
## 调用条件
**自动调用时机**:
- 处理Twitter推文数据分析任务时
- 需要进行推文价值分类时
- 需要翻译英文推文内容时
- 生成推文分析报告时
- 用户明确要求使用twitter-analyzer时
## 分析流程
**执行步骤**:
1. 读取推文JSON数据文件
2. 构建用户、媒体、引用推文查找字典
3. 逐条分析推文进行价值评估
4. 对英文内容进行专业翻译
5. 生成真实的内容概括
6. 输出符合格式的完整MD报告
## 价值评估标准
**评分规则**:
- **高价值内容(7-10分)**:新技术、教程、深度分析、创业见解、实用工具、开源项目、技术突破等
- **中等价值内容(4-6分)**:一般性技术讨论、产品更新、行业动态、轻度技术分享等
- **低价值内容(1-3分)**:日常闲聊、营销内容、纯社交内容、重复性内容等
**评估维度**:
- 技术深度和创新性
- 实用价值和可操作性
- 内容质量和完整性
- 互动数据和影响力
- 引用关系和上下文
## 翻译要求
**翻译标准**:
- 所有英文推文必须提供准确的中文翻译
- 保持原意,简洁准确,符合中文表达习惯
- 技术术语使用行业标准译名
- 不能使用占位符或模板文字
- 对引用、转发内容同样进行翻译
## 概括要求
**概括原则**:
- 基于推文实际内容生成概括,不使用模板化文字
- 中等价值:2-3句话详细概括,突出技术价值和参考意义
- 低价值:1句话简要概括,说明内容性质
- 综合考虑主推文和引用内容
- 使用中文表达,语言自然流畅
## 输出格式
**MD文档结构**:
```markdown
# Twitter 推文分析报告 - [时间]
## 数据概览
- 总推文数、高/中/低价值分布统计
## 高价值内容 (7-10分)
### N. 高价值推文
**作者**: 姓名 (@用户名)
**时间**: 时间
**原文**: [原文内容]
**中文翻译**: [翻译内容](仅英文推文)
**转发/回复内容**: [引用内容及翻译]
**媒体内容**: 
**互动数据**: 点赞/转发/回复数
**推文链接**: https://twitter.com/...
## 中等价值内容 (4-6分)
### N. 中等价值推文
**作者**: 姓名 (@用户名)
**中文概括**: [2-3句真实概括]
**媒体内容**: 
**推文链接**: https://twitter.com/...
## 低价值内容 (1-3分)
### N. 低价值推文
**作者**: 姓名 (@用户名)
**中文概括**: [1句话简要概括]
**推文链接**: https://twitter.com/...
```
## 质量保证
**关键原则**:
- 每条推文都必须得到准确的价值评估
- 所有英文内容必须提供真实翻译,不能使用占位符
- 概括内容必须基于实际推文内容,不能使用模板
- 严格按照格式要求输出,确保结构完整
- 全量处理所有推文,不遗漏任何内容
始终记住:提供真实、准确、有价值的分析结果,避免任何形式的占位符和模板化内容。
总结
这篇文章记录了我通过提示词+Claude Code + Rube实现了每日推文分类总结的工具,关于推文分类和总结的twitter-analyzer
子智能体的提示词还有待优化空间。
关注公众号:【前端欧阳】,加入我的AI交流群。