News Aggregator Skill
Fetch real-time hot news from multiple sources.
⚠️ Global Rules (Strict Enforcement)
Mandatory Time Display: EVERY report item, regardless of the source or command used (Single Source, Morning Routine, or Combinations), MUST include the precise publication time or relative time (e.g., "10:30", "2 hours ago", "2024-01-20").
- NEVER skip the time field.
- NEVER hallucinate the time. If it's missing in the JSON, mark it as "Unknown Time".
- For "Real-time" or "Trending" lists (e.g., Weibo, GitHub), preserve the "Real-time" or "Today" tag.
Logical Integrity (Anti-Hallucination):
- NO INVENTED CAUSALITY: Do not use "Because", "Although", "Due to", or "However" unless the source text EXPLICITLY supports this relationship.
- SVO Preference: Use simple Subject-Verb-Object sentences. Avoid complex compound sentences that force you to invent logical bridges.
- Fact Check: If you fix grammar, you arguably make a claim. If you change "A, B" to "A caused B", you MUST be 100% sure. When in doubt, leave it as two separate sentences.
Tools
fetch_news.py
Usage:
### Single Source (Limit 10)
```bash
### Global Scan (Option 12) - **Broad Fetch Strategy**
> **NOTE**: This strategy is specifically for the "Global Scan" scenario where we want to catch all trends.
```bash
# 1. Fetch broadly (Massive pool for Semantic Filtering)
python3 scripts/fetch_news.py --source all --limit 15 --deep
# 2. SEMANTIC FILTERING:
# Agent manually filters the broad list (approx 120 items) for user's topics.
Single Source & Combinations (Smart Keyword Expansion)
CRITICAL: You MUST automatically expand the user's simple keywords to cover the entire domain field.
- User: "AI" -> Agent uses:
--keyword "AI,LLM,GPT,Claude,Generative,Machine Learning,RAG,Agent"
- User: "Android" -> Agent uses:
--keyword "Android,Kotlin,Google,Mobile,App"
- User: "Finance" -> Agent uses:
--keyword "Finance,Stock,Market,Economy,Crypto,Gold"
# Example: User asked for "AI news from HN" (Note the expanded keywords)
python3 scripts/fetch_news.py --source hackernews --limit 20 --keyword "AI,LLM,GPT,DeepSeek,Agent" --deep
Specific Keyword Search
Only use --keyword for very specific, unique terms (e.g., "DeepSeek", "OpenAI").
python3 scripts/fetch_news.py --source all --limit 10 --keyword "DeepSeek" --deep
Arguments:
--source: One of hackernews, weibo, github, 36kr, producthunt, v2ex, tencent, wallstreetcn, all.
--limit: Max items per source (default 10).
--keyword: Comma-separated filters (e.g. "AI,GPT").
--deep: [NEW] Enable deep fetching. Downloads and extracts the main text content of the articles.
Output:
JSON array. If --deep is used, items will contain a content field associated with the article text.
daily_briefing.py (Unified Morning Routine)
Run this single script to fetch all necessary data for the morning briefing.
python3 scripts/daily_briefing.py --profile [general|finance|tech|social] > briefing_data.json
Workflow:
- Execute
scripts/daily_briefing.py with the desired profile.
- READ the corresponding instruction file in
instructions/:
general -> instructions/briefing_general.md
finance -> instructions/briefing_finance.md
tech -> instructions/briefing_tech.md
social -> instructions/briefing_social.md
- Generate the report strictly satisfying the volume constraints in the instruction file.
Interactive Menu
When the user says "news-aggregator-skill 如意如意" (or similar "menu/help" triggers):
- READ the content of
templates.md in the skill directory.
- DISPLAY the list of available commands to the user exactly as they appear in the file.
- GUIDE the user to select a number or copy the command to execute.
- Morning Routine (Recommended): For the best quality, guide the user to run the "Three-Course Morning Routine" (Options 12, 13, 14) sequentially, rather than combining them into one request. This ensures each report gets full AI Context attention.
Smart Time Filtering & Reporting (CRITICAL)
If the user requests a specific time window (e.g., "past X hours") and the results are sparse (< 5 items):
- Prioritize User Window: First, list all items that strictly fall within the user's requested time (Time < X).
- Smart Fill: If the list is short, you MUST include high-value/high-heat items from a wider range (e.g. past 24h) to ensure the report provides at least 5 meaningful insights.
- Annotation: Clearly mark these older items (e.g., "⚠️ 18h ago", "🔥 24h Hot") so the user knows they are supplementary.
- High Value: Always prioritize "SOTA", "Major Release", or "High Heat" items even if they slightly exceed the time window.
- GitHub Trending Exception: For purely list-based sources like GitHub Trending, strictly return the valid items from the fetched list (e.g. Top 10). List ALL fetched items. Do NOT perform "Smart Fill".
- Deep Analysis (Required): For EACH item, you MUST leverage your AI capabilities to analyze:
- Core Value (核心价值): What specific problem does it solve? Why is it trending?
- Inspiration (启发思考): What technical or product insights can be drawn?
- Scenarios (场景标签): 3-5 keywords (e.g.
#RAG #LocalFirst #Rust).
6. Response Guidelines (CRITICAL)
Format & Style:
- Language: Simplified Chinese (简体中文). (IMPORTANT: Translate Title, Summary, and Analysis into Chinese)
- Style: Magazine/Newsletter style (e.g., "The Economist" or "Morning Brew" vibe). Professional, concise, yet engaging.
- Structure:
- Global Headlines: Top 15-20 critical stories across all domains. (For Global Scan, aim for comprehensive coverage, not just a few highlights).
- Tech & AI: Specific section for AI, LLM, and Tech items.
- Finance / Social: Other strong categories if relevant.
- Item Format Template (STRICT):
Switching to List Format for better rendering. Do NOT use Blockquotes (>).
#### 1. [Title (Translated)](https://original-url.com)
- **Source**: SourceName | **Time**: X hours ago | **Heat**: 🔥 999
- **Summary**: [Hacker News Discussion](hn_url) (if valid) + One sentence summary in Chinese.
- **Deep Dive**: 💡 **Insight**: Deep analysis, market impact, or technical context.
- Zero Hallucination & Diligence (CRITICAL):
- Truth: You must ONLY use data present in the provided JSON. NEVER invent news items.
- Diligence: Do NOT use "No significant updates" as an excuse to skip analysis. You MUST exhaustively review the JSON.
- Fallback: Only state "No significant updates" if the fetching script truly returned 0 relevant items. If the source is empty, state so clearly (e.g., "Source returned 0 items"). DO NOT fabricate news to fill the space.
- Key Rules:
- Hacker News (HN): For HN items, you MUST provide the link to the HN discussion page (comments) in addition to the original article link.
- Translation: Translate titles, summaries, and deep dive analysis into Simplified Chinese.
- Title: MUST be a clickable link. Do NOT use plain text titles.
- Metadata: Source, Time, and Heat MUST be visible immediately below the title.
- Time: MANDATORY FIELD. You MUST include the time provided in the JSON (e.g., "2 hours ago", "2024-01-20", "Real-time", "Today").
- If the JSON says "Real-time", "Today", or "Hot", display it exactly as is.
- DO NOT SKIP THIS FIELD.
- Deep Interpretation (Bulleted): 2-3 bullet points explaining why this matters, technical details, or context. (Required for "Deep Scan").
Output Artifact:
- Always save the full report to a date-based subdirectory in
reports/ (e.g., reports/YYYY-MM-DD/filename_HHMM.md). If the directory does not exist, you MUST create it first.
- IMPORTANT: The Agent (You) are responsible for formatting the JSON output into Markdown. Do not rely on external scripts for summarization.
- Present the full report content to the user in the chat.
1---2name: news-aggregator-skill3description: Comprehensive news aggregator that fetches, filters, and deeply analyzes real-time content from 8 major sources: Hacker News, GitHub Trending, Product Hunt, 36Kr, Tencent News, WallStreetCN, V2EX, and Weibo. Best for 'daily scans', 'tech news briefings', 'finance updates', and 'deep interpretations' of hot topics.4---5
6# News Aggregator Skill
7
8Fetch real-time hot news from multiple sources.
9
10## ⚠️ Global Rules (Strict Enforcement)
11
121. **Mandatory Time Display**: **EVERY** report item, regardless of the source or command used (Single Source, Morning Routine, or Combinations), **MUST** include the precise publication time or relative time (e.g., "10:30", "2 hours ago", "2024-01-20").
13 * **NEVER** skip the time field.
14 * **NEVER** hallucinate the time. If it's missing in the JSON, mark it as "Unknown Time".
15 * For "Real-time" or "Trending" lists (e.g., Weibo, GitHub), preserve the "Real-time" or "Today" tag.
16
172. **Logical Integrity (Anti-Hallucination)**:
18 * **NO INVENTED CAUSALITY**: Do not use "Because", "Although", "Due to", or "However" unless the source text EXPLICITLY supports this relationship.
19 * **SVO Preference**: Use simple Subject-Verb-Object sentences. Avoid complex compound sentences that force you to invent logical bridges.
20 * **Fact Check**: If you fix grammar, you arguably make a claim. If you change "A, B" to "A caused B", you MUST be 100% sure. When in doubt, leave it as two separate sentences.
21
22## Tools
23
24### fetch_news.py
25
26**Usage:**
27
28```bash
29### Single Source (Limit 10)
30```bash
31### Global Scan (Option 12) - **Broad Fetch Strategy**
32> **NOTE**: This strategy is specifically for the "Global Scan" scenario where we want to catch all trends.
33
34```bash
35# 1. Fetch broadly (Massive pool for Semantic Filtering)
36python3 scripts/fetch_news.py --source all --limit 15 --deep
37
38# 2. SEMANTIC FILTERING:
39# Agent manually filters the broad list (approx 120 items) for user's topics.
40```
41
42### Single Source & Combinations (Smart Keyword Expansion)
43**CRITICAL**: You MUST automatically expand the user's simple keywords to cover the entire domain field.
44* User: "AI" -> Agent uses: `--keyword "AI,LLM,GPT,Claude,Generative,Machine Learning,RAG,Agent"`
45* User: "Android" -> Agent uses: `--keyword "Android,Kotlin,Google,Mobile,App"`
46* User: "Finance" -> Agent uses: `--keyword "Finance,Stock,Market,Economy,Crypto,Gold"`
47
48```bash
49# Example: User asked for "AI news from HN" (Note the expanded keywords)
50python3 scripts/fetch_news.py --source hackernews --limit 20 --keyword "AI,LLM,GPT,DeepSeek,Agent" --deep
51```
52
53### Specific Keyword Search
54Only use `--keyword` for very specific, unique terms (e.g., "DeepSeek", "OpenAI").
55```bash
56python3 scripts/fetch_news.py --source all --limit 10 --keyword "DeepSeek" --deep
57```
58
59**Arguments:**
60
61- `--source`: One of `hackernews`, `weibo`, `github`, `36kr`, `producthunt`, `v2ex`, `tencent`, `wallstreetcn`, `all`.
62- `--limit`: Max items per source (default 10).
63- `--keyword`: Comma-separated filters (e.g. "AI,GPT").
64- `--deep`: **[NEW]** Enable deep fetching. Downloads and extracts the main text content of the articles.
65
66**Output:**
67JSON array. If `--deep` is used, items will contain a `content` field associated with the article text.
68
69### daily_briefing.py (Unified Morning Routine)
70Run this single script to fetch all necessary data for the morning briefing.
71
72```bash
73python3 scripts/daily_briefing.py --profile [general|finance|tech|social] > briefing_data.json
74```
75
76**Workflow:**
771. **Execute** `scripts/daily_briefing.py` with the desired profile.
782. **READ** the corresponding instruction file in `instructions/`:
79 * `general` -> `instructions/briefing_general.md`
80 * `finance` -> `instructions/briefing_finance.md`
81 * `tech` -> `instructions/briefing_tech.md`
82 * `social` -> `instructions/briefing_social.md`
833. **Generate** the report strictly satisfying the volume constraints in the instruction file.
84
85
86
87## Interactive Menu
88
89When the user says **"news-aggregator-skill 如意如意"** (or similar "menu/help" triggers):
901. **READ** the content of `templates.md` in the skill directory.
912. **DISPLAY** the list of available commands to the user exactly as they appear in the file.
923. **GUIDE** the user to select a number or copy the command to execute.
934. **Morning Routine (Recommended)**: For the best quality, guide the user to run the "Three-Course Morning Routine" (Options 12, 13, 14) **sequentially**, rather than combining them into one request. This ensures each report gets full AI Context attention.
94
95### Smart Time Filtering & Reporting (CRITICAL)
96If the user requests a specific time window (e.g., "past X hours") and the results are sparse (< 5 items):
971. **Prioritize User Window**: First, list all items that strictly fall within the user's requested time (Time < X).
982. **Smart Fill**: If the list is short, you MUST include high-value/high-heat items from a wider range (e.g. past 24h) to ensure the report provides at least 5 meaningful insights.
99 * **Annotation**: Clearly mark these older items (e.g., "⚠️ 18h ago", "🔥 24h Hot") so the user knows they are supplementary.
1003. **High Value**: Always prioritize "SOTA", "Major Release", or "High Heat" items even if they slightly exceed the time window.
1014. **GitHub Trending Exception**: For purely list-based sources like **GitHub Trending**, strictly return the valid items from the fetched list (e.g. Top 10). **List ALL fetched items**. Do **NOT** perform "Smart Fill".
102 * **Deep Analysis (Required)**: For EACH item, you **MUST** leverage your AI capabilities to analyze:
103 * **Core Value (核心价值)**: What specific problem does it solve? Why is it trending?
104 * **Inspiration (启发思考)**: What technical or product insights can be drawn?
105 * **Scenarios (场景标签)**: 3-5 keywords (e.g. `#RAG #LocalFirst #Rust`).
106
107### 6. Response Guidelines (CRITICAL)
108
109**Format & Style:**
110- **Language**: Simplified Chinese (简体中文). **(IMPORTANT: Translate Title, Summary, and Analysis into Chinese)**
111- **Style**: Magazine/Newsletter style (e.g., "The Economist" or "Morning Brew" vibe). Professional, concise, yet engaging.
112- **Structure**:
113 - **Global Headlines**: **Top 15-20** critical stories across all domains. (For Global Scan, aim for comprehensive coverage, not just a few highlights).
114 - **Tech & AI**: Specific section for AI, LLM, and Tech items.
115 - **Finance / Social**: Other strong categories if relevant.
116- **Item Format Template (STRICT)**:
117 *Switching to List Format for better rendering. Do NOT use Blockquotes (>).*
118 ```markdown
119 #### 1. [Title (Translated)](https://original-url.com)
120 - **Source**: SourceName | **Time**: X hours ago | **Heat**: 🔥 999
121 - **Summary**: [Hacker News Discussion](hn_url) (if valid) + One sentence summary in Chinese.
122 - **Deep Dive**: 💡 **Insight**: Deep analysis, market impact, or technical context.
123 ```
124 - **Zero Hallucination & Diligence (CRITICAL)**:
125 - **Truth**: You must **ONLY** use data present in the provided JSON. **NEVER** invent news items.
126 - **Diligence**: Do NOT use "No significant updates" as an excuse to skip analysis. You MUST exhaustively review the JSON.
127 - **Fallback**: Only state "No significant updates" if the fetching script truly returned 0 relevant items. **If the source is empty, state so clearly (e.g., "Source returned 0 items"). DO NOT fabricate news to fill the space.**
128- **Key Rules**:
129 - **Hacker News (HN)**: For HN items, you **MUST** provide the link to the HN discussion page (comments) in addition to the original article link.
130 - **Translation**: Translate titles, summaries, and deep dive analysis into **Simplified Chinese**.
131 - **Title**: MUST be a clickable link. Do NOT use plain text titles.
132 - **Metadata**: Source, Time, and Heat MUST be visible immediately below the title.
133 - **Time**: **MANDATORY FIELD**. You MUST include the time provided in the JSON (e.g., "2 hours ago", "2024-01-20", "Real-time", "Today").
134 - If the JSON says "Real-time", "Today", or "Hot", display it exactly as is.
135 - **DO NOT SKIP THIS FIELD**.
136 - **Deep Interpretation (Bulleted)**: 2-3 bullet points explaining *why* this matters, technical details, or context. (Required for "Deep Scan").
137
138**Output Artifact:**
139- Always save the full report to a date-based subdirectory in `reports/` (e.g., `reports/YYYY-MM-DD/filename_HHMM.md`). If the directory does not exist, you MUST create it first.
140- **IMPORTANT**: The Agent (You) are responsible for formatting the JSON output into Markdown. **Do not rely on external scripts for summarization.**
141- Present the full report content to the user in the chat.