360 Secure SkillHub
360 安全技能中心

daily-digest-ai

该 Skill 通过 scripts/digest.ts(Bun 运行时)抓取 92 个 Hacker News 热门技术博客及 36氪、少数派、InfoQ中文 的 RSS 文章,调用 OpenAI 兼容接口或 Gemini 进行 AI 评分与筛选,按参数生成含中文标题翻译、分类分组、趋势摘要与统计图表的 Markdown 每日摘要,并支持保存配置复用。

richball876
richball876
热度 34.37
最近更新 2026-05-11 17:45:46
分类:知识依赖:代码执行 / 读写文件 / 第三方 API应用场景:摘要总结 / 研究 / 报告撰写

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add daily-digest-ai
Metadata
name
ai_daily_digest
description
Fetches 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.
keywords
["RSS","digest","tech news","Hacker News","blog digest","AI digest","daily digest","Karpathy","36kr","sspai","InfoQ"]
license
MIT
allowed-tools
Bash Read Write AskUserQuestion
metadata
{"openclaw":{"os":["darwin","linux","win32"],"requires":{"bins":["npx"],"config":[]}}}

AI Daily Digest

从 Karpathy 推荐的 92 个热门技术博客及国内科技媒体(36氪、少数派、InfoQ中文)中抓取最新文章,通过 AI 评分筛选,生成每日精选摘要。

When to Use

Use this skill when the user wants to:

  • Get a daily tech news digest from top Hacker News blogs
  • Summarize recent tech blog articles with AI scoring
  • Generate a structured Markdown report from RSS feeds
  • Run /digest command

When NOT to Use

Do not use this skill when:

  • The user wants real-time news from APIs (use web search instead)
  • The topic is non-tech (this skill only covers tech blogs)
  • The user wants to search a specific website (use web search tools)

Quick Start

One-command run (with saved config)

npx -y bun {baseDir}/scripts/digest.ts --hours 48 --top-n 15 --lang zh

The script auto-generates the output file as ./digest-YYYYMMDD.md in the current directory. Use --output <path> to customize.

With environment variables (first run)

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 Reference

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.


Parameters

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)

Environment Variables

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_KEY as the primary provider. If it fails (quota exceeded, network error), the script automatically falls back to Gemini (GEMINI_API_KEY). If only GEMINI_API_KEY is set (no OpenAI key), the script uses Gemini directly.

Using domestic (Chinese) AI providers

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_MODEL is auto-detected from the API base URL. For DeepSeek it defaults to deepseek-chat; for others it defaults to gpt-4o-mini. Override with OPENAI_MODEL if needed.


Configuration Persistence

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.


Interactive Flow

Step 0: Check saved config

cat ~/.hn-daily-digest/config.json 2>/dev/null || echo "NO_CONFIG"

If config exists with geminiApiKey, ask user:

  • "Use saved config?" — If yes, skip to Step 2 with saved parameters
  • "Reconfigure" — Continue to Step 1

Step 1: Collect parameters

Ask the user the following questions using AskUserQuestion:

  1. Time range: 24h / 48h (recommended) / 72h / 7 days
  2. Top N articles: 10 / 15 (recommended) / 20
  3. Output language: Chinese (recommended) / English

Step 1b: API Key

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.

Step 2: Execute

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>.

Step 3: Present results

On success:

  • Show the output file path
  • Show summary: feeds scanned, articles fetched, articles selected
  • Show Top 3 preview: Chinese title + one-line summary

Report structure (in the generated Markdown file):

  1. Today's Highlights — 3-5 sentence macro trend summary by AI
  2. Must-Read Top 3 — Bilingual titles, summaries, recommendations, keyword tags
  3. Data Overview — Statistics table + Mermaid category pie chart + keyword bar chart + ASCII chart + tag cloud
  4. Categorized Articles — Grouped by 6 categories (AI/ML, Security, Engineering, Tools/Open Source, Opinions, Other)

On failure:

  • Display error message
  • Common issues: invalid API key, network problems, RSS source unavailable

Requirements

  • npx (comes with Node.js) — used to run bun runtime automatically
  • bun runtime (auto-installed via npx -y bun)
  • At least one AI API key (OPENAI_API_KEY or GEMINI_API_KEY)
  • Network access (for RSS feeds and AI API)

Troubleshooting

"OPENAI_API_KEY not set"

Provide an OpenAI-compatible API Key (e.g. DeepSeek, OpenAI). Optionally set OPENAI_API_BASE for custom endpoints.

"OpenAI API request failed"

The script automatically falls back to Gemini. Make sure GEMINI_API_KEY is set.

"Failed to fetch N feeds"

Some RSS sources may be temporarily unavailable. The script skips failed sources and continues.

"No articles found in time range"

Try expanding the time range (e.g., from 24 hours to 48 hours).