# News Briefing Search

> 当用户需要根据指定时间输入（时间点、时间段或相对时间）或按最新顺序检索特定主题的新闻，并将结果整理为结构化新闻简报时使用

- Skill: `yumih1129/news-briefing-search` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add yumih1129/news-briefing-search`
- Raw SKILL.md: https://api.skillmd.com/api/skills/yumih1129/news-briefing-search/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: yumih1129 (https://skillmd.com/u/yumih1129)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/yumih1129/news-briefing-search

---


# Skill: 主题新闻简报检索 (news-briefing-search)

## 本地资源与权威顺序

1. `SKILL.md` frontmatter：只定义技能名称与触发描述。
2. `SKILL.md` 正文：只定义触发边界、工具规则、执行流程、输出结构、导出规则和异常处理；正文与其他本地文件冲突时，以正文为准。
3. `_meta.json`：只提供注册与展示元数据，不补充、不覆盖、不改写执行规则。

## 固定术语

- `时间输入`：用户输入中的原始时间表达，允许是时间点、时间段或相对时间。
- `检索时间窗`：执行检索时实际使用的时间范围；可由 `时间输入` 直接给出，也可由时间点窗口化得到。
- `当前工程根目录`：执行本技能时所在工程的根目录；未指定路径时的默认写入基准路径，也是相对路径回报基准。
- `宽泛关键词`：单字或极常见词，按“宽泛关键词处理”规则执行。
- `敏感题材`：命中“安全降级过滤”中四类范围的结果集合。
- `有效结果`：通过质量过滤、去重和字段完整性检查后，允许进入最终输出的结果。
- `必填6字段`：标题、来源、发布时间、摘要、正文、链接；`置信度` 只可作为可选附加字段，不计入必填6字段。

## 执行不变量

- 同一用户输入、同一当前日期、同一可用工具集合、同一工具返回集合下，解析结果、去重结果、排序结果、文件名和最终输出必须一致。
- 本文所有排序规则若未单独声明并列处理，固定按以下顺序打破并列：发布时间降序 > 来源名称字典序升序 > 标题字典序升序 > 原始返回顺序升序。
- 本文所有时间窗固定采用左闭右开区间：包含起点，不包含终点。
- 本文所有相对日期与相对时间均以执行时的本地当前日期和时区为基准；输出中必须展示换算后的绝对日期或绝对日期时间。
- 当前环境无法完成实时检索、写文件或访问路径时，必须显式报告失败原因，不得生成模拟结果、伪造链接或伪造写入成功。

## 有意边界

- 有意边界：新闻分类中的“正文核心语义”判断；保留原因：新闻标题可能缺少完整事件语义，强行改为纯关键词表会降低分类准确性。
- 有意边界：多语言结果中的标题译名、摘要或正文同义实体匹配；保留原因：跨语言实体名称无法稳定枚举，必须保留语义等价判断。
- 有意边界：正文事实提炼与 100-500 字客观改写；保留原因：摘要和正文需要基于新闻事实生成，不可完全替换为固定模板。

## 何时使用

当用户需要根据指定时间输入（时间点、时间段或相对时间）或按最新顺序检索特定主题的新闻，并将结果整理为结构化新闻简报时使用。

### 适用场景

- 了解某个话题的最新动态
- 获取某事件的新闻报道
- 整理特定领域的近期新闻
- 搜索某主题在指定时间内的新闻
- 搜索国外新闻、外媒报道或国际资讯

### 不适用场景

- 搜索特定公司的财报数据；应使用金融数据工具
- 搜索学术论文或专利；应使用学术搜索工具
- 搜索历史事件详情；应使用百科或知识库工具
- 获取实时行情、价格、交易数据；应使用金融数据 API

### 触发词

`核心`：搜索XX新闻、查找XX最新消息、搜一下XX、XX最近有什么新闻、整理成新闻列表、生成新闻摘要、XX最近动态、过去N天/周/月/年的XX新闻

`扩展`：获取XX资讯、XX今日热点、追踪XX动态、XX行业新闻、XX要闻、播报XX新闻、XX事件进展

`口语化`：XX有啥新消息、帮我看看XX的最新情况、查一下XX最近的消息、最近XX怎么样、有XX的最新动态吗、推荐些XX的新闻给我

`地区/行业`：XX地区有什么新闻、XX行业最近动态、看看XX公司或产品的消息、XX政策最新内容

`多语言`：用英文搜索XX、搜一下国外XX新闻、找些XX的英文报道、XX international news、XX最新进展（国际）、翻译XX外媒报道

---

## 工具原则

本技能不绑定任何固定的 WebSearch 实现名。执行时应先发现当前环境中可用的搜索工具，再根据能力、可用性和结果质量选择调用对象。

### 可用 WebSearch 工具的定义

同时满足全部前置条件时，才视为可用 WebSearch 工具。

前置条件：

- 当前环境中可调用。
- 能执行新闻或网页检索。
- 单条结果至少能返回标题、链接，以及来源、发布时间、摘要或片段中的至少 1 项。

能力评分项：

- 能接收主题关键词、时间输入解析结果或站点限定等搜索参数。
- 能返回标题、来源、发布时间、摘要或片段、链接中的至少 4 项。
- 能支持相关性排序或时间排序。

### 工具选择原则

按以下固定评分选择工具：

| 评分项 | 分值 |
|--------|------|
| 支持自然语言 query | +2 |
| 支持时间过滤参数 | +2 |
| 支持结构化返回 | +2 |
| 单条结果包含可追溯链接 | +2 |
| 稳定返回标题、来源、发布时间、摘要或片段、链接五字段 | +3 |
| 支持新闻结果检索 | +2 |
| 支持时间排序 | +1 |

选择规则：

1. 只对满足“可用 WebSearch 工具的定义”的工具评分。
2. 总分最高者作为首选工具。
3. 总分相同时，按评分项表格从上到下逐项比较，先命中更靠前评分项者胜出。
4. 仍并列时，选择在当前环境工具发现结果中排在最前的可调用工具。

### 并行或切换规则

- 单工具原始返回结果不足 5 条时，进入并行搜索。
- 单工具质量过滤后 `有效结果` 不足 5 条时，进入并行搜索。
- 用户明确要求“最新”时，进入并行搜索。
- 关键词命中“宽泛关键词处理”规则时，进入并行搜索。
- 当前环境只有 1 个可用 WebSearch 工具时，不执行并行搜索；继续使用该工具，并按“异常处理”和“宽泛关键词处理”规则决定是否扩大时间窗或停止。
- 当前环境没有任何可用 WebSearch 工具时，明确告知用户无法完成实时搜索，不伪造结果。

---

## 时间要素

| 表达 | 含义 |
|------|------|
| 近日 | 3天内 |
| 最近一周 / 近一周 | 7天内 |
| 近期 / 最近 | 30天内 |
| 过去N天 / 周 / 月 / 年 | N天按 N 个自然日；N周按 N*7 个自然日；N月和N年按日历月/年回退到同日，若目标月无同日则取该月最后一日 |
| 上个月 | 上月1日至月末 |
| 本月 | 本月1日至当日 |
| 本季度 | 当前季度首日至当日 |
| 近三个月 | 90天内 |
| 本周 | 本周一至当日 |

### 相对时间换算规则

所有相对时间先换算为绝对 `检索时间窗`，再进入 query 构建、文件命名和输出。

- `执行当前日期` 固定取执行时本地日期，记为 `D`。
- 未明确时分秒的相对时间，起点固定为起始日期 `00:00`，终点固定为结束日期次日 `00:00`。
- `近日`：起始日期为 `D-2天`，结束日期为 `D`。
- `最近一周 / 近一周`：起始日期为 `D-6天`，结束日期为 `D`。
- `近期 / 最近`：起始日期为 `D-29天`，结束日期为 `D`。
- `近三个月`：起始日期为 `D-89天`，结束日期为 `D`。
- `过去N天`：起始日期为 `D-(N-1)天`，结束日期为 `D`。
- `过去N周`：起始日期为 `D-(N*7-1)天`，结束日期为 `D`。
- `过去N月`：起始日期为 `D` 回退 N 个日历月后的同日；若目标月无同日，取目标月最后一日；结束日期为 `D`。
- `过去N年`：起始日期为 `D` 回退 N 个日历年后的同月同日；若目标年无同月同日，取目标月最后一日；结束日期为 `D`。
- `本周`：起始日期为本周一，结束日期为 `D`。
- `本月`：起始日期为当月 1 日，结束日期为 `D`。
- `上个月`：起始日期为上月 1 日，结束日期为上月最后一日。
- `本季度`：起始日期为当前季度首日，结束日期为 `D`。
- 若换算后 `检索时间窗` 超过 30 天，必须按“检索时间窗执行规则”拆批；`time-key` 仍按原始 `时间输入` 的时间语义类型生成。

### 时间输入类型规则

- 用户输入是**时间点**时，对外必须原样保留为时间点；对内必须计算出对应的 `检索时间窗`，不得只保留单点不做窗口化处理。
- 用户输入是**时间段**时，必须原样保留起止时间，不得压缩、扩展或改写为单个时间点。
- 用户输入是**相对时间**时，`时间输入` 字段固定保留用户原文，`检索时间窗` 字段固定展示解析后的绝对日期时间。
- 用户未指定时间输入时，`时间输入` 固定记为 `近期`；`检索时间窗` 默认取最近 30 天。
- 多语言搜索命中“多语言新闻处理”且用户未明确给出时间时，`时间输入` 仍固定记为 `近期`，但 `检索时间窗` 固定缩短为最近 7 天。
- 工具检索时如需扩大窗口，只能作为 `检索时间窗` 使用，不得覆盖或改写 `时间输入`。

### 时间点窗口化规则

- `YYYY-MM-DD` 这种日级时间点，`检索时间窗` 固定取该日 `00:00` 至次日 `00:00`。
- `YYYY-MM-DD HH`、`YYYY-MM-DD HH:MM` 或自然语言中的明确时刻，`检索时间窗` 固定取该小时起点到下一小时起点。
- 像“昨日”“今天”“前天”“明天”这类相对日词，先换算成绝对日期，再按日级时间点窗口化。
- 像“昨日15点”“今天上午9点”“昨日15:30”这类带时刻的时间点，先换算成绝对日期时间，再按小时窗口化；分钟信息只用于确定所属小时，不扩大为分钟级窗口。
- 若 `时间输入` 同时包含范围语义与单点语义，固定按范围语义处理。
- 若无法唯一判断，固定按更窄的可执行时间窗处理。

### 时间点映射示例

以下示例固定假设当前日期为 `2026-05-26`：

| 输入 | 时间输入 | 检索时间窗 |
|------|----------|--------------|
| 昨日 | 昨日 | `2026-05-25 00:00` 至 `2026-05-26 00:00` |
| 今天 | 今天 | `2026-05-26 00:00` 至 `2026-05-27 00:00` |
| 前天 | 前天 | `2026-05-24 00:00` 至 `2026-05-25 00:00` |
| 昨日15点 | 昨日15点 | `2026-05-25 15:00` 至 `2026-05-25 16:00` |
| 今天上午9点 | 今天上午9点 | `2026-05-26 09:00` 至 `2026-05-26 10:00` |
| 2026-05-25 | 2026-05-25 | `2026-05-25 00:00` 至 `2026-05-26 00:00` |
| 2026-05-25 14:00 | 2026-05-25 14:00 | `2026-05-25 14:00` 至 `2026-05-25 15:00` |

### 检索时间窗执行规则

- 单次 `检索时间窗` 不超过 30 天。
- 用户指定时间段超过 30 天时，按时间顺序拆成多个不超过 30 天且互不重叠的左闭右开批次分别搜索，最后合并、去重、排序。
- 用户指定的是时间点时，输出中保持时间点原样；检索时必须同步生成 `检索时间窗`。
- 用户未指定时间时，使用 `近期`，即最近 30 天。
- 时间解析失败时，默认使用 `近期`；若可识别出时间点语义，则先按日级或小时级最小窗口回退，不自动改写为时间段。
- 用户指定未来时间点或未来时间段时，保留用户 `时间输入` 并生成对应 `检索时间窗`；若检索无结果，按“无结果”规则返回，不自动改写为当前或过去时间窗。

### 检索时间窗扩大规则

仅在“宽泛关键词处理”或“异常处理”明确要求扩大窗口时执行，且最多扩大 1 次。

- 扩大后窗口长度固定为 30 天；原窗口长度已达到 30 天时，不再扩大。
- 时间点语义：保留原时间点所在窗口的终点，向前扩展到 30 天。
- 时间段语义：保留原时间段终点，向前扩展到 30 天；若原时间段已超过 30 天，按拆批规则执行，不再扩大。
- 相对时间语义：保留原窗口终点，向前扩展到 30 天。
- 未来时间点或未来时间段：不执行自动扩大；无结果时直接返回“未找到...”，并说明检索时间窗位于未来。
- 扩大窗口只改变内部 `检索时间窗`，不得改写输出中的 `时间输入`、query 中的原始时间文本或默认文件名的 `time-key`。

---

## 多语言新闻处理

### 适用情况

- 用户明确要求英文或外文新闻
- 搜索国外事件、国际组织或跨国企业动态
- 用户明确要求外媒报道、国际资讯或国际版新闻

### 处理流程

1. 识别语言需求，按以下顺序判断，命中后停止：
   - 用户明确指定语言。
   - 用户输入包含语言关键词，如“英文”“日文”“韩文”“international”。
   - 用户明确要求国外新闻、外媒报道或国际资讯。
   - 以上都不满足时，使用默认中文。
2. 构建多语言 query：
   - 在基础 query 后追加语言限定词。
   - 只有用户明确要求外媒、国外新闻或国际资讯时，才追加站点限定词，如 `site:reuters.com OR site:bbc.com`。
3. 处理返回内容，按以下规则输出：
   - 英文标题 + 英文正文：保留英文标题，在 `摘要` 与 `正文` 中提炼中文信息；标题前加 `[EN]`。
   - 英文标题 + 中文正文：保留英文标题与中文正文；标题前加 `[EN]`。
   - 中文标题或标题含中文关键词 + 英文正文：保留原标题；将正文关键事实翻译后写入 `摘要` 与 `正文`。
   - 同一事件存在多语言来源时，按“来源保留顺序”规则保留。
4. 标注输出：
   - 英文来源标记为 `来源: Reuters`、`来源: BBC` 等。
   - 英文标题前固定加 `[EN]`。

### 支持语言

| 语言 | 代码 | 说明 |
|------|------|------|
| 中文 | ZH | 默认语言 |
| 英文 | EN | 国际新闻、英文报道 |
| 日文 | JA | 日本相关新闻 |
| 韩文 | KO | 韩国相关新闻 |

### 来源保留顺序

- 用户指定来源
- 权威国际媒体
- 其他来源

同一层级内，保留发布时间最新者；发布时间相同时，保留 `必填6字段` 更完整者；仍相同时，保留原始返回顺序更靠前者。

### 多语言输出模板

```markdown
### 1. [EN] News Title in English
- **来源: Reuters**
- **发布时间**：YYYY-MM-DD
- **摘要**：中文提炼或翻译后的核心事实
- **正文**：...
- **链接**：https://...
```

---

## 执行流程

### 1. 解析关键词

从用户输入中提取主题关键词和 `时间输入`，并区分以下三类：

- 时间点：如 `2026-05-01`、`2026-05-01 14:00`、`昨日`
- 时间段：如 `2026-05-01 至 2026-05-07`
- 相对时间：如 `最近一周`、`本月`、`近30天`

若用户未指定 `时间输入`，固定视为 `近期`（30天）。

同时提取以下导出相关信息：

- 导出格式：`Markdown` 或 `JSON`
- 目标路径：用户给出的文件路径或目录路径
- 是否要求写文件：命中“导出”“保存”“写入”“输出到文件”“放到某目录”等意图时为是

导出意图判断按以下顺序执行，命中后停止：

1. 用户明确说“导出为 Markdown / JSON”。
2. 用户明确说“保存到”“写到”“输出到文件”“放到目录”。
3. 用户给出明确的文件路径或目录路径，并要求产出文件。
4. 以上都不满足时，视为仅在对话中返回结果，不写文件。

### 宽泛关键词处理

- 单字或极常见词，如“中国”“新闻”“市场”，判定为 `宽泛关键词`。
- 处理策略按以下顺序执行：
  1. 先按当前 `检索时间窗` 搜索。
  2. 若 `有效结果` 不足 5 条，或标题关键词重叠率 < 50%，且当前 `检索时间窗` 小于 30 天，则扩大到最多 30 天后重试一次。
  3. 若重试后仍不足 5 条，或当前 `检索时间窗` 已经是 30 天，则提示用户补充限定词。

### 2. 构建 Query

按以下顺序构建 query，并把结果交给当前可用的 WebSearch 工具：

1. 主题关键词
2. `时间输入`
3. 固定词“新闻”
4. 语言限定词；仅在命中“多语言新闻处理”时追加
5. 来源或站点限定词；仅在用户指定来源，或命中多语言外媒场景时追加

构建规则：

- query 中固定使用用户原始 `时间输入` 文本。
- 用户给的是时间点时，query 中保持时间点，不改写成时间段。
- 用户给的是时间段时，query 中保持时间段，不改写成时间点。
- `检索时间窗` 作为工具参数使用时，可以与 query 同时传入；不得反向改写 query 中的 `时间输入`。

示例：

- 基础：`人工智能 最近一周 新闻`
- 时间点：`人工智能 2026-05-01 新闻`
- 时间段：`人工智能 2026-05-01 至 2026-05-07 新闻`

### 3. 发现并调用搜索工具

1. 检查当前环境中是否存在可用的 WebSearch 工具。
2. 按“工具选择原则”筛选最合适的工具。
3. 用统一 query 发起搜索；若工具支持时间过滤、站点限定或排序参数，则同步传入。
4. 记录本次所用工具名、搜索参数和返回批次，便于后续去重、复核和来源标注。

### 4. 质量过滤

保留标题含关键词且正文有实质内容的条目。过滤特征：

- 广告或软文：含“限时优惠”“扫码领取”“点击查看”等营销话术
- 内容空洞：正文不足 100 字符且无实质信息量

#### 正文实质内容判断

| 评估项 | 得分 | 说明 |
|--------|------|------|
| 字符数 ≥ 100 | +4分 | 长度达标 |
| 字符数 50-99 | +2分 | 长度基本达标 |
| 字符数 < 50 | +0分 | 长度不足 |
| 含具体数字（日期、百分比、金额等）≥1处 | +2分 | - |
| 含具体名称（人名、机构名、地名、产品名）≥2个 | +2分 | - |
| 含引述（原话引用、据XX报道等）≥1处 | +1分 | - |
| 含具体动作或事件（动词+结果）≥1组 | +1分 | - |

通过标准：总分 ≥ 5 分。

快速判断：

- 字符数 ≥ 100，直接通过。
- 字符数 < 50，直接不通过。
- 字符数 50-99，按评分表判断。

### 4.1 安全降级过滤

当用户主题过宽，或检索结果中出现 `敏感题材` 占比过高时，先执行安全降级，不直接整包输出。

`敏感题材` 范围：

- 政治、外交、领导人活动
- 军事、冲突、制裁、攻击
- 灾害、事故、疏散、伤亡
- 公共安全、治安、暴力事件

降级规则：

1. 若用户明确指定上述敏感题材，允许正常检索，但输出前仍需做质量过滤。
2. 若用户主题是“热点新闻”“今日热点”“最新新闻”等宽泛词，且结果中敏感题材占比超过 50%，则默认只保留非敏感题材结果。
3. 若过滤后剩余结果少于 3 条，返回简短提示“当前主题命中较多敏感新闻，已缩减为安全可输出结果”，并仅输出剩余结果或提示用户收窄主题。
4. 若工具或模型仍返回 `new_sensitive` 类拦截，立即停止扩大搜索范围，不再自动重试更宽泛结果。

### 5. 去重检查

按以下顺序去重，命中后停止：

1. 标题完全相同但来源不同，如转载：保留更新时间最新的。
2. 字符重叠率 ≥ 80%：保留发布时间最新者。
3. 当无法通过字符重叠率判断时，若标题主语和宾语相同、动词近义，如“发布”与“推出”，判定为语义重复，保留更新时间最新者。
4. 若去重候选的发布时间相同，固定保留来源权威性更高者；仍相同则保留 `必填6字段` 更完整者；仍相同则保留原始返回顺序更靠前者。

### 6. 验证与输出

1. 验证 `必填6字段` 完整：标题、来源、发布时间、摘要、正文、链接。
2. 自动分类归入“分类体系”中的预定义分类。
3. 分类判断按以下顺序执行：标题关键词匹配 > 正文核心语义 > 来源媒体类型。
4. 若同一条新闻同时命中多个分类，按“分类体系”表格中的分类顺序取第一个命中的分类。
5. 排序输出：分类之间先按新闻数量降序，数量相同时按“分类体系”表格顺序；分类内按发布时间降序，发布时间相同时按来源字母序，再按标题字典序。

### 7. 导出路径解析与写文件

仅当 Step 1 判定为“要求写文件”时执行本步骤；否则跳过。

#### 导出格式规则

按以下顺序确定导出格式，命中后停止：

1. 用户明确指定 `Markdown`，导出 `.md`
2. 用户明确指定 `JSON`，导出 `.json`
3. 用户只要求“保存 / 导出”但未指定格式，默认导出 `.md`

若用户明确指定导出格式，同时又给出冲突扩展名的文件路径，路径优先级高于格式推断：必须写入用户指定文件路径，并在最终回复中说明“文件扩展名与内容格式不一致”；不得自动改名或改扩展名。若用户只给目录，则严格按导出格式生成扩展名。

#### 目标路径解析规则

按以下顺序解析目标路径，命中后停止：

1. 用户明确给出完整文件路径，直接写入该文件路径。
2. 用户明确给出目录路径，必须写入该目录，不得回退到默认目录。
3. 用户未给路径，写入 `当前工程根目录`。

路径判定规则：

- 以下任一情况视为“文件路径”：
  - 用户明确说“文件名”“保存为”“写入到某个 `.md` 或 `.json` 文件”
  - 路径最后一段包含扩展名 `.md` 或 `.json`
- 以下任一情况视为“目录路径”：
  - 用户明确说“目录”“文件夹”“路径下”
  - 路径以 `/` 结尾
  - 路径最后一段不含扩展名，且用户语义明确要求“放到某个目录”
- 当“文件路径”与“目录路径”两种判定同时可能成立时，以用户显式措辞优先；若用户未显式说明，则以是否带 `.md` 或 `.json` 扩展名作为唯一判定依据。

路径执行规则：

- 用户给出相对路径时，相对 `当前工程根目录` 解析。
- 用户给出相对路径时，最终回报必须保留用户原始路径片段，只补全必要的文件名或扩展名，不得改写为其他目录层级。
- 用户给出目录路径时，文件名固定按“默认文件名规则”生成。
- 用户给出文件路径时，不改文件名；若未带扩展名，则按导出格式补全扩展名。
- 用户给出目录路径且目录不存在时，若当前环境允许创建目录，则创建后写入；若不允许创建，则明确告知路径不可写，不得静默回退到默认目录。
- 用户给出文件路径但父目录不存在时，按上一条处理。
- 用户给出的绝对路径不在当前环境允许写入范围内时，直接判定为路径不可写；不得改写到 `当前工程根目录`。

相对路径示例：

- 用户给出目录 `outputs/news/`，最终写入示例：`outputs/news/news-briefing-热点新闻-20260526-1200-1300.md`
- 用户给出文件 `reports/daily.md`，最终写入示例：`reports/daily.md`
- 用户未给路径，最终写入示例：`news-briefing-热点新闻-recent-7d.md`

#### 默认文件名规则

默认文件名固定为：

`news-briefing-{topic-key}-{time-key}.{ext}`

文件名中的 `time-key` 固定先按**时间语义类型**判定，再按对应格式生成；不得仅按字面是否含“昨”“近”“本”等相对词直接决定格式。

时间语义类型判定按以下顺序执行，命中后停止：

1. `时间点语义`
   - 绝对时间点：如 `2026-05-25`、`2026-05-25 14:00`
   - 相对时间点：如 `昨日`、`今天`、`前天`、`昨日15点`、`今天上午9点`
2. `时间段语义`
   - 显式起止时间段：如 `2026-05-01 至 2026-05-07`
   - 可唯一换算为固定起止边界的相对时间段：如 `本周`、`本月`、`上个月`、`本季度`
3. `相对时间语义`
   - 滚动时长表达：如 `近30天`、`最近一周`、`过去两个月`、`近日`、`近期`、`最近`

生成规则：

- `topic-key`：
  - 从主题关键词中提取 1-4 个高信号词，按原始出现顺序生成短标识。
  - 优先保留实体名、行业名、主题核心词。
  - 删除“新闻”“最新”“消息”“动态”“简报”“整理”“请帮我看”等泛化词。
  - 若输入本身就是“热点新闻”“今日热点”“每日热点”这类宽泛标题，统一收缩为 `热点新闻`。
  - 若仍过长，则截断到 12 个汉字或 24 个字符以内。
- `time-key`：
  - `时间点语义`：先换算为绝对日期或绝对日期时间，再使用单个日期或小时键折叠值，如 `20260525`、`20260525-12`
  - `时间段语义`：先换算为绝对起止时间，再按粒度生成折叠值：
    - 同日时间段：`YYYYMMDD-HHMM-HHMM`
    - 跨日时间段：`YYYYMMDD-HHMM-YYYYMMDD-HHMM`
    - 纯日期段：`YYYYMMDD-YYYYMMDD`
  - `相对时间语义`：若可唯一换算为天数，则使用 `recent-Nd`，其中 `N` 为天数，如 `recent-30d`、`recent-7d`；否则保留原相对时间文本并去除空格
- `ext`：由导出格式决定，只能是 `md` 或 `json`

收缩规则：

- 文件名总长度固定控制在 60 个字符以内，不含扩展名。
- 若 `topic-key` 仍然过长，先删除修饰词，再保留最核心的 2-3 个词。
- 不得直接把完整用户 query 或完整文章标题写入文件名。
- 命中 `时间点语义` 时，文件名必须折叠为 `YYYYMMDD` 或 `YYYYMMDD-HH` 这种单键形式。
- 命中 `时间段语义` 时，文件名必须折叠为同日 `YYYYMMDD-HHMM-HHMM`、跨日 `YYYYMMDD-HHMM-YYYYMMDD-HHMM` 或纯日期段 `YYYYMMDD-YYYYMMDD`。
- 命中 `相对时间语义` 时，文件名必须优先使用 `recent-Nd`；只有无法唯一换算为天数时，才允许保留归一化后的原相对时间文本。
- 只有命中 `时间段语义` 时，才允许写成区间形式；内部 `检索时间窗` 不得单独触发区间文件名。

示例：

- 以下相对时间命名示例固定假设当前日期为 `2026-05-26`
- 主题“人工智能”、时间段 `2026-05-01` 至 `2026-05-07`、Markdown 导出
  文件名：`news-briefing-人工智能-20260501-20260507.md`
- 主题“热点新闻”、时间段 `本周`、Markdown 导出
  文件名：`news-briefing-热点新闻-20260525-20260526.md`
- 主题“热点新闻”、时间点 `2026-05-25`、Markdown 导出
  文件名：`news-briefing-热点新闻-20260525.md`
- 主题“热点新闻”、时间点 `昨日15点`、Markdown 导出
  文件名：`news-briefing-热点新闻-20260525-15.md`
- 主题“热点新闻”、时间段 `2026-05-26 12:00 至 2026-05-26 13:00`、Markdown 导出
  文件名：`news-briefing-热点新闻-20260526-1200-1300.md`
- 主题“热点新闻”、近 30 天、Markdown 导出
  文件名：`news-briefing-热点新闻-recent-30d.md`
- 主题“热点新闻”、相对时间 `最近一周`、Markdown 导出
  文件名：`news-briefing-热点新闻-recent-7d.md`
- 主题“热点新闻”、近 7 天、Markdown 导出
  文件名：`news-briefing-热点新闻-recent-7d.md`

#### 写文件门禁

- 用户指定目录时，最终写入路径必须落在该目录下。
- 用户指定文件路径时，最终写入路径必须与该文件路径一致。
- 任何写文件失败都必须显式报错，不得改写为“仅在对话中输出”或回退到其他默认路径。
- 导出成功后，最终回复中必须给出相对于 `当前工程根目录` 的实际写入路径；若用户输入本身就是相对路径，回报时必须保留该相对路径片段。

---

## 分类体系

| 分类标签 | 适用场景 | 示例 |
|----------|----------|------|
| 国内要闻 | 中央政策、领导调研、外交活动、重大工程 | 习近平讲话、李强调研、普京访华 |
| 国际动态 | 国际冲突、跨国事件、外交谈判、地区局势 | 俄乌冲突、中东局势、美伊谈判 |
| 财经证券 | 金融市场、投资理财、股市债市、宏观经济政策 | 离境退税政策、上交所调研、股市动态 |
| 科技体育 | 科技突破、体育赛事、AI进展 | AI预测、世界杯、科技发布 |
| 社会民生 | 民生政策、社会事件、教育医疗、文化活动 | 全国助残日、食品安全、文化活动 |
| 行业观察 | 产业发展趋势、行业报告、企业动态、新技术应用 | 新能源车销量、芯片行业动态、AI赋能制造业 |

### 分类边界说明

- `财经证券` 侧重金融市场操作层面，如炒股、投资、理财、证券交易。
- `行业观察` 侧重产业发展层面，如趋势、报告、企业动态、新技术应用。
- `社会民生` 侧重与民众日常生活直接相关的政策、事件和服务，如政策落地、社会事件、公共服务。

### 社会民生 vs 行业观察 区分规则

| 维度 | 社会民生 | 行业观察 |
|------|----------|----------|
| 主体 | 普通民众、消费者、患者、学生等个体 | 企业、行业从业者、投资者、分析师 |
| 内容 | 政策对个人的影响、社会事件、服务体验 | 产业趋势、企业经营、技术革新 |
| 关键词 | 助残、就业、医疗、教育、养老、社区、文化活动 | 销量、产能、技术突破、并购、财报、新能源、半导体 |
| 举例 | “全国助残日活动启动” → 社会民生 | “新能源汽车Q1销量增长20%” → 行业观察 |
| 双重归属时 | 政策解读类 → 社会民生 | 产业分析类 → 行业观察 |

分类判断优先级：标题关键词匹配 > 正文核心语义 > 来源媒体类型；仍无法区分时，按分类表顺序从上到下归类。

---

## 输出格式

### 完整输出模板

```markdown
# 主题新闻简报

> **时间输入**：XXX
> **检索时间窗**：YYYY-MM-DD HH:MM 至 YYYY-MM-DD HH:MM / YYYY-MM-DD 至 YYYY-MM-DD
> **主题关键词**：XXX
> **结果数量**：N条

---

## 内容分类

- **分类名称1**：X条
- **分类名称2**：X条

---

## 分类名称1

### 1. 新闻标题1
- **来源: XXX**
- **发布时间**：YYYY-MM-DD HH:MM
- **摘要**：...
- **正文**：...
- **链接**：https://...

### 2. 新闻标题2
...
```

### 单条新闻格式

```markdown
### 序号. 新闻标题
- **来源: XXX**
- **发布时间**：YYYY-MM-DD HH:MM（若仅有日期则保留 YYYY-MM-DD）
- **摘要**：1-2句话提炼核心事实
- **正文**：100-500字客观叙述；不得与摘要重复
- **链接**：https://...（有效URL）
- **置信度**（可选）：✅ 已验证 / ⚠️ 单源 / ❓ 待核实
```

### 输出规则

- 对话内输出和 Markdown 导出必须使用“完整输出模板”。
- JSON 导出必须使用“JSON 示例”中的对象结构，不输出 Markdown 标题、引用块或列表标记。
- 对话内输出和 Markdown 导出开头必须包含分类统计。
- 对话内输出、Markdown 导出和 JSON 导出的头部字段必须包含：`时间输入`、`检索时间窗`、`主题关键词`、`结果数量`。
- 新闻条目必须完整包含 `必填6字段`；`置信度` 只在有额外判断信息时附加。
- 对话内输出和 Markdown 导出使用 `##` 二级标题作为分类标记。
- 对话内输出和 Markdown 导出使用 `### 序号.` 作为新闻标题标记，序号在整篇输出中连续编号。
- 分类按新闻数量降序排列；数量相同时按“分类体系”表格顺序。
- 同分类内按发布时间降序；发布时间相同时按来源字母序，再按标题字典序。

### 字段关系

- `摘要`：回答“是什么”，简短精炼。
- `正文`：回答“详细是什么”，是摘要的延伸，不可与摘要重复。

### 导出功能

- `Markdown` 导出：用户说“导出为 Markdown”时，按“导出路径解析与写文件”执行。
- `JSON` 导出：用户说“导出为 JSON”时，按“导出路径解析与写文件”执行。
- `目录导出`：用户说“保存到某目录”“写到某目录”“放到某个文件夹”时，按“导出路径解析与写文件”执行。

JSON 示例：

```json
{
  "时间输入": "XXX",
  "检索时间窗": "YYYY-MM-DD HH:MM 至 YYYY-MM-DD HH:MM",
  "主题关键词": "XXX",
  "结果数量": 1,
  "内容分类": {
    "分类名称1": 1
  },
  "新闻": [
    {
      "序号": 1,
      "分类": "分类名称1",
      "标题": "...",
      "来源": "...",
      "发布时间": "...",
      "摘要": "...",
      "正文": "...",
      "链接": "..."
    }
  ]
}
```

---

## 质量标准

| 指标 | 标准 |
|------|------|
| 返回数量 | 默认目标 5-10 条 / 次；用户可指定 1-20 条 |
| 内容相关性 | 标题必须含主题关键词；多语言结果允许用标题译名、摘要或正文中的同义实体名满足关键词匹配 |
| 时效性 | 仅收录落在 `检索时间窗` 内的新闻 |
| 客观性 | 正文叙述客观，避免主观评价 |
| 链接有效性 | 必须可访问的真实 URL |

返回数量说明：

- 用户未指定数量时，按相关性排序取前 10 条；过滤和去重后不足 10 条则保留全部，因此常见返回区间为 5-10 条。
- 用户指定返回数量为 1-20 条时，按用户要求执行；超过 10 条时，自动启用并行搜索。
- 用户指定返回数量小于 1 条时，固定按 1 条处理；用户指定返回数量超过 20 条时，固定按 20 条处理，并在回复中说明已按上限处理。

字段补全规则：

- 工具结果缺少标题或链接时，直接丢弃该条。
- 工具结果缺少来源时，来源固定写为链接域名；链接域名无法解析时，丢弃该条。
- 工具结果缺少发布时间时，允许再调用同一来源页面或同一工具补取；补取失败后丢弃该条。
- 工具结果只有摘要或片段、没有正文时，可用摘要或片段生成正文；生成后的正文仍必须通过“正文实质内容判断”。
- 工具结果缺少摘要时，可用正文提炼摘要；提炼后的摘要不得与正文首句完全相同。
- 补全后的条目仍缺少 `必填6字段` 任一字段时，不纳入最终输出。

标题关键词匹配规则：

- 中文结果：标题必须包含主题关键词中的至少 1 个实体词或核心名词。
- 多语言结果：标题、标题译名、摘要或正文中必须包含主题关键词的原文、译名或同义实体名中的至少 1 项。
- 用户主题为宽泛关键词时，标题必须命中用户关键词或该关键词的直接下位主题；否则不纳入 `有效结果`。

---

## 异常处理

| 情况 | 处理方式 |
|------|----------|
| 结果不足 5 条 | 直接返回，注明“找到 N 条结果”；若用户指定数量小于 5，则不触发不足提示 |
| 结果超过目标数量 | 按相关性保留到目标数量；用户未指定目标数量时保留前 10 条 |
| 无结果 | 当前 `检索时间窗` 小于 30 天时扩大到最多 30 天重试 1 次；仍无则返回“未找到...” |
| 工具返回格式异常 | 跳过该条；单次搜索任务累计异常条目 > 3 条时终止搜索 |
| 时间解析失败 | 默认使用 `近期`（30天）；若用户 `时间输入` 是时间点，则先尝试按日级或小时级最小窗口回退，不自动改写为时间段 |
| 搜索工具限流 429 | 切换到其他可用 WebSearch 工具；全部限流时等待 30 秒后只重试 1 次；仍失败则告知用户 |
| 网络超时或失败 | 切换到其他可用 WebSearch 工具；全部失败则告知用户“网络连接异常” |
| 内容安全拦截 | 跳过该条；单次搜索任务累计拦截 > 5 条时终止搜索 |
| `new_sensitive` 类输出拦截 | 先缩窄结果范围到非敏感题材；若仍触发则停止输出并提示用户收窄主题，不得扩大搜索或伪造结果 |
| 搜索服务未授权或不可用 | 告知用户“当前环境没有可用的搜索服务”，并停止本次新闻检索 |
| 用户指定导出目录但未按该目录写入 | 视为执行失败；停止并重新按用户指定目录写入，不得回退到默认路径 |
| 用户指定路径不存在且当前环境不可创建 | 告知用户路径不可写或目录不存在，不得回退到默认路径 |
| 用户指定路径与导出格式扩展名冲突 | 保留用户指定文件路径，按该路径写入，并在回复中说明实际格式与文件扩展名不一致的风险；若用户只给目录，则按导出格式生成扩展名 |

---

## 工具使用

### 降级顺序

1. 当前首选 WebSearch 工具
2. 其他可用 WebSearch 工具
3. 全部失败，返回“当前搜索服务暂时不可用”

降级时必须保持同一 `时间输入`、同一 `检索时间窗`、同一 query 构建规则和同一过滤标准；只允许更换工具，不允许同时扩大时间窗或改写主题关键词，除非命中“宽泛关键词处理”或“异常处理”中的明确扩大规则。

### 并行搜索

适用场景：命中“并行或切换规则”，且当前环境中至少有两个可用 WebSearch 工具时。

执行方式：同时调用多个可用 WebSearch 工具，取结果并集；合并后统一执行质量过滤、去重、安全降级和排序；来源标记为对应工具名或来源名，例如 `[来源: tool_a]`、`[来源: Reuters]`。

### 工具失败回退

- 首选工具不可用时，切换到评分次高的可用工具并保持相同 query 结构。
- 所有可用工具都失败时，明确告知用户失败原因，不输出伪结果。
- 工具返回字段不完整时，按“字段补全规则”处理；补全后仍缺失 `必填6字段` 中任一字段时，不纳入最终输出。

---

## 来源偏好

用户可指定优先来源，如“优先使用新华社的消息”。相同内容按以下顺序保留：

1. 用户指定来源
2. 权威性参考顺序更高的来源
3. 发布时间更新的来源
4. `必填6字段` 更完整的来源
5. 原始返回顺序更靠前的来源

用户指定来源没有可用结果时，按以下顺序处理：

1. 若用户说“只使用 / 仅使用”某来源，返回无结果说明，不回退到其他来源。
2. 若用户说“优先使用”某来源，回退到权威性参考顺序更高的可用来源。
3. 若仍无结果，回退到其他可用来源。

权威性参考：新华社 > 人民日报 > 央视新闻 > 省级主流媒体 > 商业媒体

---

## 检索历史（会话级）

- 记录本次会话的主题关键词和 `时间输入`，最多保留 10 条；超过 10 条时按先进先出移除最早记录。
- 存储时保留 `时间输入` 类型，不把时间点自动归并为时间段。
- 用户可引用“继续搜索上面的主题”“用上次的时间输入搜索XX”。
- 用户明确说“清除搜索历史”时清空。

---

## 验证与回归

对本 SKILL 做任何修改后，交付前至少完成 1 轮场景走查；若修改影响触发、时间处理、导出、异常处理或安全降级，则必须完成完整回归。

### 最小走查要求

至少覆盖以下 1 个正向场景：

- `搜索人工智能最近一周的新闻`

### 完整回归清单

修改命中以下任一范围时，必须按顺序完成全部 6 个场景走查：

1. 触发词、适用与不适用场景、工具选择原则
2. 时间要素、时间点窗口化、Query 构建
3. 近 N 天、时间点、时间段的文件命名
4. 导出格式、路径解析、写文件门禁、工程相对路径回报
5. 安全降级过滤、异常处理、并行与回退规则
6. 多语言处理、来源保留顺序、输出字段完整性

### 标准场景

1. 正向触发：`搜索人工智能最近一周的新闻`
   验收点：能完成解析关键词、构建 Query、发现工具、过滤、去重、输出简报的完整链路
2. 时间点命名：`把热点新闻昨日的结果导出为 Markdown`
   验收点：`时间输入` 保留为“昨日”；`检索时间窗` 生成为单日窗口；文件名折叠为单日键，不写成区间
3. 近 N 天命名：`把热点新闻近30天结果保存到 outputs/news/`
   验收点：文件名使用 `recent-30d`；最终回报路径保留 `outputs/news/` 相对路径片段
4. 边界误触发：`搜索茅台股价`
   验收点：识别为金融数据需求，按不适用场景处理，不误用新闻简报流程
5. 空结果回退：`搜索XYZ完全未知主题`
   验收点：先按当前时间窗检索，再扩大到最多 30 天重试；仍无结果时明确返回“未找到”
6. 高风险写文件：`保存到 /Documents/不存在的目录`
   验收点：正确识别路径不可写或不可创建，不回退到默认路径，不伪造成功

### 回归记录要求

- 若本次修改影响执行逻辑，回复或变更说明中至少记录：修改范围、已走查场景、是否通过。
- 若存在未验证项，必须明确写出未验证范围，不得默认视为已通过。

---

## 维护与变更

### 维护原则

- 保持现有触发边界、执行顺序、输出契约和安全降级规则稳定。
- 新增规则时，优先补充到已有章节，不并列制造第二套语义相近规则。
- 若新规则与旧规则冲突，以正文中更具体、约束更强、可执行性更高的规则为准，并同步删除旧歧义表述。
- 修改涉及 `时间输入`、`检索时间窗`、文件命名、路径回报时，必须做整章交叉复核，不允许只改单处示例。

### 变更记录规范

每次修改本 SKILL 时，至少同步维护以下信息：

1. 本次修改影响的章节
2. 修改目标：修正歧义 / 收紧边界 / 修复异常处理 / 补全一致性
3. 是否需要同步更新 `_meta.json` 的 `version` 和 `updatedAt`
4. 是否完成“验证与回归”中的最小走查或完整回归

### 版本语义

- 仅文案润色、非规则性表达收敛：补丁版本
- 新增可执行规则、输出字段、异常分支、命名规则：次版本
- 改变触发边界、执行链路、输出契约或默认行为：主版本或显式重大变更说明

### 可复用能力说明

本 SKILL 虽定位于新闻检索，但以下能力可作为后续同类信息检索技能的复用参考：

- 时间输入解析与时间点窗口化
- 多语言新闻处理
- 写文件路径门禁与工程相对路径回报
- 时间命名收缩规则
- 敏感题材安全降级与异常回退

