📰 last30days-cn — 中国平台深度研究引擎
🚀 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)
✨ v3.2.0 优化内容
-
修复小红书新版搜索页只触发
search/recommend联想词的问题:不再把sug_items当成笔记,而是按响应中的笔记卡片识别结果,并在必要时主动提交搜索框。 -
Playwright 爬虫不再依赖固定的小红书 endpoint;平台改版时只要返回结构仍包含笔记卡片,仍可正常解析。
-
增加旧电脑兼容模式:可通过
LAST30DAYS_BROWSER_PATH使用本机仍受系统支持的 Chromium/Chrome,也可用LAST30DAYS_DISABLE_BROWSER=1完全关闭浏览器并使用公开 API/搜索兜底。 -
--diagnose现在会显示浏览器模式、外部浏览器路径和路径是否存在,便于排查旧 macOS 的浏览器二进制兼容性。 -
版本升级至
v3.2.0,根目录脚本与 Agent Skills 安装载荷继续由 payload 检查保持同步。
✨ v3.1.0 优化内容
-
修复中文平台日期统一按北京时间(CST)归档,避免非北京时间机器上的窗口边界偏移。
-
新增 CJK bigram 回退分词,
jieba变为可选增强,skill 可零硬依赖运行。 -
统一 HTTP 重试退避、Retry-After 解析和 debug URL 脱敏。
-
新增 payload 生成/漂移检查、版本单源、缓存接线和 GitHub Actions CI。
✨ v3.0.0 升级内容
-
追平原版 v3 的 Agent Skills 包结构:
skills/last30days现在是可独立安装的运行载荷。 -
中文 CLI 统一使用单入口
last30days.py,根目录和 Skill 载荷保持同名结构。 -
新增
--emit html和--emit html-path,可生成离线可打开的report.html。 -
HTML 报告融入 op7418/guizang-ppt-skill 的 Swiss/IKB 视觉语言,适合浏览、归档、打印。
-
小红书和知乎搜索增加空结果兜底说明,失败时会标注已尝试路径与可能原因。
-
抖音、头条在原生接口被风控时新增公开搜索引擎兜底,不再静默返回 0 条(见 issue #8)。
-
修复 macOS/Linux 下
skills/last30days/SKILL.md损坏 symlink 导致的npx安装失败(见 issue #10)。 -
对照上游 mvanhorn/last30days-skill 同步若干平台无关能力:
--as-of历史回溯、跨平台聚合热点、LAST30DAYS_DEFAULT_SEARCH/EXCLUDE_SOURCES配置开关、诚实--diagnose(实时探测)、HTML 报告 XSS 加固。 -
根目录
scripts/继续保留,方便本地开发和旧路径调用;Agent Skills 安装使用skills/last30days/scripts下的自包含载荷。
✅ 发布验证
本次发布前已完成以下质检:
-
远端发布 tag 统一为
v3.2.0,没有额外 v3 派生 tag。 -
根目录与 Skill 载荷均统一使用
last30days.py单入口,没有额外入口文件。 -
全量测试通过:
python -m pytest tests -q,共214 passed。 -
根目录入口和 Skill 载荷入口均已验证:
py scripts/last30days.py --diagnose与py skills/last30days/scripts/last30days.py --diagnose均可正常输出平台可用性诊断。
⚠️ 免责声明 / Disclaimer
请务必仔细阅读以下内容。使用本项目即表示您同意以下所有条款。
法律合规声明
-
本项目仅供学习和研究目的。所有爬虫功能仅用于技术学习与研究交流,严禁用于商业用途。
-
使用者必须严格遵守中华人民共和国相关法律法规,包括但不限于:
-
《中华人民共和国网络安全法》
-
《中华人民共和国数据安全法》
-
《中华人民共和国个人信息保护法》
-
《中华人民共和国反不正当竞争法》
-
使用者必须遵守各平台的**服务条款(ToS)**和 robots.txt 规定。
-
禁止将本项目用于以下行为:
-
大规模、高频率地抓取平台数据
-
收集、存储或传播他人个人隐私信息
-
破坏或干扰平台正常运营
-
任何形式的非法数据倒卖或商业牟利
-
对外提供自动化数据采集服务
-
本项目开发者不承担因使用本项目而产生的任何法律责任。用户应自行承担使用本项目的全部法律风险。
-
如有侵权,请联系作者,将在第一时间处理。
技术免责
-
爬虫功能依赖 Playwright 浏览器自动化,模拟正常用户浏览行为,不涉及逆向加密算法或破解安全机制。
-
各平台接口随时可能变更,本项目不保证所有功能始终可用。
-
建议将请求频率控制在合理范围内(如每次搜索间隔 ≥ 5 秒),避免被平台封禁。
💡 爬虫违法违规的案例频发,请务必合法合规使用。 参考:中国爬虫相关法律案例汇总
✨ v2.0 新特性
🆕 v2.0 vs v1.0 对比
特性 v1.0 v2.0
免费可用平台数 4 个 7 个(安装 Playwright 后)
需要 API Key 的平台 微博、小红书、抖音、微信 仅微信(其余可用爬虫替代)
数据获取方式 仅 API + 公开接口 API + 爬虫引擎 + 公开接口
安装难度
需配置多个 API Key
pip install playwright 即可
marketplace.json 缺少 owner 字段(Bug) ✅ 已修复
核心升级
-
集成 MediaCrawler 爬虫引擎 — 基于 Playwright 浏览器自动化,无需逆向加密算法,大幅降低使用门槛
-
7/8 平台零配置可用 — 除微信外,所有平台均可无需 API Key 使用
-
智能降级策略 — API 优先 → 爬虫模式 → 公开接口,三级自动降级
-
修复 Issue #1 — 修复 marketplace.json 缺少 owner 字段导致 Claude Code 安装失败的 bug
-
登录态缓存 — 爬虫模式支持 Cookie 持久化,减少重复登录
📋 平台支持
平台 模块 数据获取方式 需要配置
🔴 微博
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 或直接走公开搜索兜底。
🤖 Agent 平台安装
Agent Skills(推荐)
npx skills add Jesseovo/last30days-skill-cn -g
Cursor(推荐)
将项目克隆到 Cursor 技能目录:
git clone https://github.com/Jesseovo/last30days-skill-cn.git
然后在 Cursor 中将 SKILL.md 添加为项目技能。
Claude Code
# 方式一:通过 Agent Skills 安装(推荐)
npx skills add Jesseovo/last30days-skill-cn -g
# 方式二:手动安装
git clone https://github.com/Jesseovo/last30days-skill-cn.git ~/.claude/skills/last30days-cn
OpenClaw / ClawHub
git clone https://github.com/Jesseovo/last30days-skill-cn.git ~/.agents/skills/last30days-cn
Gemini CLI
git clone https://github.com/Jesseovo/last30days-skill-cn.git
# 在 Gemini CLI 中作为扩展加载
通用 Agent
任何支持 Bash / Read / Write 工具的 AI Agent 都可以使用本技能。
⚙️ 配置指南
📍 第一步:可选增强
python -m pip install jieba
jieba 不是硬依赖;未安装时会自动使用 CJK bigram 回退分词,仍可运行。
📍 第二步:安装爬虫引擎(可选,推荐,可获取 7/8 平台数据)
python -m pip install playwright
python -m playwright install chromium
安装 Playwright 后,微博、小红书、抖音、B站(备用)、知乎(备用)均可无需 API Key 使用。
旧 macOS / 旧电脑兼容模式
Playwright 管理的 Chromium 会随版本提高系统要求。macOS Catalina 等旧系统无法启动新版浏览器时,不需要放弃整个 skill:
-
继续使用公开 API 和 Bing 站内搜索兜底(不安装 Playwright),或安装一份仍支持当前系统的 Chromium/Chrome。
-
将 Playwright 指向本机浏览器可执行文件:
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