🚀 30 天的研究,30 秒的结果。8 大平台。零过时信息。 last30days-cn 是一个 AI Agent 技能(Skill),能够自动搜索中国互联网 8 大主流平台最近 30 天的内容,综合分析后生成有据可查的研究报告。 🔗 本项目基于 mvanhorn/last30days-skill 进行深度本土化改造,完全面向中国用户和中文互联网平台。 🕷️ v2.0 集成 MediaCrawler 爬虫引擎思路,大幅减少 API Key 依赖。v2.1 修复百度/小红书反爬问题,XHR 拦截替代 DOM
> /plugin marketplace add Jesseovo/last30days-skill-cn> /plugin install last30days-cn@last30days-skill-cn
Repo: Jesseovo/last30days-skill-cn
What's inside
🚀 30 天的研究,30 秒的结果。8 大平台。零过时信息。
last30days-cn 是一个 AI Agent 技能(Skill),能够自动搜索中国互联网 8 大主流平台最近 30 天的内容,综合分析后生成有据可查的研究报告。
🔗 本项目基于 mvanhorn/last30days-skill 进行深度本土化改造,完全面向中国用户和中文互联网平台。
🕷️ v2.0 集成 MediaCrawler 爬虫引擎思路,大幅减少 API Key 依赖。v2.1 修复百度/小红书反爬问题,XHR 拦截替代 DOM 解析,Bing 兜底搜索,已移除无效的 ScrapeCreators 小红书集成。
当前版本:v3.2.0
👤 作者 / Author: Jesse (@Jesseovo)
search/recommend 联想词的问题:不再把 sug_items 当成笔记,而是按响应中的笔记卡片识别结果,并在必要时主动提交搜索框。LAST30DAYS_BROWSER_PATH 使用本机仍受系统支持的 Chromium/Chrome,也可用 LAST30DAYS_DISABLE_BROWSER=1 完全关闭浏览器并使用公开 API/搜索兜底。--diagnose 现在会显示浏览器模式、外部浏览器路径和路径是否存在,便于排查旧 macOS 的浏览器二进制兼容性。v3.2.0,根目录脚本与 Agent Skills 安装载荷继续由 payload 检查保持同步。jieba 变为可选增强,skill 可零硬依赖运行。skills/last30days 现在是可独立安装的运行载荷。last30days.py,根目录和 Skill 载荷保持同名结构。--emit html 和 --emit html-path,可生成离线可打开的 report.html。skills/last30days/SKILL.md 损坏 symlink 导致的 npx 安装失败(见 issue #10)。--as-of 历史回溯、跨平台聚合热点、LAST30DAYS_DEFAULT_SEARCH/EXCLUDE_SOURCES 配置开关、诚实 --diagnose(实时探测)、HTML 报告 XSS 加固。scripts/ 继续保留,方便本地开发和旧路径调用;Agent Skills 安装使用 skills/last30days/scripts 下的自包含载荷。本次发布前已完成以下质检:
v3.2.0,没有额外 v3 派生 tag。last30days.py 单入口,没有额外入口文件。python -m pytest tests -q,共 214 passed。py scripts/last30days.py --diagnose 与 py skills/last30days/scripts/last30days.py --diagnose 均可正常输出平台可用性诊断。请务必仔细阅读以下内容。使用本项目即表示您同意以下所有条款。
💡 爬虫违法违规的案例频发,请务必合法合规使用。 参考:中国爬虫相关法律案例汇总
| 特性 | v1.0 | v2.0 |
|---|---|---|
| 免费可用平台数 | 4 个 | 7 个(安装 Playwright 后) |
| 需要 API Key 的平台 | 微博、小红书、抖音、微信 | 仅微信(其余可用爬虫替代) |
| 数据获取方式 | 仅 API + 公开接口 | API + 爬虫引擎 + 公开接口 |
| 安装难度 | 需配置多个 API Key | pip install playwright 即可 |
| marketplace.json | 缺少 owner 字段(Bug) | ✅ 已修复 |
| 平台 | 模块 | 数据获取方式 | 需要配置 |
|---|---|---|---|
| 🔴 微博 | weibo.py | API / 🕷️爬虫 / 公开接口 | ✅ 爬虫模式无需配置 |
| 📕 小红书 | xiaohongshu.py | API / 🕷️爬虫 / 公开接口 / Bing 兜底 | ✅ 爬虫模式无需配置 |
| 📺 B站 | bilibili.py | 公开 API / 🕷️爬虫备用 | ✅ 无需配置 |
| 💬 知乎 | zhihu.py | 公开搜索 / 🕷️爬虫备用 | ✅ 无需配置 |
| 🎵 抖音 | douyin.py | API / 🕷️爬虫 / 公开接口 / 搜索兜底 | ✅ 爬虫模式无需配置 |
| 💚 微信 | wechat.py | API / 搜狗搜索 | WECHAT_API_KEY(可选) |
| 🔵 百度 | baidu.py | 公开搜索 / API | ✅ 基础搜索无需配置 |
| 📰 头条 | toutiao.py | 公开接口 / 搜索兜底 | ✅ 无需配置 |
🕷️ = 可选的 Playwright 浏览器模式(
pip install playwright && playwright install chromium);旧系统可使用LAST30DAYS_BROWSER_PATH或直接走公开搜索兜底。
npx skills add Jesseovo/last30days-skill-cn -g
将项目克隆到 Cursor 技能目录:
git clone https://github.com/Jesseovo/last30days-skill-cn.git
然后在 Cursor 中将 SKILL.md 添加为项目技能。
# 方式一:通过 Agent Skills 安装(推荐)
npx skills add Jesseovo/last30days-skill-cn -g
# 方式二:手动安装
git clone https://github.com/Jesseovo/last30days-skill-cn.git ~/.claude/skills/last30days-cn
git clone https://github.com/Jesseovo/last30days-skill-cn.git ~/.agents/skills/last30days-cn
git clone https://github.com/Jesseovo/last30days-skill-cn.git
# 在 Gemini CLI 中作为扩展加载
任何支持 Bash / Read / Write 工具的 AI Agent 都可以使用本技能。
python -m pip install jieba
jieba不是硬依赖;未安装时会自动使用 CJK bigram 回退分词,仍可运行。
python -m pip install playwright
python -m playwright install chromium
安装 Playwright 后,微博、小红书、抖音、B站(备用)、知乎(备用)均可无需 API Key 使用。
Playwright 管理的 Chromium 会随版本提高系统要求。macOS Catalina 等旧系统无法启动新版浏览器时,不需要放弃整个 skill:
export LAST30DAYS_BROWSER_PATH="/Applications/Chromium.app/Contents/MacOS/Chromium"
python scripts/last30days.py --diagnose
也可以使用已安装的 Chrome channel:
export LAST30DAYS_BROWSER_CHANNEL=chrome
若希望强制跳过所有浏览器调用:
export LAST30DAYS_DISABLE_BROWSER=1
python scripts/last30days.py "AI 工具" --search weibo,xiaohongshu,bilibili,zhihu,douyin,baidu,toutiao
LAST30DAYS_BROWSER_PATH 必须指向旧系统实际能够启动的浏览器;skill 不会下载或升级系统浏览器。浏览器爬虫仍受平台登录态、验证码和接口改版影响,小红书的 search/recommend 联想词不会被计入搜索结果。
如果您希望使用 API 模式获取更稳定的数据,或需要使用微信公众号搜索:
mkdir -p ~/.config/last30days-cn
touch ~/.config/last30days-cn/.env
chmod 600 ~/.config/last30days-cn/.env
Windows(PowerShell)等价: 创建目录与空配置文件可用 New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.config\last30days-cn" 与 New-Item -ItemType File -Path "$env:USERPROFILE\.config\last30days-cn\.env" -Force。限制 .env 仅当前用户可读写可近似使用 icacls "$env:USERPROFILE\.config\last30days-cn\.env" /inheritance:r /grant:r "$($env:USERNAME):(R,W)"(与 Unix chmod 600 意图相近,权限模型不同)。
编辑 ~/.config/last30days-cn/.env,按需填入 API Key:
# ============================================
# last30days-cn v2.0 配置文件
# ============================================
# 📌 说明:所有 API Key 均为可选
# 安装 Playwright 后,大部分平台已可通过爬虫模式使用
# API Key 提供更稳定的数据获取方式
# ============================================
# 🔴 微博开放平台(可选,已有爬虫模式替代)
# 获取方式: https://open.weibo.com → 创建应用 → 获取 Access Token
WEIBO_ACCESS_TOKEN=
# 📕 小红书(可选,已有爬虫模式替代)
# 获取方式: https://scrapecreators.com → 注册 → 获取 API Key
SCRAPECREATORS_API_KEY=
# 💬 知乎 Cookie(可选,增强搜索质量)
# 获取方式: 浏览器登录知乎 → F12 → Network → 复制 Cookie 值
ZHIHU_COOKIE=
# 🎵 抖音(可选,已有爬虫模式替代)
# 获取方式: https://tikhub.io → 注册 → 获取 API Key
TIKHUB_API_KEY=
# 💚 微信公众号搜索(目前无爬虫替代,需 API Key 才能使用)
# 获取方式: 使用第三方微信搜索 API 服务商
WECHAT_API_KEY=
# 🔵 百度搜索 API(可选,公开搜索已可用)
# 获取方式: https://cloud.baidu.com → 搜索服务 → 创建应用
BAIDU_API_KEY=
BAIDU_SECRET_KEY=
python scripts/last30days.py --diagnose
将输出各平台的可用状态和爬虫引擎状态:
{
"weibo": true,
"xiaohongshu": false,
"bilibili": true,
"zhihu": true,
"douyin": true,
"wechat": false,
"baidu_api": false,
"toutiao": true,
"crawler_engine": {
"playwright_available": true,
"cached_logins": [],
"note": "安装 Playwright 后,微博/小红书/抖音/B站/知乎可无需 API Key 使用爬虫模式"
},
"note_douyin_toutiao": "抖音/头条原生接口需签名参数,常被风控;接口失败时改用公开搜索引擎兜底,仅能拿到公开链接,无真实互动数据与精确日期。"
}
python scripts/last30days.py "AI编程助手" --emit compact
python scripts/last30days.py "AI编程助手" --emit html-path
| 参数 | 说明 | 示例 |
|---|---|---|
--emit | 输出模式 | compact / json / md / context / path / html / html-path |
--quick | 快速搜索 | 更少数据源,更快速度 |
--deep | 深度搜索 | 更多数据源,更全面 |
--days N | 回溯天数 | --days 7(最近一周) |
--as-of | 历史回溯终点日期 | --as-of 2026-05-01(以该日为终点回溯 N 天) |
--search | 指定搜索源 | --search weibo,bilibili,zhihu |
--diagnose | 诊断配置 | 显示各平台可用状态 |
--timeout SECS | 全局超时秒数 | 覆盖默认全局超时 |
--save-dir DIR | 自动保存原始输出目录 | 将原始输出写入指定目录 |
--debug | 调试模式 | 输出详细日志 |
🔧 环境变量:未指定
--search时,回退到LAST30DAYS_DEFAULT_SEARCH(逗号分隔的默认源集);EXCLUDE_SOURCES可从启用集合中排除指定源。
# 🔍 搜索 AI 相关话题
python scripts/last30days.py "最新AI工具" --emit compact
# ⚡ 快速搜索,仅 B站和知乎
python scripts/last30days.py "Python教程" --quick --search bilibili,zhihu
# 📊 深度搜索并保存结果
python scripts/last30days.py "新能源汽车" --deep --save-dir ~/Documents/research
# 📋 输出 JSON 格式(适合程序处理)
python scripts/last30days.py "ChatGPT替代品" --emit json
# 🗓️ 仅搜索最近 7 天
python scripts/last30days.py "热门话题" --days 7
# 🧾 生成可离线打开的 HTML 报告
python scripts/last30days.py "具身智能" --deep --emit html-path
v2.0 采用三级自动降级策略,确保最大可用性:
优先级 1: API 模式(如配置了 API Key)
↓ 失败或未配置
优先级 2: 爬虫模式(MediaCrawler,需要 Playwright)
↓ 失败或未安装
优先级 3: 公开接口(HTTP 直接请求,无需任何配置)
↓ 仍无结果(抖音/头条/小红书/知乎)
兜底: 公开搜索引擎(Bing site: 搜索,获取公开链接)
| 平台 | API 模式 | 爬虫模式 | 公开接口 | 搜索兜底 |
|---|---|---|---|---|
| 微博 | WEIBO_ACCESS_TOKEN | ✅ Playwright | ✅ m.weibo.cn | - |
| 小红书 | MCP HTTP API(可选) | ✅ Playwright (笔记 payload 识别) | ⚠️ 命中率低 | ✅ Bing |
| B站 | - | ✅ Playwright(备用) | ✅ 公开 API | - |
| 知乎 | ZHIHU_COOKIE(增强) | ✅ Playwright(备用) | ✅ 公开搜索 | ✅ Bing |
| 抖音 | TIKHUB_API_KEY | ✅ Playwright | ⚠️ 需签名 | ✅ Bing |
| 微信 | WECHAT_API_KEY | - | ✅ 搜狗搜索 | - |
| 百度 | BAIDU_API_KEY | - | ⚠️ 公开搜索可能被拦截 | ✅ Bing |
| 头条 | - | - | ⚠️ 需签名 | ✅ Bing |
⚠️ 抖音/头条原生 web 接口现在强制要求签名参数(
a_bogus/_signature),常被风控。接口失败时改用公开搜索引擎兜底,只能拿到公开链接,无真实互动数据与精确日期。
last30days-skill-cn/
├── 📄 SKILL.md # Agent 技能定义文件
├── 📄 README.md # 项目说明(中文,本文件)
├── 📄 README.en.md # 项目说明(English)
├── 📄 LICENSE # MIT 许可证
├── 📄 requirements.txt # Python 依赖
├── 📁 assets/ # README 配图
├── 📁 scripts/
│ ├── 🐍 last30days.py # 中文主入口 CLI
│ └── 📁 lib/
│ ├── crawler_bridge.py # 🆕 MediaCrawler 爬虫桥接模块
│ ├── weibo.py # 微博搜索模块
│ ├── xiaohongshu.py # 小红书搜索模块
│ ├── bilibili.py # B站搜索模块
│ ├── zhihu.py # 知乎搜索模块
│ ├── douyin.py # 抖音搜索模块
│ ├── wechat.py # 微信公众号模块
│ ├── baidu.py # 百度搜索模块
│ ├── toutiao.py # 今日头条模块
│ ├── schema.py # 数据结构定义
│ ├── score.py # 评分系统
│ ├── normalize.py # 数据标准化
│ ├── dedupe.py # 去重
│ ├── render.py # 输出渲染
│ ├── relevance.py # 相关性计算
│ ├── query.py # 查询预处理
│ ├── query_type.py # 查询类型检测
│ ├── entity_extract.py # 实体抽取
│ ├── env.py # 环境配置管理
│ ├── cache.py # 缓存管理
│ ├── dates.py # 日期工具
│ ├── http.py # HTTP 客户端
│ ├── ui.py # 终端 UI
│ └── setup_wizard.py # 配置向导
├── 📁 skills/
│ └── 📁 last30days/ # Agent Skills 自包含运行载荷
│ ├── 📄 SKILL.md # 安装后供 Agent 读取的技能说明
│ └── 📁 scripts/
│ ├── 🐍 last30days.py
│ └── 📁 lib/ # 与根目录脚本同步的运行依赖
├── 📁 fixtures/ # 示例数据
├── 📁 tests/ # 测试用例
└── 📁 hooks/ # Agent 钩子
每条搜索结果的综合评分(0-100)基于:
| 维度 | 权重 | 说明 |
|---|---|---|
| 🎯 相关性 | 45% | 与查询主题的文本匹配度 |
| 🕐 时效性 | 25% | 内容发布时间的新鲜程度 |
| 🔥 互动度 | 30% | 各平台互动指标(见下表) |
| 平台 | 互动指标 |
|---|---|
| 微博 | 转发 + 评论 + 点赞 |
| 小红书 | 点赞 + 收藏 + 评论 + 分享 |
| B站 | 播放 + 弹幕 + 评论 + 投币 + 收藏 |
| 知乎 | 赞同 + 评论 + 收藏 |
| 抖音 | 点赞 + 评论 + 分享 + 播放 |
| 头条 | 评论 + 阅读 + 点赞 |
本项目基于 MIT License 发布。
.claude-plugin/
marketplace.json
plugin.json
.clawhubignore
.github/
workflows/
ci.yml
.gitignore
agents/
openai.yaml
assets/
banner.png
CLAUDE.md
fixtures/
bilibili_sample.json
weibo_sample.json
zhihu_sample.json
gemini-extension.json
hooks/
hooks.json
scripts/
check-config.sh
LICENSE
README.en.md
README.md
release-notes.md
requirements.txt
scripts/
build_payload.py
last30days.py
lib/
__init__.py
baidu.py
bilibili.py
cache.py
cjk.py
cluster.py
crawler_bridge.py
dates.py
dedupe.py
doctor.py
douyin.py
env.py
http.py
normalize.py
query_type.py
query.py
relevance.py
render.py
schema.py
score.py
setup_wizard.py
toutiao.py
version.py
wechat.py
weibo.py
xiaohongshu.py
zhihu.py
sync.sh
SKILL.md
skills/
last30days/
scripts/
build_payload.py
last30days.py
lib/
__init__.py
baidu.py
bilibili.py
cache.py
cjk.py
cluster.py
crawler_bridge.py
dates.py
dedupe.py
doctor.py
douyin.py
env.py
http.py
normalize.py
query_type.py
query.py
relevance.py
render.py
schema.py
score.py
setup_wizard.py
toutiao.py
version.py
wechat.py
weibo.py
xiaohongshu.py
zhihu.py
sync.sh
SKILL.md
SPEC.md
TASKS.md
tests/
__init__.py
test_baidu_antibot.py
test_cache.py
test_cjk.py
test_cluster.py
test_crawler_bridge.py
test_dates.py
test_dedupe.py
test_doctor.py
test_env_sources.py
test_html_render.py
test_http.py
test_normalize.py
test_query_type.py
test_query.py
test_relevance.py
test_render_wechat.py
test_render_xss.py
test_score.py
test_search_fallbacks.py
test_skill_payload.py
test_version.pyFAQ
last30days-cn is a Claude Code plugin with 1 hand-picked skill for data work, indexed on Flowy. Install it with the command on its page. It includes last30days. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.