你有没有过这样的时刻——
想了解某个技术话题的最新动态,打开 Reddit 刷了半小时,全是噪音;转到 X(Twitter)看看大佬们在说什么,信息流已经被算法喂饱;去 Hacker News 翻翻,发现三天前的帖子已经沉底。
等你终于找到几条有价值的内容,已经过去了一个小时。而你还什么都没记住。
更讽刺的是,这些平台的搜索功能几乎形同虚设:
- Reddit 搜索:「related posts」永远不是你要找的
- X 搜索:不登录不让用,登录了又被算法绑架
- Hacker News:时间线是线性的,过了三天就再找不到
- YouTube:只能搜视频标题,评论区的金矿完全浪费
- TikTok/Instagram:这类平台根本就没有有效的「历史搜索」
这就是 2026 年的信息困境:数据在爆炸,但我们越来越「健忘」。
因为真正有价值的讨论,从来不在官方文档里,而是在这些社区的角落——某条高赞评论、某个技术大牛的随手吐槽、某个真实用户踩过的坑。
而 last30days-skill,就是要解决这个问题。
last30days-skill 是一个专为 AI 终端(如 Claude Code、Gemini CLI)设计的扩展插件,它的核心功能非常聚焦:
跨平台抓取全网过去 30 天内,真实社区里关于某个话题的高质量讨论,并直接给你出一份带真实源链接的总结报告。
一句话概括:它是 AI 终端的「外置大脑」。
- GitHub Stars:10.2K+(截至 2026 年 4 月)
- 开发语言:纯 Python
- 支持平台:Reddit、X(Twitter)、YouTube、Hacker News、Polymarket、Bluesky、TikTok、Instagram
- 默认免费平台:Reddit、Hacker News、Polymarket
- 需配置 API 平台:X、YouTube、Bluesky、TikTok、Instagram
用户输入 → AI 终端 → last30days-skill → 多平台爬取 → 数据清洗 → 智能总结 → 输出报告
具体流程:
- 指令触发:在 Claude Code 中输入
/last30days [话题] - 多平台并行爬取:同时向 Reddit、HN、X 等平台发起查询
- 时间窗口过滤:只保留过去 30 天的内容
- 相关性排序:基于讨论热度、点赞数、评论质量综合排序
- AI 合成总结:不是简单拼接,而是真正理解后的结构化输出
- 源链接溯源:每条结论都附带原始链接,可追溯验证
市面上的「信息聚合工具」很多,但大多数都有这些毛病:
last30days-skill 的独特之处:
- 主动查询,而非被动推送——你问什么,它就搜什么
- 跨平台统一检索——不用分别打开 Reddit、HN、X
- 时间窗口精确——过去 30 天,既不过时也不太旧
- 真实社区讨论——不是新闻稿,是真实用户的踩坑经验
- AI 智能总结——不是关键词堆砌,是结构化洞察
- 源链接可追溯——每条结论都有出处
这不是一个独立的 Web 应用,而是 AI 终端的扩展。
这意味着:
- 你不需要切换窗口,直接在 Claude Code 里用
- 搜索结果可以被后续对话继续深挖
- 可以和其他 AI 能力组合使用(如代码生成、文档撰写)
举个例子:
你:/last30days Claude Code 新特性
[last30days-skill 返回过去30天社区讨论总结]
你:根据这些讨论,帮我总结 Claude Code 最近三个版本的更新重点
[AI 基于搜索结果生成结构化总结]
你:写一篇博客介绍这些新特性
[AI 直接生成文章草稿]
这就是「AI 原生」工作流——搜索不再是独立的动作,而是创作链条的一环。
从技术角度看,last30days-skill 有几个亮点:
3.3.1 多平台 API 适配
# 核心架构示意(简化版) class PlatformAdapter:
"""平台适配器基类""" def __init__(self, api_key: str = None): self.api_key = api_key def search(self, query: str, days: int = 30) -> List[Post]: raise NotImplementedError
class RedditAdapter(PlatformAdapter):
"""Reddit 适配器""" def search(self, query: str, days: int = 30) -> List[Post]: # 使用 Reddit API 搜索 # 支持按相关性、热度、时间排序 pass
class XAdapter(PlatformAdapter):
"""X (Twitter) 适配器""" def search(self, query: str, days: int = 30) -> List[Post]: # 需要 API Key # 支持高级搜索语法 pass
class HackerNewsAdapter(PlatformAdapter):
"""HN 适配器""" def search(self, query: str, days: int = 30) -> List[Post]: # 使用 Algolia HN API # 支持按 points、comments 排序 pass
每个平台都有独立的适配器,遵循统一的接口规范。新增平台只需实现 search 方法。
3.3.2 时间窗口过滤
def filter_by_time(posts: List[Post], days: int = 30) -> List[Post]:
"""时间窗口过滤""" cutoff = datetime.now() - timedelta(days=days) return [p for p in posts if p.created_at >= cutoff]
简单但有效——只保留过去 30 天的内容。
为什么是 30 天?因为:
- 太短(如 7 天):信息量不够,错过重要讨论
- 太长(如 90 天):信息过时,参考价值下降
- 30 天:刚好是一个「信息新鲜度」的黄金窗口
3.3.3 相关性排序算法
def rank_posts(posts: List[Post]) -> List[Post]:
"""基于多维度打分排序""" scored_posts = [] for post in posts: # 综合得分 = 热度 + 相关性 + 时效性 score = ( post.upvotes * 0.3 + # 点赞权重 post.comments * 0.2 + # 评论权重 post.relevance_score * 0.3 + # 文本相关性 recency_boost(post) * 0.2 # 时效性加成 ) scored_posts.append((score, post)) return [p for _, p in sorted(scored_posts, reverse=True)]
不是简单按时间或热度排序,而是多维度综合打分。
3.3.4 AI 总结生成
def generate_summary(posts: List[Post], topic: str) -> str:
"""AI 生成结构化总结""" # 1. 提取关键信息 key_points = extract_key_points(posts) # 2. 聚类分组 clusters = cluster_by_topic(key_points) # 3. 生成结构化报告 report = f"""
过去30天「{topic}」社区讨论总结
核心观点
{generate_bullet_points(clusters[‘main’])}
热议话题
{generate_discussion_topics(clusters[‘hot’])}
踩坑经验
{generate_pitfalls(clusters[‘pitfalls’])}
推荐资源
{generate_resources(clusters[‘resources’])}
> 数据来源:{len(posts)} 条社区讨论,时间范围:过去30天 """
return report
最终的输出不是流水账,而是结构化的洞察报告。
方法一:Claude Code Skills 目录安装
# 克隆仓库到 Claude Code skills 目录 cd ~/.claude/skills git clone https://github.com/mvanhorn/last30days-skill.git
安装依赖
cd last30days-skill pip install -r requirements.txt
方法二:通过 SkillHub 安装(推荐)
# 如果你已经安装了 SkillHub CLI skillhub install last30days-skill
默认情况下,Reddit、Hacker News、Polymarket 可以直接使用。
如果要解锁 X、YouTube、TikTok 等平台,需要配置相应的 API Key:
# 创建配置文件 mkdir -p ~/.config/last30days-skill cat > ~/.config/last30days-skill/config.json << EOF { "twitter": {
"bearer_token": "your-twitter-bearer-token"
}, "youtube": {
"api_key": "your-youtube-api-key"
}, "tiktok": {
"api_key": "your-tiktok-api-key"
}, "instagram": {
"access_token": "your-instagram-access-token"
}, "bluesky": {
"handle": "your-handle.bsky.social", "password": "your-app-password"
} } EOF
在 Claude Code 中:
/last30days React 19 新特性
等待几秒钟,你会看到类似这样的输出:
# 过去30天「React 19 新特性」社区讨论总结
核心更新
1. Server Components 正式稳定
- Reddit r/reactjs 讨论热度:🔥🔥🔥
- 核心观点:性能提升明显,但迁移成本较高
- 踩坑:某些第三方库还不兼容
2. use() Hook 引入
- Hacker News 讨论:247 points
- 用法:可以在条件语句中调用,比 useEffect 更灵活
- 示例代码:[链接]
3. 并发渲染优化
- X 上 Dan Abramov 的解读:[链接]
- 实测数据:首屏加载提速 40%
热议话题
- 「是否应该全面迁移到 Server Components?」
- 正方:性能收益明显
- 反方:生态还不成熟,踩坑成本高
- 「use() Hook 是否会取代 useEffect?」
- 社区共识:不会,两者适用场景不同
踩坑经验
- 某些 UI 库在 React 19 下会报错(如 Material-UI 的部分组件)
- Server Components 与 Client Components 的边界划分是难点
推荐资源
- React 19 官方迁移指南
- Reddit 热帖:我的 React 19 迁移血泪史
组合查询
/last30days "Claude Code" AND "**实践"排除噪音
/last30days Python 性能优化 NOT asyncio指定平台
/last30days Go 泛型 –platforms reddit,hn场景:你要在团队引入一个新技术栈,但不确定是否成熟。
传统做法:
- 看官方文档(永远是「很好用」)
- 搜几篇博客(可能是软文)
- 问几个朋友(样本太小)
last30days-skill 做法:
/last30days Bun.js 生产环境踩坑你会看到:
- 真实用户在生产环境遇到的问题
- 还没被官方文档记录的 edge case
- 社区公认的「**实践」
决策依据从「听谁说的」变成了「社区共识是什么」。
场景:你想写一篇技术文章,但不知道大家关心什么。
传统做法:
- 刷 GitHub Trending(可能已经过热了)
- 看技术媒体(可能是「造热点」)
- 凭感觉写(可能没人看)
last30days-skill 做法:
/last30days Rust Web 框架你会看到:
- 最近 30 天最热的话题是什么
- 大家在争论什么
- 哪些痛点还没被解决
选题从「猜」变成了「数据驱动」。
场景:你想了解用户对项目的真实反馈。
传统做法:
- 看 GitHub Issues(只有主动反馈的人)
- 看 Discord 社区(用户可能不在那里)
- 等用户来抱怨(已经晚了)
last30days-skill 做法:
/last30days 你的项目名你会看到:
- 用户在 Reddit/HN/X 上怎么说你的项目
- 哪些功能被吐槽最多
- 哪些竞品被频繁对比
反馈收集从「被动等待」变成了「主动挖掘」。
场景:你要准备面试,想知道某个公司的真实情况。
传统做法:
- 看公司官网(全是正面信息)
- 看知乎/脉脉(信息杂乱)
- 问熟人(样本有限)
last30days-skill 做法:
/last30days 某某公司 工作体验你会看到:
- 员工/前员工在社交平台的真实分享
- 面试经验总结
- 行业内对公司的评价
信息从「精心包装」变成了「真实声音」。
last30days-skill 采用了经典的插件化架构:
┌─────────────────────────────────────────────────┐ │ AI Terminal (Claude Code) │ └─────────────────────┬───────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ last30days-skill Core │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ Query Parser │ │ Summarizer │ │ │ └──────────────┘ └──────────────┘ │ └─────────────────────┬───────────────────────────┘ │ ┌─────────────┼─────────────┐ ▼ ▼ ▼ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ Reddit │ │ HackerNews│ │ X/Twitter │ │ Adapter │ │ Adapter │ │ Adapter │ └───────────┘ └───────────┘ └───────────┘ │ │ │ ▼ ▼ ▼ Reddit API HN Algolia Twitter API这种设计的好处:
- 易于扩展:新增平台只需实现 Adapter 接口
- 解耦清晰:核心逻辑与平台细节分离
- 容错性强:某个平台挂了不影响其他平台
# 完整数据流(简化版)
def last30days_search(topic: str, platforms: List[str] = None):
# 1. 解析查询 query = parse_query(topic) # 2. 并行调用各平台 all_posts = [] with ThreadPoolExecutor() as executor: futures = [] for platform in platforms or DEFAULT_PLATFORMS: adapter = get_adapter(platform) futures.append(executor.submit(adapter.search, query)) for future in as_completed(futures): try: posts = future.result() all_posts.extend(posts) except Exception as e: log_error(f"Platform {platform} failed: {e}") # 3. 时间过滤 recent_posts = filter_by_time(all_posts, days=30) # 4. 去重 unique_posts = deduplicate(recent_posts) # 5. 相关性排序 ranked_posts = rank_posts(unique_posts) # 6. 生成总结 summary = generate_summary(ranked_posts, topic) return summary
关键点:
- 并行调用:多个平台同时查询,总耗时取决于最慢的平台
- 容错处理:某个平台失败不影响整体结果
- 去重逻辑:同一内容可能出现在多个平台,需要识别并合并
Reddit 适配器
import praw
class RedditAdapter(PlatformAdapter):
def __init__(self): self.reddit = praw.Reddit( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", user_agent="last30days-skill/1.0" ) def search(self, query: str, days: int = 30) -> List[Post]: results = [] cutoff = datetime.now() - timedelta(days=days) # 搜索多个相关 subreddits subreddits = ["programming", "technology", "learnprogramming"] for sub_name in subreddits: subreddit = self.reddit.subreddit(sub_name) for submission in subreddit.search(query, time_filter="month"): if submission.created_utc >= cutoff.timestamp(): results.append(Post( title=submission.title, url=f"https://reddit.com{submission.permalink}", upvotes=submission.score, comments=submission.num_comments, created_at=datetime.fromtimestamp(submission.created_utc), content=submission.selftext, platform="reddit" )) return results
Hacker News 适配器
from algoliasearch.search_client import SearchClient
class HackerNewsAdapter(PlatformAdapter):
def __init__(self): self.client = SearchClient.create("UJ5WYC0L7X", "..." self.index = self.client.init_index("Item") def search(self, query: str, days: int = 30) -> List[Post]: cutoff = int((datetime.now() - timedelta(days=days)).timestamp()) results = self.index.search(query, { "filters": f"created_at_i > {cutoff}", "hitsPerPage": 100 }) posts = [] for hit in results["hits"]: posts.append(Post( title=hit.get("title", ""), url=hit.get("url") or f"https://news.ycombinator.com/item?id={hit['objectID']}", upvotes=hit.get("points", 0), comments=hit.get("num_comments", 0), created_at=datetime.fromtimestamp(hit["created_at_i"]), content=hit.get("story_text", ""), platform="hackernews" )) return posts
6.4.1 缓存策略
from functools import lru_cache import hashlib
@lru_cache(maxsize=100) def cached_search(query_hash: str, platform: str):
"""缓存搜索结果,避免重复调用 API""" adapter = get_adapter(platform) return adapter.search(query_hash)
def search_with_cache(query: str, platform: str):
query_hash = hashlib.md5(query.encode()).hexdigest() return cached_search(query_hash, platform)
6.4.2 限流处理
import time from ratelimit import limits, sleep_and_retry
class RateLimitedAdapter:
"""带限流的适配器基类""" @sleep_and_retry @limits(calls=60, period=60) # 每分钟 60 次 def search(self, query: str): return self._do_search(query)
核心优势:
- 唯一真正覆盖「社区讨论」的工具
- 唯一与 AI 终端深度集成的工具
- 唯一提供「30 天时间窗口」的工具
- API Key 依赖:X、YouTube 等平台需要付费 API
- 语言限制:主要针对英文社区,中文社区覆盖有限
- 平台覆盖:暂未支持 Discord、Telegram 等封闭社区
# 未来可能的增强功能
1. 支持自定义时间窗口
/last30days React 19 –days 7 # 只看最近7天 /last30days React 19 –days 90 # 扩展到90天
2. 支持中文社区
/last30days Vue 3 –platforms zhihu,weibo,v2ex
3. 支持深度分析模式
/last30days Rust async –deep # 生成更详细的分析报告
4. 支持对比模式
/last30days React vs Vue –compare # 对比两个话题的讨论热度
last30days-skill 的价值,不在于它「搜索」了什么,而在于它改变了信息获取的范式:
信息源 → 算法推荐 → 你(被动接收)
你(主动提问)→ 多平台搜索 → AI 总结 → 结构化洞察
从「被算法喂养」到「主动挖掘真相」。
这就是为什么它能在一周内冲上 GitHub Trending,收获 10K+ Stars。
因为它解决了一个真实存在的痛点,而且解决得足够优雅。
一句话总结:
last30days-skill 是 AI 终端的「外置大脑」,让你在几秒钟内掌握过去 30 天全网社区关于任何话题的真实讨论。
它不是搜索引擎,是「信息差粉碎机」。
项目地址:https://github.com/mvanhorn/last30days-skill
安装方式:skillhub install last30days-skill 或克隆到 Claude Code skills 目录
支持平台:Reddit、X、YouTube、Hacker News、Polymarket、Bluesky、TikTok、Instagram
开源协议:MIT License
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/255394.html