--- 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` 时,输出 `COMPLETE` 并立即停止循环。 - **失败容错**:单个源抓取失败时,最多尝试 **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` 时,输出: ``` COMPLETE ``` ## 质量要求 - [ ] **必用脚本**:必须先执行 `ralph.sh` 初始化,禁止手动乱抓! - [ ] **状态追踪**:每处理一个源必须更新 `prd.json` 状态。 - [ ] **进度记录**:每轮迭代必须写入 `progress.txt`。 - [ ] **必抓AIBase**:AIBase日报是必抓源,每次整理新闻必须首先访问。 - [ ] **深度检索**:禁止只抓列表页!重要新闻必须深入详情页获取完整内容。 - [ ] **全量覆盖**:必须尝试清单中所有的源网站。 - [ ] **日期铁律**:严禁混入非目标日期的新闻。 - [ ] **标签映射**:必须对照 10 大分类进行精准打标。 - [ ] **详情完整**:包含标题、摘要、3-5条详情要点、溯源链接、精确时间。 - [ ] **循环退出**:所有源 done/failed 后才输出 `COMPLETE`。 ## ⛔ 输出铁律(违反即解雇!) ### 被剔除的新闻禁止输出! 1. **只输出符合日期的新闻**:最终日报中只能出现目标日期的新闻 2. **剔除的不要提**:因日期不符被剔除的新闻,**禁止在任何地方输出或提及** 3. **不要显示剔除过程**:不要告诉用户"我剔除了 xx 条"、"以下是被过滤的"等废话 4. **静默过滤**:日期校验是内部逻辑,用户只需要看到最终结果,不需要知道你筛掉了什么 5. **简洁交付**:只输出干净的、符合日期的新闻列表,没有任何多余说明 **错误示例(禁止!)**: ``` 以下新闻因日期不符已剔除: - xxx(1月18日) - yyy(1月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 横版