APM

>Agent Skill

@geekjourneyx/ai-daily-news

skilldevelopment

Fetches AI news from smol.ai RSS and generates structured markdown with intelligent summarization and categorization. Optionally creates beautiful HTML webpages with Apple-style themes and shareable card images. Use when user asks about AI news, daily tech updates, or wants news organized by date or category.

apm::install
$apm install @geekjourneyx/ai-daily-news
apm::skill.md
---
name: ai-daily-news
description: Fetches AI news from smol.ai RSS and generates structured markdown with intelligent summarization and categorization. Optionally creates beautiful HTML webpages with Apple-style themes and shareable card images. Use when user asks about AI news, daily tech updates, or wants news organized by date or category.
---

# AI Daily News

Fetches AI industry news from smol.ai, intelligently summarizes and categorizes using built-in Claude AI capabilities, outputs structured markdown, and optionally generates themed webpages and shareable card images.

## Quick Start

```bash
# Yesterday's news
昨天AI资讯

# Specific date
2026-01-13的AI新闻

# By category
昨天的模型发布相关资讯

# Generate webpage
昨天AI资讯,生成网页

# Generate shareable card image
昨天AI资讯,生成分享图片
生成日报卡片图片
```

## Supported Query Types

| Type | Examples | Description |
|------|----------|-------------|
| **相对日期** | "昨天AI资讯" "前天的新闻" "今天的AI动态" | Yesterday, day before, today |
| **绝对日期** | "2026-01-13的新闻" | YYYY-MM-DD format |
| **分类筛选** | "模型相关资讯" "产品动态" | Filter by category |
| **网页生成** | "生成网页" "制作HTML页面" | Optional webpage generation |
| **图片生成** | "生成图片" "生成分享卡片" "制作日报卡片" | Generate shareable card image |

---

## Workflow

Copy this checklist to track progress:

```
Progress:
- [ ] Step 1: Parse date from user request
- [ ] Step 2: Fetch RSS from smol.ai
- [ ] Step 3: Check if content exists for target date
- [ ] Step 4: Extract and analyze content
- [ ] Step 5: Generate structured markdown
- [ ] Step 6: Ask about webpage generation (if requested)
- [ ] Step 7: Generate shareable card image (if requested)
```

---

## Step 1: Parse Date

Extract the target date from user request.

| User Input | Target Date | Calculation |
|------------|-------------|-------------|
| "昨天AI资讯" | Yesterday | today - 1 day |
| "前天AI资讯" | Day before yesterday | today - 2 days |
| "2026-01-13的新闻" | 2026-01-13 | Direct parse |
| "今天的AI动态" | Today | Current date |

**Date format**: Always use `YYYY-MM-DD` format (e.g., `2026-01-13`)

---

## Step 2: Fetch RSS

Run the fetch script to get RSS data:

```bash
python plugins/ai-daily/skills/ai-daily/scripts/fetch_news.py
```

This downloads and parses `https://news.smol.ai/rss.xml`, returning structured JSON.

**Available dates** can be checked with:

```bash
python plugins/ai-daily/skills/ai-daily/scripts/fetch_news.py --date-range
```

---

## Step 3: Check Content

Verify if content exists for the target date.

### When Content Exists

Continue to Step 4.

### When Content NOT Found

Display a friendly message with available dates:

```markdown
抱歉,2026-01-14 暂无资讯

可用日期范围: 2026-01-10 ~ 2026-01-13

建议:
- 查看 [2026-01-13](command:查看2026-01-13的资讯) 的资讯
- 查看 [2026-01-12](command:查看2026-01-12的资讯) 的资讯
```

**User experience principles**:
1. Clear problem statement
2. Show available alternatives
3. Provide clickable commands for quick access
4. Never leave user stuck with no options

---

## Step 4: Extract and Analyze Content

Use built-in Claude AI capabilities to:

1. **Extract full content** from the RSS entry
2. **Generate summary** - 3-5 key takeaways
3. **Categorize** items by topic:
   - Model Releases (模型发布)
   - Product Updates (产品动态)
   - Research Papers (研究论文)
   - Tools & Frameworks (工具框架)
   - Funding & M&A (融资并购)
   - Industry Events (行业事件)
4. **Extract keywords** - Companies, products, technologies

**Prompt Template**:

```
Analyze this AI news content and organize it:

1. Generate 3-5 key takeaways (one sentence each)
2. Categorize items into: Model Releases, Product Updates, Research, Tools, Funding, Events
3. Extract 5-10 keywords

Original content:
{content}
```

---

## Step 5: Generate Markdown

Output structured markdown following the format in [output-format.md](references/output-format.md).

**Key sections**:
- Title with date
- Core summary
- Categorized news items
- Keywords
- Footer with source info

**Example output**:

```markdown
# AI Daily · 2026年1月13日

## 核心摘要

- Anthropic 发布 Cowork 统一 Agent 平台
- Google 开源 MedGemma 1.5 医疗多模态模型
- LangChain Agent Builder 正式发布

## 模型发布

### MedGemma 1.5
Google 发布 4B 参数医疗多模态模型...
[原文链接](https://news.smol.ai/issues/26-01-13-not-much/)

## 产品动态

...

## 关键词

#Anthropic #Google #MedGemma #LangChain

---
数据来源: smol.ai
```

---

## Step 6: Webpage Generation (Optional)

**Only trigger when user explicitly says**:

- "生成网页"
- "制作HTML页面"
- "生成静态网站"

### Ask User Preferences

```
是否需要生成精美的网页?

可选主题:
- [苹果风](command:使用苹果风主题) - 简洁专业,适合技术内容
- [深海蓝](command:使用深海蓝主题) - 商务风格,适合产品发布
- [秋日暖阳](command:使用秋日暖阳主题) - 温暖活力,适合社区动态
```

### Theme Prompt Templates

See [html-themes.md](references/html-themes.md) for detailed prompt templates for each theme.

**Apple Style Theme** (Key Points):

```markdown
Generate a clean, minimalist HTML page inspired by Apple's design:

**Design**:
- Pure black background (#000000)
- Subtle blue glow from bottom-right (#0A1929 → #1A3A52)
- Generous white space, content density ≤ 40%
- SF Pro Display for headings, SF Pro Text for body
- Smooth animations and hover effects

**Structure**:
- Header: Logo icon + Date badge
- Main: Summary card + Category sections
- Footer: Keywords + Copyright

**Colors**:
- Title: #FFFFFF
- Body: #E3F2FD
- Accent: #42A5F5
- Secondary: #B0BEC5
```

### Save Webpage

Save to `docs/{date}.html`:

```bash
# Save webpage
cat > docs/2026-01-13.html << 'EOF'
{generated_html}
EOF
```

---

## Step 7: Shareable Card Image Generation (Optional)

**Trigger when user explicitly requests**:

- "生成图片"
- "生成分享卡片"
- "制作日报卡片"
- "生成卡片图片"
- "生成分享图"

### Image Generation Process

1. **Build condensed Markdown** for card display:
   - Title and date
   - Core summary (3-5 items)
   - Top items per category (3 items each)
   - Keywords

2. **Call Firefly Card API**:
   - API: `POST https://fireflycard-api.302ai.cn/api/saveImg`
   - Body contains `content` field with Markdown
   - Returns binary image stream (`Content-Type: image/png`)

3. **Save and display result**:
   - Save to `docs/images/{date}.png`
   - Display preview or download link

### API Request Format

```json
{
  "content": "# AI Daily\\n## 2026年1月13日\\n...",
  "font": "SourceHanSerifCN_Bold",
  "align": "left",
  "width": 400,
  "height": 533,
  "fontScale": 1.2,
  "ratio": "3:4",
  "padding": 30,
  "switchConfig": {
    "showIcon": false,
    "showTitle": false,
    "showContent": true,
    "showTranslation": false,
    "showAuthor": false,
    "showQRCode": false,
    "showSignature": false,
    "showQuotes": false,
    "showWatermark": false
  },
  "temp": "tempBlackSun",
  "textColor": "rgba(0,0,0,0.8)",
  "borderRadius": 15,
  "color": "pure-ray-1"
}
```

### Output Example

```markdown
📸 分享卡片已生成

图片已保存到: docs/images/2026-01-13.png

[预览图片](docs/images/2026-01-13.png)

你可以将此图片分享到社交媒体!
```

---

## Configuration

No configuration required. Uses built-in RSS fetching and Claude AI capabilities.

**RSS Source**: `https://news.smol.ai/rss.xml`

**Date Calculation**: Uses current UTC date, subtracts days for relative queries.

---

## Complete Examples

### Example 1: Yesterday's News (Basic)

**User Input**: "昨天AI资讯"

**Process**:
1. Calculate yesterday's date: `2026-01-14`
2. Fetch RSS
3. Check content exists
4. Analyze and categorize
5. Output markdown

**Output**: Structured markdown with all categories

### Example 2: Specific Date

**User Input**: "2026-01-13的AI新闻"

**Process**:
1. Parse date: `2026-01-13`
2. Fetch RSS
3. Check content exists
4. Analyze and categorize
5. Output markdown

### Example 3: By Category

**User Input**: "昨天的模型发布相关资讯"

**Process**:
1. Calculate yesterday's date
2. Fetch RSS
3. Analyze and filter for "Model Releases" category
4. Output filtered markdown

### Example 4: With Webpage Generation

**User Input**: "昨天AI资讯,生成网页"

**Process**:
1-5. Same as Example 1
6. Ask: "Which theme?"
7. User selects: "苹果风"
8. Generate HTML with Apple-style theme
9. Save to `docs/2026-01-14.html`

### Example 5: Content Not Found

**User Input**: "2026-01-15的资讯"

**Output**:
```markdown
抱歉,2026-01-15 暂无资讯

可用日期范围: 2026-01-10 ~ 2026-01-13

建议:
- 查看 [2026-01-13](command:查看2026-01-13的资讯) 的资讯
- 查看 [2026-01-12](command:查看2026-01-12的资讯) 的资讯
```

---

## References

- [Output Format](references/output-format.md) - Markdown output structure
- [HTML Themes](references/html-themes.md) - Webpage theme prompts

---

## Troubleshooting

### RSS Fetch Fails

**Error**: "Failed to fetch RSS"

**Solution**: Check network connectivity to `news.smol.ai`

### Date Parsing Fails

**Error**: "Invalid date format"

**Solution**: Use `YYYY-MM-DD` format or relative terms like "昨天"

### No Content for Date

**Output**: Friendly message with available dates (see Step 3)

### Webpage Save Fails

**Error**: "Cannot save to docs/"

**Solution**: Ensure `docs/` directory exists:
```bash
mkdir -p docs
```

---

## CLI Reference

```bash
# Fetch RSS (returns JSON)
python plugins/ai-daily/skills/ai-daily/scripts/fetch_news.py

# Get available date range
python plugins/ai-daily/skills/ai-daily/scripts/fetch_news.py --date-range

# Get specific date content
python plugins/ai-daily/skills/ai-daily/scripts/fetch_news.py --date 2026-01-13
```