# Jin10

> 金十快讯数据服务。三层架构：基础层（采集+清洗+存储）→ 功能层（搜索+总结+健康检查）→ 应用层（事件追踪+告警+定时推送）。 触发：快讯、金十、新闻总结、过去X小时发生了什么、搜索关键词、追踪事件、重要快讯、采集状态等。

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

---


# Jin10 快讯服务

## 架构

```
┌─────────────────────────────────────────┐
│  应用层（功能层的组合 + 自动化）           │
│  ├─ 事件追踪 = 搜索 + 总结               │
│  ├─ 关键词告警 = 搜索 + 推送              │
│  ├─ 定时推送 = 总结 + cron               │
│  └─ 热词统计 = 搜索 + 聚合               │
├─────────────────────────────────────────┤
│  功能层（原子能力）                       │
│  ├─ 快讯搜索（基础 + 高级）               │
│  ├─ 时间线总结（V7 简报）                 │
│  └─ 采集健康度查询                        │
├─────────────────────────────────────────┤
│  基础层                                  │
│  ├─ 金十 API 轮询（每15秒）              │
│  ├─ 内容清洗（HTML → 纯文本）            │
│  ├─ 过滤（广告/汇总/点击诱导/空内容）     │
│  └─ SQLite 存储                         │
└─────────────────────────────────────────┘
```

---

## 基础层

### 数据库

路径（按优先级）：`skills/jin10/data/jin10.db` → `data/news-flash.db`

**flash_news 表：**
| 字段 | 说明 |
|------|------|
| time | 发布时间 YYYY-MM-DD HH:MM:SS |
| content | 正文（纯文本，已清洗） |
| title | 标题（部分有） |
| important | 0=普通 1=重要 |
| channels | 频道 JSON [1]速报 [2]A股 [3]商品 [4]债券 [5]国际 |

**collector_stats 表：** polls/saves/skips/errors/last_error/started_at

### 过滤规则（入库前排除）
- 广告、HTML 列表合集、点击诱导（"点击查看…"）
- 汇总类（>1000字+编号列表，是单条快讯的重复合并）
- 空内容或极短内容（<5字）

### 采集服务
```bash
node skills/jin10/scripts/collector.js          # 常驻采集
node skills/jin10/scripts/collector.js --test    # 测试过滤效果
```

---

## 功能层

### 1. 快讯搜索

**触发**："搜一下降息相关快讯""最近有没有关于美联储的消息""查查原油"

```bash
# 基础
node skills/jin10/scripts/query.js --hours 8
node skills/jin10/scripts/query.js --today --important

# 高级
node skills/jin10/scripts/query.js --keyword "降息,加息"                    # OR
node skills/jin10/scripts/query.js --keyword "美联储" --keyword-and "降息"   # AND
node skills/jin10/scripts/query.js --channel 3 --hours 24                   # 按频道
node skills/jin10/scripts/query.js --exclude "点击查看"                     # 排除
node skills/jin10/scripts/query.js --from "2026-03-14 22:00" --to "2026-03-15 08:00"

# 输出：--json / --brief / --count / --desc / --limit N
```

### 2. 时间线总结

**触发**："过去8小时快讯总结""昨晚发生了什么""从下午3点到现在的快讯"

**流程：**

1. **拉数据** — `query.js --hours N --json` 或直接 SQL，全量拉取
2. **去重** — 跳过汇总类（基础层已过滤大部分，分析时再二次排重）
3. **分析** — 识别主线（4h→2-3条 / 8h→3-5条 / 24h→4-7条），按时间线分4-8个事件块，找口风变化和立场矛盾
4. **输出简报** — V7 格式：

```markdown
# 快讯简报 | {起始} ~ {结束}

**{总导语，50字概括全局}**

**{主题1导语，一句话概括该主题核心}**

自然语言叙事，像讲故事一样串联因果。时间点和发言人用小括号标注
（22:07，特朗普），关键时间节点加粗强调。段落之间有转折、因果、
对比，不是干巴巴的时间+内容列表。

**{主题2导语}**

继续自然叙事……

**{主题3导语}**

继续自然叙事……

## 综合判断

**{领域}：{方向}。** {逻辑}

**最核心的变量：** {关键变量+判断}
```

⚠️ 格式规则：
- 没有 `##` 事件标题，没有 `---` 分隔线（综合判断除外）
- 每个主题用**加粗导语**开头，下面直接跟自然语言叙事
- 时间点和发言人用小括号嵌在句子里，如（14:22，革命卫队）
- 关键时间节点可加粗，如 **00:43**
- 叙事要连贯，像讲故事，有因果转折，不是罗列

⚠️ 约束：
- 覆盖完整时间范围到当前时刻，不能中途断掉
- 全部读完再写，不能写一半再"补充"
- 判断有态度，禁止"据xx报道""值得注意的是"
- 篇幅：4h→1500字 / 8h→2500字 / 24h→3500字
- \>150条时按小时分组精选到80-120条

保存到 `tmp/news-briefing-latest.md` 并发送。

### 3. 采集健康度

**触发**："采集服务正常吗""快讯数据库状态""今天收了多少条"

```bash
node skills/jin10/scripts/collector.js --health
node skills/jin10/scripts/query.js --count --today
```

---

## 应用层

应用层 = 功能层原子能力的组合 + 自动化。以下为可实现的应用：

### 事件追踪
**触发**："帮我追踪一下原油的事件""霍尔木兹最近的动态"
**实现**：搜索（相关关键词组合）→ 时间线总结（只针对匹配结果）

### 关键词告警
**触发**："降息相关的快讯帮我推送""出现黑天鹅就通知我"
**实现**：采集服务内置关键词匹配，每条快讯入库时自动检查，命中则通过 Webhook 推送。

**配置文件**：`skills/jin10/data/alerts.json`

```json
[
  {
    "keyword": "特朗普,关税",
    "webhook": "https://api.telegram.org/bot<TOKEN>/sendMessage",
    "format": "telegram",
    "chatId": "123456"
  },
  {
    "keyword": "降息,加息,利率",
    "webhook": "https://discord.com/api/webhooks/ID/TOKEN",
    "format": "discord"
  },
  {
    "keyword": "黑天鹅,暴跌",
    "webhook": "https://open.feishu.cn/open-apis/bot/v2/hook/xxx",
    "format": "feishu"
  },
  {
    "keyword": "原油",
    "webhook": "https://your-server.com/alert",
    "format": "plain"
  }
]
```

**字段说明**：
| 字段 | 说明 |
|------|------|
| `keyword` | 关键词，逗号分隔，OR 匹配（任一命中即触发） |
| `webhook` | 推送地址（Telegram Bot API / Discord Webhook / 飞书 / 自定义 URL） |
| `format` | 推送格式：`telegram` / `discord` / `feishu` / `plain` |
| `chatId` | Telegram 专用，目标 chat ID |

**工作原理**：`collector.js` 每条快讯入库后调用 `checkAlerts()`，匹配关键词则通过对应 Webhook 推送。无需额外 cron，采集服务运行期间自动生效。修改 `alerts.json` 后无需重启，下次轮询自动加载新规则。

也可用独立脚本手动检查：
```bash
node scripts/alert.js --keyword "降息" --seconds 120
```

### 定时推送
**触发**："每天早上8点给我发一份昨晚简报"
**实现**：cron 定时 → 时间线总结 → 推送到频道

### 热词统计
**触发**："最近市场在关注什么""过去24小时高频词"
**实现**：搜索（全量）→ 分词统计 → 按频次排序

