Files

377 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: searchnews
description: 当用户要求"搜索新闻"、"查询AI新闻"、"整理新闻"、"获取某天的新闻"或提到需要搜索、整理、汇总指定日期的AI行业新闻时应使用此技能。
metadata:
version: "0.4.0"
---
# AI新闻搜索技能 (Ralph Loop 增强版)
## 概述
此技能用于从多个AI新闻源精确搜索指定日期的新闻采用 Ralph Loop 模式进行地毯式迭代,确保不留死角。
## 核心机制 (Ralph Loop)
### 1. 任务清单 (prd.json)
记录待爬取的源网站及其状态。
- `date`: 目标日期,格式 YYYY-MM-DD
- `keywords_ref`: 引用关键词库文件路径(如 `references/keywords.md`),搜索时加载 10 大分类和 100+ 标签进行筛选
- `sources`: 每个源包含 `name`, `url`, `status` (pending/done/failed), `retry_count` (max 3)
### 2. 退出逻辑 (目标导向)
- **成功退出**:当所有 `sources` 状态均为 `done` 时,输出 `<promise>COMPLETE</promise>` 并立即停止循环。
- **失败容错**:单个源抓取失败时,最多尝试 **3次**。若 3 次均失败,将状态标记为 `failed`,记录失败原因,跳过该源。
- **高效收工**:一旦所有源都处理完毕(状态为 `done``failed`),立即生成最终日报并交付,不强制跑完预设的最大轮次。
## 必抓源列表(按优先级排序)
| 优先级 | 源名称 | URL | 说明 |
|--------|--------|-----|------|
| **高** | AIBase日报 | https://news.aibase.com/zh/daily | 每日AI新闻汇总必抓内容精炼、覆盖全面 |
| 中 | IT之家AI频道 | https://next.ithome.com/ | 国内科技资讯AI专栏 |
| 中 | 36氪AI频道 | https://36kr.com/information/AI/ | 创投视角AI产业报道 |
| 中 | 机器之心 | https://www.jiqizhixin.com/articles | 专业AI媒体技术深度 |
| 中 | 量子位 | https://www.qbitai.com | AI前沿产品报道 |
> **注意**AIBase日报通常在当天发布内容即为当天新闻汇总是最高效的信息源。
## 工作流程
### ⚠️ 铁律:必须使用 Ralph 脚本启动!
**禁止手动乱抓!** 必须严格按以下流程执行:
```bash
# 第零步:启动 Ralph Loop必须执行
bash .opencode/skills/searchnews/scripts/ralph/ralph.sh 2026-01-19
```
脚本会自动初始化 `prd.json`,然后 Agent 按任务清单逐个处理。
### 第一步:初始化任务清单(由脚本完成)
脚本会在 `.opencode/skills/searchnews/scripts/ralph/prd.json` 中生成源网站列表,初始状态均为 `pending`。**AIBase日报必须放在第一位优先抓取。**
### 第二步:地毯式循环搜索
1. 读取 `prd.json` 中处于 `pending` 状态的源。
2. **每处理一个源,必须更新 prd.json 状态**pending → done/failed
3. **每轮迭代必须写入 progress.txt**,记录进度和失败原因。
4. 严格校验日期,仅保留目标日期的内容。
5. 抓取失败时 `retry_count + 1`最多重试3次。
### 第二点五步:深度检索(重要!)
**禁止只抓列表页!** 对于筛选出的重要新闻,必须深入到详情页抓取:
1. 从列表页提取新闻详情 URL
2. **逐条访问详情页**,获取完整内容
3. 提取关键信息:
- 完整正文(不是摘要)
- 技术细节、数据指标
- 原始来源/论文链接
- 划重点/要点总结
4. 深度检索的新闻质量远高于列表页复制粘贴
> **示例**AIBase日报列表页只有标题和简介但详情页有完整的技术解读、数据对比、划重点等深度内容。
### 第三步:去重与聚合
合并不同来源的相同新闻,保留详情最丰富的版本,合并标注来源。
### 第四步:输出结构化文档
文件存储在 `dailynews/YYYY-MM-DD/YYYY-MM-DD.md`(每日独立文件夹)。
#### 输出格式模板(必须严格遵守!)
```markdown
---
date: YYYY-MM-DD
type: 新闻日报
tags: [AI新闻, 日报]
---
# AI新闻日报 - YYYY-MM-DD
> 日期校验: 已通过 | 仅包含YYYY-MM-DD发布的新闻 | 已去重
---
## 1. 新闻标题
**分类**: 分类标签 | **来源**: 来源网站 | **时间**: YYYY/M/D HH:MM
一句话摘要,概括新闻核心内容。
**详情**
- 详情要点1包含具体数据、指标
- 详情要点2
- 详情要点3
- 详情要点4可选
- 详情要点5可选
---
## 2. 下一条新闻标题
...
*数据来源: 来源列表 | 整理时间: YYYY-MM-DD*
```
#### 格式要点
1. **每条新闻必须包含**:编号标题、分类|来源|时间、摘要、详情要点3-5条
2. **详情要点必须包含具体数据**:金额、百分比、时间节点、技术指标等
3. **分类标签参考**AI基础设施、AI产品、投融资、机器人、商业化、AI监管、行业观点、企业战略、AI能力、趣闻等
4. **时间格式**:精确到分钟(如 2026/1/19 15:28
5. **新闻数量要求**:每日至少整理 10-20 条新闻,不得偷懒只抓几条!
### 第五步:确认完成
当所有源状态均为 `done``failed` 时,输出:
```
<promise>COMPLETE</promise>
```
## 质量要求
- [ ] **必用脚本**:必须先执行 `ralph.sh` 初始化,禁止手动乱抓!
- [ ] **状态追踪**:每处理一个源必须更新 `prd.json` 状态。
- [ ] **进度记录**:每轮迭代必须写入 `progress.txt`
- [ ] **必抓AIBase**AIBase日报是必抓源每次整理新闻必须首先访问。
- [ ] **深度检索**:禁止只抓列表页!重要新闻必须深入详情页获取完整内容。
- [ ] **全量覆盖**:必须尝试清单中所有的源网站。
- [ ] **日期铁律**:严禁混入非目标日期的新闻。
- [ ] **标签映射**:必须对照 10 大分类进行精准打标。
- [ ] **详情完整**包含标题、摘要、3-5条详情要点、溯源链接、精确时间。
- [ ] **循环退出**:所有源 done/failed 后才输出 `<promise>COMPLETE</promise>`
## ⛔ 输出铁律(违反即解雇!)
### 被剔除的新闻禁止输出!
1. **只输出符合日期的新闻**:最终日报中只能出现目标日期的新闻
2. **剔除的不要提**:因日期不符被剔除的新闻,**禁止在任何地方输出或提及**
3. **不要显示剔除过程**:不要告诉用户"我剔除了 xx 条"、"以下是被过滤的"等废话
4. **静默过滤**:日期校验是内部逻辑,用户只需要看到最终结果,不需要知道你筛掉了什么
5. **简洁交付**:只输出干净的、符合日期的新闻列表,没有任何多余说明
**错误示例(禁止!)**
```
以下新闻因日期不符已剔除:
- xxx1月18日
- yyy1月20日
```
**正确做法**
静默跳过不符合日期的新闻,只输出符合的,一个字都不要多说。
## 资源引用
- **scripts/ralph/ralph.sh** - 启动主循环。
- **scripts/ralph/prd.json** - 动态任务清单。
- **scripts/ralph/progress.txt** - 迭代进度与重试日志。
- **references/keywords.md** - 10 大分类 100+ 标签地图。
- **templates/** - 视频风格模板库。
---
## 第六步:生成新闻视频(可选)
新闻日报整理完成后可生成AI新闻视频。
### 6.1 交互流程(必须询问!)
收到"生成新闻视频"请求后,**必须依次询问**
#### 问题1确认日期
```
生成哪天的新闻视频?
- 今天 (YYYY-MM-DD)
- 昨天 (YYYY-MM-DD)
- 自定义日期
```
#### 问题2是否使用风格模板
```
是否使用提示词库中的风格模板?
- 是,使用模板 (推荐) - 从21种预设风格中选择风格统一
- 否,自由生成 - 不使用模板AI自由发挥
```
**如果选择"使用模板"继续问题3否则跳到问题4**
#### 问题3选择视觉风格21种
**风格提示词库位置**`{prompts_dir}/图片生成风格/AI新闻早报风格/`
```
选择配图风格:
【科技感】
- 默认风格-Dashboard (推荐) - 科技仪表盘,数据可视化
- 赛博未来风 - 霓虹赛博朋克
- 科技媒体封面风 - 新闻媒体封面感
- AI操作系统界面风 - JARVIS控制台风格
- 深色金融终端风 - Bloomberg终端感
- 全息投影风 - 全息科幻
- 量子科幻风 - 量子粒子效果
【简约风】
- 毛玻璃拟态风 - 苹果风毛玻璃
- 信息图表风 - 数据信息图
- 极简信息设计风 - 扁平极简
【特色风】
- 未来报纸头版 - 报纸版式
- 杂志封面风 - 杂志风格
- 漫画分镜风 - 漫画格子
- 太空宇宙风 - 星空宇宙
- 水墨国风 - 中国风水墨
- 复古像素风 - 8bit像素
- 霓虹波普风 - 波普艺术
- 工程蓝图风 - 技术蓝图
- 自然有机风 - 环保自然
- 未来实验室风 - 实验室科研
- 社交媒体爆款风 - 抖音小红书
```
#### 问题4生成模式
```
选择生成模式:
- 完整版(总览+详情)(推荐) - 1张总览图 + N张详情图
- 仅总览 - 只生成1张总览图
- 仅详情 - 只生成N张详情图
```
#### 问题5新闻数量如果超过10条
```
日报共有XX条新闻如何处理
- 全部生成
- 精选10条 - 自动挑选最重要的
- 精选5条 - 只做头条
```
### 6.2 加载并使用风格模板
#### 步骤1读取模板文件
```
{prompts_dir}/图片生成风格/AI新闻早报风格/{风格名}.md
```
#### 步骤2提取"完整提示词模板"
每个风格文件都包含 `## 完整提示词模板` 段落,提取其中的提示词。
#### 步骤3替换变量
| 变量 | 替换内容 | 示例 |
|------|----------|------|
| `{日期}` | 日报日期 | 2026年01月23日 |
| `{N}` | 新闻条数 | 25 |
| `{新闻列表}` | 编号+标题列表 | 1. ChatGPT Atlas更新... |
#### 步骤4生成总览图
用替换后的提示词调用 image-service
```bash
python .opencode/skills/image-service/scripts/text_to_image.py \
"{替换变量后的完整提示词}" -r 16:9 -o "assets/video/{日期}/00_overview.png"
```
#### 步骤5生成详情图
每条新闻单独生成,提示词结构:
```
AI新闻详情配图 - {风格名}
【新闻标题】{标题}
【新闻要点】
- {要点1}
- {要点2}
- {要点3}
【视觉要求】
- 沿用{风格名}的视觉风格
- 中心突出新闻主题的3D/扁平化插图
- 标题大字清晰,要点用图标化卡片展示
- 底部水印:{your_watermark}
输出尺寸2560x1440 横版 16:9
```
### 6.3 视频生成流程
#### 目录结构
```
assets/video/{YYYY-MM-DD}/
├── 00_overview.png # 总览图
├── 01_xxx.png # 详情图1
├── 02_xxx.png # 详情图2
├── ...
├── audio/
│ ├── 00_overview.mp3 # 总览配音
│ ├── 01.mp3 # 详情配音1
│ └── ...
├── video.yaml # 合成配置
└── {日期}_ai_news.mp4 # 最终视频
```
#### 生成命令
```bash
# 1. 创建目录
mkdir -p "assets/video/{日期}/audio"
# 2. 并发生成配图(使用 text_to_image
python .opencode/skills/image-service/scripts/text_to_image.py \
"{风格提示词}" -r 16:9 -o "assets/video/{日期}/00_overview.png"
# 3. 并发生成配音
python .opencode/skills/video-creator/scripts/tts_generator.py \
--text "{配音文本}" \
--voice zh-CN-YunyangNeural \
--output "assets/video/{日期}/audio/XX.mp3"
# 4. 合成视频
python .opencode/skills/video-creator/scripts/video_maker.py \
assets/video/{日期}/video.yaml
```
### 6.4 配音规范
| 场景 | 文本模板 |
|------|----------|
| 总览 | "AI早报{日期}。今天共有{N}条AI行业重磅新闻让我们一起来看看" |
| 详情 | "第X条{标题}。{摘要}" |
| 结尾 | 最后一条追加"以上就是今天的AI早报感谢收看" |
**音色选择**
- `zh-CN-YunyangNeural` - 男声,新闻播报(推荐)
- `zh-CN-YunxiNeural` - 男声,阳光活泼
- `zh-CN-XiaoxiaoNeural` - 女声,温暖自然
### 6.5 视频配置模板 (video.yaml)
```yaml
output: {YYYY-MM-DD}_ai_news.mp4
scenes:
- image: 00_overview.png
audio: audio/00_overview.mp3
- image: 01_xxx.png
audio: audio/01.mp3
# ... 依次列出所有场景
```
### 6.6 完成后输出
```
✅ 视频生成完成!
📍 位置assets/video/{日期}/{日期}_ai_news.mp4
⏱️ 时长X分X秒
🎬 场景X个1总览 + X详情
🎨 风格:{选择的风格}
是否打开预览?
```
### 6.7 注意事项
1. **并发生成**:配图和配音都要并发,提升效率
2. **水印**:所有配图底部必须添加水印
3. **片尾**:视频自动拼接通用片尾
4. **BGM**:自动添加科技风背景音乐
5. **比例**:所有配图使用 16:9 横版