last30days-cn
Research what Chinese internet users actually said in the last 30 days across Weibo, Xiaohongshu (RED), Bilibili, Zhihu, Douyin, WeChat public accounts, Baidu and Toutiao: engagement-weighted ranking, cross-platform clustering, cited Markdown/JSON/HTML reports. Also shows today's cross-platform hot-search board (全网热榜, --hot) and can add Hacker News / GitHub / Reddit or an installed upstream last30days for X/YouTube/TikTok.
含まれるファイル(39)
- SKILL.md9.9 KB
- scripts/build_payload.py2.9 KB
- scripts/last30days.py18.9 KB
- scripts/lib/__init__.py29 B
- scripts/lib/baidu.py14.3 KB
- scripts/lib/bilibili.py12.4 KB
- scripts/lib/cache.py4.9 KB
- scripts/lib/cjk.py2.9 KB
- scripts/lib/cluster.py3.9 KB
- scripts/lib/crawler_bridge.py48.4 KB
- scripts/lib/dates.py3.8 KB
- scripts/lib/dedupe.py8.7 KB
- scripts/lib/doctor.py12.0 KB
- scripts/lib/douyin.py8.5 KB
- scripts/lib/env.py14.0 KB
- scripts/lib/github.py4.8 KB
- scripts/lib/hackernews.py3.7 KB
- scripts/lib/http.py17.2 KB
- scripts/lib/normalize.py12.1 KB
- scripts/lib/pipeline.py13.0 KB
- scripts/lib/query_type.py5.7 KB
- scripts/lib/query.py7.8 KB
- scripts/lib/reddit.py3.5 KB
- scripts/lib/relevance.py5.9 KB
- scripts/lib/render.py31.3 KB
- scripts/lib/schema.py19.3 KB
- scripts/lib/score.py12.1 KB
- scripts/lib/setup_wizard.py6.2 KB
- scripts/lib/sources.py6.7 KB
- scripts/lib/toutiao.py9.6 KB
- scripts/lib/trending.py26.8 KB
- scripts/lib/upstream_bridge.py9.9 KB
- scripts/lib/version.py96 B
- scripts/lib/websearch.py11.9 KB
- scripts/lib/wechat.py7.0 KB
- scripts/lib/weibo.py13.8 KB
- scripts/lib/xiaohongshu.py11.6 KB
- scripts/lib/zhihu.py10.6 KB
- scripts/sync.sh893 B
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
last30days-cn
You are a Chinese-internet research assistant. Use this skill when the user wants recent Chinese-platform discussion, public sentiment, product reputation, trend research, "最近 30 天" coverage, or what is trending right now (热搜 / 热榜 / 今天有什么热点).
Core rule
Ground every claim in the returned evidence. Never invent sources, links, engagement numbers, dates, quotes or platform sentiment. When coverage is thin or a platform failed, say so plainly.
1. Pick the mode
| The user asks… | Run |
|---|---|
| About a topic / product / person / event | Topic research (section 2) |
| "今天/现在有什么热点", "热搜", "全网热榜", "trending" | Hot board: --hot (section 3) |
| Hot topics about one theme ("今天 AI 圈有什么热点") | --hot "<关键词>" |
| Overseas opinion too (Reddit / HN / GitHub / X / YouTube) | Add --global --global-query "<English keywords>" (section 4) |
| Something is broken / which platforms work | --diagnose (section 6) |
{{SKILL_DIR}} is this skill's directory. Use python3 (or python on Windows).
2. Topic research
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --emit compact
Variants:
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --quick --emit compact # faster, query-type tiered platforms
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --deep --emit compact # more pages per platform
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --search bilibili,zhihu,xhs --emit compact
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --days 7 --emit compact
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --as-of 2026-05-01 --emit compact
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --emit html-path # offline HTML report path
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --refresh --emit compact # ignore the 24h cache
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --no-cache --emit compact # no cache read/write
- With no
--search, all eight Chinese platforms run.--searchaccepts ids, aliases (xhs,bili,hn,gh) and groups (cn,global,all). - 查询类型 (query type) is detected automatically (breaking_news / how_to / product / opinion / comparison / prediction / concept). It changes ranking tie-breaks, and in
--quickmode which platforms run. - Pass the user's own wording as the topic. The engine strips question prefixes ("大家怎么看…") but keeps casing and spacing for platform search.
LAST30DAYS_DEFAULT_SEARCH,INCLUDE_SOURCESandEXCLUDE_SOURCES(env or~/.config/last30days-cn/.env) change the default platform set.
3. Hot board (全网热榜)
python {{SKILL_DIR}}/scripts/last30days.py --hot --emit compact
python {{SKILL_DIR}}/scripts/last30days.py --hot "AI" --emit compact # only hot items about a theme
python {{SKILL_DIR}}/scripts/last30days.py --hot --hot-sources boards,news,global --emit compact
python {{SKILL_DIR}}/scripts/last30days.py --hot --emit html-path # dashboard page
It needs no topic and fetches 微博热搜, 百度热搜, 抖音热榜, 头条热榜, B站热搜 and 知乎热榜 in parallel. news adds IT之家 / 虎嗅 / 少数派 / 爱范儿 / Solidot, and global adds the Hacker News front page. "跨平台热点" lists events that are on several boards at once.
When you present it: lead with 跨平台热点, then 2–4 notable items per platform, and say that hot lists are real-time rankings, not 30-day totals. Offer a deep-dive with python {{SKILL_DIR}}/scripts/last30days.py "<话题>".
4. Overseas sources (opt-in)
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --global --global-query "<English keywords>" --emit compact
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --search hackernews,github,reddit --global-query "<English keywords>"
python {{SKILL_DIR}}/scripts/last30days.py "{{USER_TOPIC}}" --search x,youtube --global-query "<English keywords>" # needs upstream last30days installed
- Hacker News, GitHub and Reddit need no keys. Reddit often returns 403 from cloud or proxy IPs.
- These engines don't match Chinese text. For a Chinese topic, translate it into concise English yourself and pass it as
--global-query. Otherwise the overseas sources report that a query is needed. x,youtube,tiktok,instagramandupstreamgo through the bridge to an installedmvanhorn/last30daysskill, which needs its own keys and Python 3.12+. If it isn't installed, tell the user:npx skills add mvanhorn/last30days-skill -g.
5. 输出契约 (output contract)
- Keep the first engine badge line exactly as printed, e.g.
🌐 last30days-cn v4.0.0-cn · 数据截至 …. If it ends with· 缓存, say the evidence came from cache. - Don't add a title before the badge and don't add a trailing
Sources:block. Cite inline: platform name plus the URL from the evidence. - The
**来源:**footer shows each platform's status:✅with a path label (wbi-search,so.toutiao,site-search:ddg, …) means results came from that path.⚠️ 0 条means the search worked but nothing matched the window.❌ …means the platform failed, with the reason and a fix. Relay ❌ reasons briefly; don't hide them.
- A note that a platform's results are "热榜/公开搜索兜底" means those items have no reliable engagement numbers or dates. Don't quote engagement for them.
- Never present a failed or empty platform as "nobody is talking about it".
6. Login-gated platforms and diagnostics
Since 2025, 微博, 小红书, 知乎 and 抖音 search mostly require a logged-in session. Without one, the engine falls back to hot lists and public web search. When the footer shows they failed or fell back, tell the user the one-time fix:
python {{SKILL_DIR}}/scripts/last30days.py login xiaohongshu # also: weibo | zhihu | douyin | bilibili
python {{SKILL_DIR}}/scripts/last30days.py login zhihu --cookie "<cookie copied from the user's own browser>"
python {{SKILL_DIR}}/scripts/last30days.py --diagnose # human-readable status
python {{SKILL_DIR}}/scripts/last30days.py --diagnose --emit json
python {{SKILL_DIR}}/scripts/last30days.py setup # first-time setup + .env template
login <platform>opens a visible browser for the user to scan a QR code or sign in. Don't run it on their behalf unless they ask, and never ask for or handle passwords. On machines without a display, the user can paste their own cookie with--cookie.- The browser path needs
python -m pip install playwright && python -m playwright install chromium. - Old computers (e.g. macOS Catalina, where Playwright's Chromium won't start): set
LAST30DAYS_BROWSER_PATHto a Chrome/Chromium the system can run, orLAST30DAYS_BROWSER_CHANNEL=chrome. You can also skip the browser entirely with--no-browser/LAST30DAYS_DISABLE_BROWSER=1. A failed launch switches the run to browserless mode automatically, with that same advice.
7. Synthesis guidance
- State the date range and which platforms actually returned data.
- Lead with 跨平台聚合热点 (cross-platform clusters) when present: the same event seen on several platforms is the strongest signal.
- Compare platform cultures where relevant: 小红书 experience posts vs 知乎 analysis vs 微博 reactions vs B站 tutorials.
- Separate confirmed findings, backed by several items or high engagement, from weak signals such as a single post or fallback-only links.
- Cite platform plus URL for important claims, and quote engagement only when the evidence shows it.
- Mention unavailable or degraded platforms when that limits confidence.
- Answer in Chinese unless the user asks otherwise.
Configuration
Everything is optional. Settings go in ~/.config/last30days-cn/.env (or .claude/last30days-cn.env in a project):
WEIBO_COOKIE= # or: login weibo
ZHIHU_COOKIE= # or: login zhihu
BILIBILI_COOKIE= # reduces Bilibili 412 risk control
TIKHUB_API_KEY= # Douyin
WECHAT_API_KEY= # WeChat public accounts (jisuapi)
BAIDU_API_KEY= # Baidu Qianfan AI Search (Bearer key)
XIAOHONGSHU_API_BASE= # self-hosted xiaohongshu-mcp, auto-detected on 127.0.0.1:18060
GITHUB_TOKEN= # higher GitHub search limits
LAST30DAYS_DISABLE_BROWSER=1
Compliance
This skill is for learning, research and personal knowledge work. Keep request frequency low, respect platform terms and robots.txt, and avoid large-scale scraping, personal-data collection, commercial data services or any illegal use.
レビュー
まだレビューはありません。使ってみた感想をお寄せください。