Install
openclaw skills install @richball876/daily-digest-aiFetches RSS feeds from 92 top Hacker News blogs (curated by Karpathy) plus 3 Chinese tech media (36氪, 少数派, InfoQ中文), uses AI to score and filter articles, and generates a daily digest in Markdown with Chinese-translated titles, category grouping, trend highlights, and visual statistics. Use when user mentions 'daily digest', 'RSS digest', 'blog digest', 'AI blogs', 'tech news summary', or asks to run /digest. Do NOT use for non-RSS content, non-tech topics, or real-time news APIs.
openclaw skills install @richball876/daily-digest-ai从 Karpathy 推荐的 92 个热门技术博客及国内科技媒体(36氪、少数派、InfoQ中文)中抓取最新文章,通过 AI 评分筛选,生成每日精选摘要。
Use this skill when the user wants to:
/digest commandDo not use this skill when:
npx -y bun {baseDir}/scripts/digest.ts --hours 48 --top-n 15 --lang zh
The script auto-generates the output file as
./digest-YYYYMMDD.mdin the current directory. Use--output <path>to customize.
export OPENAI_API_KEY="<your-openai-compatible-key>"
export OPENAI_API_BASE="https://api.deepseek.com/v1" # Optional, default: https://api.openai.com/v1
export OPENAI_MODEL="deepseek-chat" # Optional, auto-detected if omitted
# Optional fallback:
export GEMINI_API_KEY="<your-gemini-api-key>"
npx -y bun {baseDir}/scripts/digest.ts --hours 48 --top-n 15 --lang zh
| Script | Purpose |
|---|---|
{baseDir}/scripts/digest.ts | Main script — RSS fetching, AI scoring, digest generation |
All scripts are located in the scripts/ subdirectory of this skill. Use {baseDir} to reference the skill's root directory.
| Flag | Default | Description |
|---|---|---|
--hours | 48 | Time range in hours (24, 48, 72, 168) |
--top-n | 15 | Number of top articles to include (10, 15, 20) |
--lang | zh | Output language: zh (Chinese) or en (English) |
--output | ./digest-YYYYMMDD.md | Output file path for the generated Markdown report (auto-generated if omitted) |
| Variable | Required | Description |
|---|---|---|
OPENAI_API_KEY | Yes (one of the two) | OpenAI-compatible API key — primary provider (supports DeepSeek, 通义千问, 智谱, etc.) |
GEMINI_API_KEY | No | Google Gemini API key — used as fallback when OpenAI fails. Get a free key at https://aistudio.google.com/apikey |
OPENAI_API_BASE | No | Custom API base URL (defaults to https://api.openai.com/v1) |
OPENAI_MODEL | No | Model name for OpenAI-compatible API (auto-detected from API base if omitted) |
AI provider selection: The script uses
OPENAI_API_KEYas the primary provider. If it fails (quota exceeded, network error), the script automatically falls back to Gemini (GEMINI_API_KEY). If onlyGEMINI_API_KEYis set (no OpenAI key), the script uses Gemini directly.
Set only OPENAI_API_KEY + OPENAI_API_BASE (do NOT set GEMINI_API_KEY):
| Provider | OPENAI_API_BASE | OPENAI_MODEL |
|---|---|---|
| DeepSeek | https://api.deepseek.com/v1 | deepseek-chat |
| 通义千问 | https://dashscope.aliyuncs.com/compatible-mode/v1 | qwen-plus |
| 智谱 GLM | https://open.bigmodel.cn/api/paas/v4 | glm-4-flash |
| Groq | https://api.groq.com/openai/v1 | llama-3.3-70b-versatile |
OPENAI_MODELis auto-detected from the API base URL. For DeepSeek it defaults todeepseek-chat; for others it defaults togpt-4o-mini. Override withOPENAI_MODELif needed.
Config file path: ~/.hn-daily-digest/config.json
Before running, check if this file exists:
cat ~/.hn-daily-digest/config.json 2>/dev/null || echo "NO_CONFIG"
If config exists and has a geminiApiKey, ask the user whether to reuse saved settings. After a successful run, save the current configuration using the Write tool to ~/.hn-daily-digest/config.json with the following content:
{
"geminiApiKey": "<key>",
"timeRange": <hours>,
"topN": <topN>,
"language": "<zh|en>",
"lastUsed": "<ISO timestamp>"
}
Use the Write tool (not Bash) to save the config file for cross-platform compatibility.
cat ~/.hn-daily-digest/config.json 2>/dev/null || echo "NO_CONFIG"
If config exists with geminiApiKey, ask user:
Ask the user the following questions using AskUserQuestion:
If no saved openaiApiKey exists, ask the user for an OpenAI-compatible API Key (e.g. DeepSeek, OpenAI). Optionally ask for GEMINI_API_KEY as fallback.
export OPENAI_API_KEY="<key>"
export OPENAI_API_BASE="https://api.deepseek.com/v1"
export OPENAI_MODEL="deepseek-chat"
# Optional fallback:
export GEMINI_API_KEY="<fallback-key>"
npx -y bun {baseDir}/scripts/digest.ts \
--hours <timeRange> \
--top-n <topN> \
--lang <zh|en>
The output file is auto-generated as
./digest-YYYYMMDD.md. To specify a custom path, add--output <path>.
On success:
Report structure (in the generated Markdown file):
On failure:
npx (comes with Node.js) — used to run bun runtime automaticallybun runtime (auto-installed via npx -y bun)OPENAI_API_KEY or GEMINI_API_KEY)Provide an OpenAI-compatible API Key (e.g. DeepSeek, OpenAI). Optionally set OPENAI_API_BASE for custom endpoints.
The script automatically falls back to Gemini. Make sure GEMINI_API_KEY is set.
Some RSS sources may be temporarily unavailable. The script skips failed sources and continues.
Try expanding the time range (e.g., from 24 hours to 48 hours).