# Kj Policy Radar

> 跨境电商时政监控与政策预警。当用户要求"时政监控/政策预警/政策日报/跨境政策扫描/关税动态监控"或提到"扫描雨果/亿邦/白鲸跨境政策动态、生成政策预警 HTML 日报、更新时政监控台账"时使用。执行 S1 信源扫描→S2 深度核实→S3 建卡落库→S4 跟踪闭环四阶段流程，产出标准化预警笔记与 HTML 可视化日报。

- Skill: `jkjm-cmd/kj-policy-radar` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add jkjm-cmd/kj-policy-radar`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jkjm-cmd/kj-policy-radar/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- License: MIT
- Author: JKJM-CMD (https://skillmd.com/u/jkjm-cmd)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jkjm-cmd/kj-policy-radar

---


# 跨境电商时政监控（kj-policy-radar）

> 为跨境电商从业者持续追踪多平台多市场的关税、法规、合规、地缘政治动态，
> 按 🔴/🟡/🟢 三级预警结构化落库，并产出 HTML 可视化日报。

## 何时使用

- 用户要求执行"时政监控 / 政策日报 / 政策扫描 / 预警监控"
- 用户给出 S1/S2/S3/S4 任一阶段指令，或要求更新"时政监控台账"
- 用户要求对某条跨境政策新闻做"核实 + 建卡"

不适用：单条新闻的临时翻译/总结（直接回答即可，不必走全流程）。

## 前置配置

运行时读取本技能目录下的 `config.json`（首次使用请从 `config.example.json` 复制修改）：

| 字段 | 类型 | 说明 |
|------|------|------|
| `vault_path` | string | 知识库根目录（Obsidian vault 或普通文件夹） |
| `ledger` | string | 台账文件相对路径，如 `S-实时政策/时政监控-台账.md` |
| `report_dir` | string | 日报输出目录相对路径，如 `S-实时政策/日报` |
| `report_timezone` | string | 日报时间戳时区标签，如 `CST` |

- 缺少 config.json 时：向用户询问 vault 根路径与台账相对位置，确认后再执行，**不得猜测路径**。
- 台账文件不存在时：按 [references/framework.md](references/framework.md) 第五节的五区块结构初始化。
- 落位目录不存在时：按 [总纲 → 落位规则](references/framework.md) 创建。

## 输入参数

| 参数 | 类型 | 默认 | 说明 |
|------|------|------|------|
| `mode` | full / quick / s1 / s2 / s3 / s4 | full | full=四阶段全跑；quick=只做 S1+摘要不落库；单阶段=只执行该阶段 |
| `date` | YYYY-MM-DD | 运行日 | 扫描基准日期 |
| `focus` | 关键词/市场/平台列表 | 空 | 额外关注项，并入扫描关键词 |
| `dry_run` | bool | false | true 时只输出发现清单与摘要，不写台账、不建卡、不产日报 |

参数从用户自然语言解析；无法识别的参数取默认值并在执行摘要中声明（如"未指定 mode，按 full 执行"），不要反问打断。

## 执行流程（四阶段）

### S1 信源扫描
按 [references/sources.md](references/sources.md) 第七章聚合信源清单检索当日更新标题，
用关键词过滤（关税/税率/法规/合规/认证/反倾销/制裁/召回/禁令/配额/数据隐私/VAT/GST +
`focus` 关键词），命中条目与台账既有条目比对后登记待验证（编号 V-XXXX）。
信源打不开时按 sources.md 的"信源失效处理"降级并说明。

### S2 深度核实
对命中条目逐条查官方原文（第一梯队信源优先，WebFetch 抓取原文），
确认生效日期/适用范围/过渡期，按 [framework.md](references/framework.md) 的等级矩阵定级。
🔴 红色预警必须以官方原文为据，禁止仅凭媒体转述建卡。
已有政策的解读/进展并入既有条目备注，不重复建卡。

### S3 建卡落库
对 🔴/🟡 用 [assets/alert-template.md](assets/alert-template.md) 建卡，
按 framework.md 落位规则写入知识库对应目录，建立双链关联，
台账同步为"已落库"并刷新统计面板。🟢 信息登记台账后按需建卡。
编号规则：M-XXXX（红黄）/ G-XXXX（绿）/ V-XXXX（待验证），均扫描台账现有最大号 +1，禁止复用。

### S4 跟踪闭环
台账中"生效日 ≤ 7 天"的 🔴/🟡 条目在摘要中列倒计时提醒；
已过期条目状态改"归档"移入台账已归档区（不删原行）。

详细操作口径见 [references/sop.md](references/sop.md)。

## 输出契约（每次执行固定 4 项）

1. **台账更新**：新增/更新条目 + 统计面板同步（dry_run 时跳过）
2. **预警笔记**：如有新 🔴/🟡，按模板落库（dry_run 时跳过）
3. **HTML 日报**：`{report_dir}/policy_daily_YYYY-MM-DD.html`，用
   [assets/policy_daily_template.html](assets/policy_daily_template.html) 填充全部 `{{占位符}}`；
   RUN_N = 执行序号递增（同日重跑 +1；按"日报文件数+1"计会与执行次数错位 +1）；优先用 `scripts/render_report.py` 渲染（见下）
4. **纯文本执行摘要**（固定格式）：

```
📡 时政监控日报 — YYYY-MM-DD

🔴 红色预警（N 条）：逐条一句话
🟡 黄色预警（N 条）：逐条一句话
🟢 绿色信息（N 条）：逐条一句话
⏳ 待验证（N 条）
📦 今日落库笔记：列表

下 7 天即将生效：倒计时提醒
📊 HTML 日报：<相对路径>
```

### 机器可读摘要（可选，供自动化对接）

额外写出 `{report_dir}/policy_summary_YYYY-MM-DD.json`，结构：

```json
{
  "date": "YYYY-MM-DD",
  "run_no": 27,
  "counts": {"critical": 0, "warning": 0, "green": 0, "pending": 0},
  "new_items": [{"id": "G-0109", "level": "green", "title": "...", "note_path": "..."}],
  "ddl_7d": [{"date": "YYYY-MM-DD", "id": "M-0002", "name": "..."}],
  "report_html": "S-实时政策/日报/policy_daily_YYYY-MM-DD.html"
}
```

### 用 render_report.py 渲染日报

模型负责生成各预警卡片的 HTML 片段（按模板内 `.alert-item` 结构与 `.ddl-card` 结构），
脚本负责确定性拼装。调用：

```bash
python scripts/render_report.py \
  --template assets/policy_daily_template.html \
  --summary <日报目录>/policy_summary_YYYY-MM-DD.json \
  --cards <日报目录>/cards_YYYY-MM-DD.json \
  --out <日报目录>/policy_daily_YYYY-MM-DD.html
```

- `summary.json`：机器可读摘要，脚本从中读取 `date` / `weekday` / `run_no` / `counts{critical,warning,green}` /
  `ddl_7d[{date,countdown,cls,name}]` / `compare_items[]` / `action_groups[{group,count,tasks}]` /
  `headline` / `regions` / `sources` / `next_run` / `next_weekly` / `datetime`（可选 `exchange_rate_section`）
- `cards.json`：仅三个键 `{"critical": "<HTML>", "warning": "<HTML>", "info": "<HTML>"}`，值为按模板
  `.alert-item` 结构生成的卡片 HTML 片段。卡片链接约定（v1.1 起）：
  - **标题内嵌 Obsidian 跳转**：`<a class="title-link" href="obsidian://open?vault=<vault名>&amp;file=<URL编码落位路径(不带.md)">标题<span class="arr">↗</span></a>`，路径取台账「落位笔记」列；HTML 属性中 `&` 必须写 `&amp;`
  - **原文外链**：有核实完整 URL 的卡片加 `<a class="chip src" href="..." target="_blank" rel="noopener">原文 ↗</a>`；无可靠 URL 不加（笔记内「引用来源」兜底），禁止编造链接
  - **合并卡**（一条卡片覆盖多条目）：标题跳主条目，第二条目用 `<a class="chip" href="...">M-XXXX 笔记 ↗</a>`
  - **焦点卡**：今日/明日大限卡片加 `featured` 类（模板含专属强调样式）；未建卡条目（V-XXXX）回退 `obsidian://search?vault=<vault名>&query=<编号>`
- 脚本不做任何政策判断，只做占位符替换；渲染后向用户报告输出路径。

## 边界与降级

- **无新增**：仍产出日报（复述存量焦点 + DDL 倒计时），摘要标注"今日无新增"。
- **信源全部失效**：输出"信源不可达"并列出已检查清单，不得编造条目。
- **日期敏感**：所有"今天/明天"以运行日为准；跨日引用必须带绝对日期。
- **禁止破坏性操作**：不删除台账历史记录；更正以追加"已修正"标注方式处理。
- **dry_run 模式**：只读台账 + 输出发现清单，不写任何文件。

## 参考文件

- [references/framework.md](references/framework.md) — 维度/市场/等级/落位/编号/台账结构
- [references/sources.md](references/sources.md) — 信源目录与失效处理
- [references/sop.md](references/sop.md) — 四阶段详细操作口径与质检点
- [assets/alert-template.md](assets/alert-template.md) — 预警笔记建卡模板
- [assets/policy_daily_template.html](assets/policy_daily_template.html) — 日报 HTML 模板
- [scripts/render_report.py](scripts/render_report.py) — 日报渲染脚本

