# 法律公众号周报

> 法律人公众号助手（周报模式）。当用户提到「关注公众号 / 公众号监测 / 公众号有什么新文章 / 公众号简报 / 公众号周报 / 推荐公众号 / 该关注哪些法律公众号 / 对标账号 / 看看同行在发什么 / 公众号选题 / 添加公众号 / 我想看XX号 / 收藏公众号」时触发。五大能力：按执业方向推荐值得关注的法律公众号、每周从 212 个关注号中筛选实务文章并评分分层生成周报（支持每周一自动推送）、分析对标账号近期内容给出选题启发、手动添加自己喜欢的公众号到关注清单、根据用户反馈自动迭代优化。支持律师/法官/检察官/法务四种身份，高价值文章自动入库 IMA 知识库。每日追踪用「帮我看看公众号有什么新文章」手动跑。

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

---


# 法律公众号周报（周报模式）

## 概述

帮法律人解决五件事：**该关注哪些号**（推荐）、**关注的号发了什么**（监测+周报）、**同行在怎么做内容**（对标分析）、**随手收藏喜欢的号**（自定义添加）、**越看越准**（自动迭代）。数据获取走 WebSearch，零配置开箱即用。

核心交付：**每周一 08:00 自动扫描关注号近 7 天的新文章，按实务价值评分分层，生成浅色周报，高价值文章自动入库 IMA 知识库。**

解释器：优先用 `/Users/zouhao/.workbuddy/binaries/python/envs/default/bin/python`；脚本仅标准库，python3 ≥ 3.8 即可。

## 铁律

| 场景 | 必须遵守 | 不应发生 |
|------|---------|---------|
| 搜索结果 | 只写搜索到的真实文章；无把握的 url 留空；覆盖不到的账号标「未发现」 | 不应编造文章标题/链接/日期 |
| 推荐账号 | 推荐前用 WebSearch 核实账号当前仍活跃；告知「以微信内搜索为准」 | 不应保证推荐目录中的号一定存在 |
| 数据文件 | 只通过 `mpwatch.py` 子命令改 `assets/accounts.json` 与 `state/seen.json` | 不应手写/手改这两个 JSON（易写坏格式） |
| 推送 | 推送失败时降级为「保存文件 + 说明原因」 | 不应因推送失败中断简报生成 |
| IMA 知识库 | 仅限用户自建个人 KB，使用前确认归属 | 不应指引订阅/加入/接受邀请非自建 KB |
| 评分 | 每条入选文章必须给出评分理由（1-2 句） | 不应给空洞的「推荐阅读」式评价 |
| 反馈 | 用户反馈必须记录到 `state/feedback.json` 并影响后续评分 | 不应收集反馈但不使用 |

## 身份系统

支持四种法律职业身份，影响推荐账号、内容筛选和评分分层：

| 身份 | 核心需求 | 内容偏好 | 评分加成 |
|------|---------|---------|---------|
| **律师** | 办案参考、客户开发、技能提升 | 典型案例、裁判规则、实务技能、行业动态 | 实务技能+1 |
| **法官** | 类案参考、裁判统一、学术前沿 | 类案分析、裁判观点、学术理论、司法解释 | 学术理论+1 |
| **检察官** | 公诉参考、法律监督、政策把握 | 刑事案例、检察政策、证据规则、公诉技能 | 刑事案例+1 |
| **法务** | 合规管理、风险防控、合同审查 | 合规指南、合同审查、劳动用工、公司治理、数据合规 | 合规指南+1 |

身份在首次部署时选择，可随时用 `mpwatch.py profile --identity <身份>` 修改。

## 评分算法（五维评分 + 多样性约束 + 篇数可选）

每周从 212 个号中搜到的候选可能超过 150 篇，**用户可选 20 篇（轻量版）或 40 篇（完整版）**。算法分三步：评分 → 排序 → 截断。

### 篇数选择

| 版本 | 篇数 | 适合谁 | 阅读时间 |
|------|------|--------|---------|
| **轻量版** | 20 篇 | 时间紧张的律师/法务 | 10-15 分钟 |
| **完整版** | 40 篇 | 想全面了解一周动态 | 20-30 分钟 |

用户在首次部署时选择，也可随时用 `mpwatch.py profile --limit 20` 或 `--limit 40` 切换。

### 第一步：五维评分（每篇文章 1-17 分）

| 维度 | 权重 | 5 分 | 4 分 | 3 分 | 2 分 | 1 分 |
|------|------|------|------|------|------|------|
| **source_authority** | 5 | 最高法/最高检 | 省高院/知名学者 | 中院/头部律所 | 一般自媒体 | 无法确认 |
| **content_type** | 4 | 新司法解释/法律修订 | 裁判规则/指导性案例 | 典型案例分析 | 实务技能/方法论 | 行业动态/资讯 |
| **practice_match** | 3 | 执业方向+身份双匹配 | 执业方向匹配 | 身份匹配 | 通用实务 | 不相关 |
| **freshness** | 3 | 3 天内 | 5 天内 | 7 天内 | 超 7 天 | 无法确认 |
| **popularity_proxy** | 2 | 多平台转载/大号首发 | 单一来源但权威 | 一般来源 | 小众来源 | 无法确认 |

**总分 = 五维之和（1-17 分）**

> **popularity_proxy 说明**：WebSearch 拿不到真实阅读量，用以下代理指标估算：同一文章在多个搜索结果中出现（+2）、来源是 10 万+ 大号（+1）、被其他媒体转载（+1）。这些信号叠加，模拟「这篇文章正在被传播」的效果。

### 第二步：排序 + 多样性约束

按总分降序排列后，应用以下约束防止「一个号霸屏」：

- **单账号上限**：同一公众号最多入选 **2 篇**
- **单分类上限**：同一执业方向最多入选 **4 篇**
- **必须覆盖**：至少覆盖 **3 个不同执业方向**（如果候选足够）

### 第三步：截断 + 分档

**轻量版（20 篇）：**

| 总分 | 档位 | 含义 | 占比 |
|------|------|------|------|
| 13-17 | ⭐ 必须看 | 直接影响办案 | ~5 篇 |
| 8-12 | 📌 值得看 | 有参考价值 | ~10 篇 |
| 5-7 | 📄 扫一眼 | 背景了解 | ~5 篇 |
| <5 | ❌ 淘汰 | 不推荐 | — |

**完整版（40 篇）：**

| 总分 | 档位 | 含义 | 占比 |
|------|------|------|------|
| 13-17 | ⭐ 必须看 | 直接影响办案 | ~8 篇 |
| 8-12 | 📌 值得看 | 有参考价值 | ~20 篇 |
| 5-7 | 📄 扫一眼 | 背景了解 | ~12 篇 |
| <5 | ❌ 淘汰 | 不推荐 | — |

**篇数不足时按实际数量出，不注水。**

### 评分原则

- 每条入选文章必须有 1-2 句评分理由（为什么值得看）
- 评分理由中注明关键维度得分（如「source=5, content=4, 执业匹配=3」）
- 执业方向匹配的加 +1 档（如用户做建工，建工相关文章自动升级）
- 身份匹配的加 +1 档（如用户是法官，学术理论文章自动升级）
- 时间超过 7 天的 freshness=1，最多 📄
- 无法确认出处的 source=1，最多 📄
- **反馈加权**：历史 👍 多的来源 popularity_proxy+1，👎 多的 -1

## 工作流一：周报生成（核心）

触发语：「生成本周公众号周报」「公众号周报」「看看最近有什么实务文章」。

```
读清单 → 逐账号 WebSearch（近 7 天）→ 内容筛选 → 评分分层 → dedupe → render → IMA 入库 → 交付 → 收集反馈
```

1. 运行 `scripts/mpwatch.py list --json` 取 active 账号；文件不存在先 `init`。执业方向用 `profile` 读取，影响评分加成。
2. 逐账号 WebSearch，查询词模式：`"<账号名>" 公众号` + 时间词（如「近一周」「2026年7月」）。每个账号找近 7 天文章，搜不到就记「未发现」，不编造。
3. **内容筛选**：只收录与法律实务/法律适用直接相关的文章。符合以下任意一条即纳入：
   - ✅ 典型案例/类案分析、裁判规则/裁判观点解读
   - ✅ 新法新规/司法解释的条文解读与适用指引
   - ✅ 实务技能/办案方法论（举证、庭审、谈判、文书等）
   - ✅ 行业数据/司法统计/法律科技工具评测
   - ✅ 法律风险提示/合规指南（面向企业/当事人视角）
   以下内容**一律剔除**：
   - ❌ 领导调研/视察/讲话、党建活动、政治学习
   - ❌ 法院/检察院内部行政动态（如人事任免、表彰、运动会）
   - ❌ 纯时政新闻（如防汛救灾、会议通稿）——除非其中包含可直接引用的法律适用观点
   - ❌ 普法短文/宣传稿（无实务参考价值的口水文章）
4. **五维评分**：对每篇入选文章按五维算法打分（source_authority/content_type/practice_match/freshness/popularity_proxy），写 1-2 句评分理由并注明关键维度得分。执业方向匹配的升一档，身份匹配的升一档。
5. **排序截断**：按总分降序排列，应用多样性约束（单账号≤2篇，单分类≤4篇，覆盖≥3个方向），按 `profile` 中的 `weekly_limit` 截断（20 或 40 篇）。按总分分档：13-17=⭐, 8-12=📌, 5-7=📄, <5=淘汰。
5. 候选写 NDJSON 到临时文件，每行：`{"account","title","url","date","summary","score","score_reason"}`，account/title 必填，score 为 1-3（3=⭐, 2=📌, 1=📄）。
6. 去重：`scripts/mpwatch.py dedupe --input <候选文件> > /tmp/new.jsonl`。
7. 渲染：`scripts/mpwatch.py render --input /tmp/new.jsonl --out <输出.md>`。新增为 0 也照常渲染（写「本期无新增」）。
8. HTML：用 Python 脚本生成浅色周报 HTML（`#f8f7f5` 背景，评分分栏，⭐ 在最前），保存到工作区 `公众号周报-<日期>.html`。
9. IMA 入库：⭐ 和 📌 文章自动推送到 IMA 知识库（走 `references/ima-integration.md` 配置，未配置时跳过并说明）。
10. 用 present_files 交付；并在回复里附各账号覆盖情况 + 评分分布统计 + IMA 入库条数。
11. **收集反馈**：周报交付后，问用户「这期周报怎么样？哪些文章对你有用？」，记录到 `state/feedback.json`。

## 工作流〇：首次部署（初始化全流程）

触发语：「帮我做公众号监测」「设置公众号监控」「首次部署」「我想用这个技能怎么做」。
当用户首次使用本技能、或关注清单为空、或执业方向未设置时，执行此流程。

### 首次引导（自然对话式，不要机械问）

你是用户的法律同行，帮 ta 把这件事聊明白。分四步走，每步都附带默认建议，用户可以随时说「就这样」「都行」跳过。

---

### 第一步：搞清楚身份

> 「先确认一下，您是做什么的？
>
> ① **律师** —— 办案为主，需要实务参考和技能提升
> ② **法官** —— 审判为主，需要类案参考和裁判统一
> ③ **检察官** —— 公诉为主，需要刑事案例和检察政策
> ④ **法务** —— 企业合规，需要风险防控和合同审查」

用 `mpwatch.py profile --identity <身份>` 写入。身份影响后续推荐和评分。

---

### 第二步：搞清楚执业方向

> 「您主要关注哪几个领域？可以多选——公司商事、公司法务、银行金融、建工房产、刑事、劳动、执行、知产、婚姻家事、行政法都行。不确定的也可以说『不区分』，我全推荐。」

对应的 8 个方向来自 `references/account-directory.md`。用 `mpwatch.py profile --areas "方向1,方向2,..."` 写入。

---

### 第三步：搞清楚想看什么

> 「您主要想通过这份周报解决什么问题？比如：
>
> ① **跟判决** —— 关注最高法院/省高院的典型案例、裁判规则变化，办案时直接引用
> ② **学技能** —— 实务操作、举证技巧、文书模板、办案方法论
> ③ **追新规** —— 新法新司法解释一出来就能看到解读
> ④ **都要** —— 不挑，实务相关的全收」

这个偏好会体现在后续评分分层上。选 ① 时最高法/省高院案例自动升 ⭐；选 ② 时实务技能文章优先 📌；选 ③ 时新法解读自动 ⭐。

---

### 第四步：搞清楚看多少

> 「每周看多少篇文章合适？
>
> ① **20 篇轻量版**（推荐）—— 每周一 10 分钟看完，只看最重要的
> ② **40 篇完整版** —— 想全面了解一周动态，不怕多」

用 `mpwatch.py profile --limit 20` 或 `--limit 40` 写入。用户可随时切换。

---

### 第五步：搞清楚怎么看

> 「周报怎么看方便？
>
> ① **每周自动出**（推荐）—— 每周一 08:00 自动扫描，生成 HTML 周报，打开 WorkBuddy 就能看
> ② **想看才跑** —— 不自动跑，您说『帮我看看最近有什么』时才跑
> ③ **先试一次** —— 什么配置都不做，先跑一次看看效果再决定」

根据用户选择：
- 选 ① → 创建每周一 08:00 的自动化（走 `references/push-setup.md`），告诉用户「下周一 08:00 会出第一份」
- 选 ② → 不创建自动化，告诉用户「随时说『跑一次公众号周报』即可」
- 选 ③ → 立即进入工作流一跑一次，跑完再回来问要不要定时

---

### 第六步：推荐账号 + 执行

把前四步的答案串成一句简短小结说给用户听（「好的，您是律师，做建工+刑事，想看新规和案例，每周一自动出。我来帮您配」），然后：

1. `mpwatch.py init`（如清单不存在）。
2. 按所选的执业方向+身份，从 `references/account-directory.md` 推荐账号。分方向展示，每方向 10-15 个，附一句话理由，标注 ★ 等级（5★=必关注，4★=推荐，3★=可选）。**不抛出 99 个号的信息风暴**，只在用户说明「全加」时才批量加。
3. 给简洁选择：「全加 / 分方向挑 / 我自己选」。确认后 `mpwatch.py add` 逐个写入。
4. 补通用础石：若清单中缺失（最高法、最高检、本地省高院、人民法院报、法律读库、无讼），自动补入。

---

### 首次部署的反面教材（不要这样做）

- ❌ 一口气列出 99 个号让用户选
- ❌ 问完执业方向直接跳到推送配置，跳过「想看什么」和「怎么看」
- ❌ 假设用户知道 HTML 推送是什么
- ❌ 用技术命令吓用户（先说人话，操作放后面）
- ❌ 每个问题都必须是单选对错——允许「都行」「你推荐」「先试试」

## 工作流二：推荐值得关注的公众号

触发语：「推荐公众号」「我该关注哪些号」「XX 方向有什么好的公众号」。

1. 读执业方向：`scripts/mpwatch.py profile`；未设置先走工作流〇。
2. 按 `references/account-directory.md` 对应领域挑账号，逐条给一句话理由；先 WebSearch 核实账号活跃再推荐。
3. 用户确认后 `scripts/mpwatch.py add <name> --category <分类> --tags <标签>` 逐个写入。

## 工作流三：对标账号内容分析

触发语：「分析对标账号」「看看 XX 号最近在发什么」「帮我找选题」。

按 `references/benchmark-framework.md` 执行：取样近期文章 → 四维分析（更新节奏/选题分布/标题套路/爆款特征）→ 输出 3-5 个可直接用的选题建议。只给有把握的建议，不编造阅读数据，不照抄标题。

## 工作流四：手动添加喜欢的公众号（自定义收藏）

触发语：「关注 XX 公众号」「把 XX 号加到监测」「添加 XX 到我的列表」「收藏这个公众号」「我想看 XX 号的文章」。

这是用户随时可以使用的快捷入口——不需要经过推荐/部署流程，直接把自己喜欢的号塞进去。

### 流程

1. **确认账号名**：用户提供公众号名称（如「天同诉讼圈」「高杉LEGAL」）。名称若不完整，请用户确认全称。
2. **可选核实**：用 WebSearch 搜一次确认该公众号当前活跃、确实存在（搜索词：`"<账号名>" 公众号`）。不存在或不活跃的如实告知用户、让用户核对全称。
3. **确定分类**：根据公众号内容自动归类。参考分类取值：法院 / 检察 / 律协 / 学术 / 法律媒体 / 实务自媒体 / 对标账号 / 其他。有疑问时问用户，不猜。
4. **写入清单**：`scripts/mpwatch.py add "<账号名>" --category "<分类>" --tags "<标签1,标签2>"`。
   - tags 根据内容特点加（如「建工」「劳动法」「案例」「行业」等），帮助分类展示。
   - 添加成功后告诉用户：「已加入关注清单，共 N 个号」。
5. **防重**：添加前脚本自带重名校验，同名账号不会重复添加，直接告诉用户「已在清单中」。

### 示例对话

> 用户：关注「法客帝国」公众号
>
> → WebSearch 确认活跃 → 分类「实务自媒体」、标签「公司商事,案例,裁判规则」→ add → 回复：「已加入关注清单（共 130 个号）。下次跑周报时会包含它的文章。」

## 工作流五：自动迭代（越看越准）

触发语：「迭代」「优化周报」「让周报更准」「看看哪些号该删了」。

每次周报生成后自动执行，也可手动触发。

### 反馈收集

周报交付后，主动问用户：

> 「这期周报怎么样？
> - 哪些文章对你有用？（👍）
> - 哪些觉得没必要？（👎）
> - 有没有漏掉什么重要内容？」

记录到 `state/feedback.json`（每条：日期、文章标题、评分、用户反馈 👍/👎/漏掉）。

### 评分自适应

基于反馈数据自动调整后续评分：

- **来源加权**：某账号的文章连续 3 次 👍 → 该账号后续文章自动 +1 档
- **来源降权**：某账号的文章连续 3 次 👎 → 该账号后续文章自动 -1 档（或标记「建议移除」）
- **类型偏好**：用户对某类内容（如裁判规则 vs 学术理论）的 👍 率明显高 → 该类内容自动 +1 档
- **频率控制**：用户对周报频率的反馈（太多/太少）→ 建议调整自动化频率

### 账号健康检查

每周自动检查：

- **连续 4 周无产出** → 标记「疑似停更」，建议用户移除
- **连续 4 周无实务文章** → 标记「内容不符」，建议用户移除
- **连续 4 周 👍 率 > 80%** → 标记「高质量」，推荐用户关注该账号的其他平台

### 定期回顾

每月第一周周报自动附带「月度回顾」：

- 本月共收录 N 篇文章，⭐ X 篇 / 📌 Y 篇 / 📄 Z 篇
- 最有价值的 5 个账号（按 👍 率排序）
- 建议移除的 3 个账号（连续无产出或无实务内容）
- 建议新增的 3 个账号（基于高 👍 文章的来源推荐）

## 关注清单管理

| 操作 | 命令 |
|------|------|
| 初始化（首次） | `scripts/mpwatch.py init` |
| 查看清单 | `scripts/mpwatch.py list`（`--json` 机器可读） |
| 添加账号 | `scripts/mpwatch.py add <名称> --category 法院 --tags 案例,综合 --note 备注` |
| 移除账号 | `scripts/mpwatch.py remove <名称>` |
| 设置身份 | `scripts/mpwatch.py profile --identity 律师` |
| 设置执业方向 | `scripts/mpwatch.py profile --areas "建筑工程,劳动法"` |
| 统计 | `scripts/mpwatch.py stats` |

分类建议取值：法院 / 检察 / 律协 / 学术 / 法律媒体 / 实务自媒体 / 对标账号 / 其他（渲染简报时按此顺序分栏）。

## 定时自动推送

用户要「每周自动推送」时，按 `references/push-setup.md` 配置。

**推送方式三选一**（按优先级询问用户）：
1. **WorkBuddy HTML 推送**（推荐）：每次生成带排版的 HTML 周报，通过 present_files 在 WorkBuddy 对话中直接预览，用户打开 WorkBuddy 即可查看。
2. **邮件推送**：周报渲染为 HTML 邮件发送到指定邮箱（需配置 SMTP）。
3. **桌面文件**：周报存 `~/Desktop/legal-mp-daily/`，用户自己打开看。

默认每周一 08:00 执行。已配置的自动化不要重复创建；先 `automation_update` mode=list 查重。

## 免费使用与版权保护

本技能**完全免费**，全部功能开箱即用，无需激活码、不绑定设备，可自由复制安装到任何 WorkBuddy 环境。

**防修改保护：** 核心脚本内置完整性校验（`EXPECTED_HASH`），代码被篡改后启动即锁死拒绝运行，提示从官方渠道获取原版。

**版本与更新：** 运行 `scripts/mpwatch.py version` 查看当前版本；`scripts/mpwatch.py update --check` 查看更新方式。新版本由作者发布，用户下载后覆盖安装（保留 `assets/accounts.json` 和 `state/` 目录即可保留个人数据）。

**版权声明：** 本技能受《中华人民共和国著作权法》保护。允许免费使用与转发原版分发包；未经许可不得修改后二次分发或用于商业用途。

**数字指纹：** 分发包内含隐形数字水印与金丝雀数据。任何未经许可的复制、蒸馏（抽取账号清单/评分体系二次开发）、二次分发均可被技术溯源，并作为著作权维权证据。账号清单的遴选、分类、标注构成《著作权法》第十五条保护的汇编作品。

## 已知限制

- **WebSearch 覆盖不全**：无法保证每个公众号每次都能搜到全部新文章。部分公众号（尤其是新号、小号）可能搜索结果较少或缺失。这是技术限制，不是账号问题。
- **无实时性**：WebSearch 结果有索引延迟，通常滞后 6-24 小时。不适合「刚发的文章立刻看」场景。
- **评分依赖主观判断**：五维评分由 AI 基于标题+摘要判断，无法像 k-NN 那样量化。评分理由（含各维度得分）是为了让判断可解释，但仍有主观成分。
- **阅读量不可得**：WebSearch 拿不到文章真实阅读量。popularity_proxy 用「多平台转载/大号首发/被引用」等信号模拟，不等于真实阅读数。
- **20/40 篇硬上限**：每周只推 20 或 40 篇，可能遗漏一些质量不错但排名靠后的文章。如需更多可随时手动跑「帮我看看公众号有什么新文章」获取全量。
- **反馈数据稀疏**：自动迭代依赖用户反馈，反馈越少迭代越慢。建议每周至少给 1-2 条反馈。
- **IMA 需要单独配置**：IMA 知识库集成需要用户提供 API 凭证，未配置时自动跳过。
- **无法阅读原文**：WebSearch 返回的摘要是搜索引擎的摘要，不是全文。如需阅读原文请点击链接跳转。
- **完整性校验可被绕过**：`EXPECTED_HASH` 校验是本地校验，技术上可被懂代码的人绕过。这是「防君子不防小人」的设计，目的是防止篡改版冒充原版流通，而非绝对阻止破解。

## 安全与隐私

- **无外部凭证**：本技能不需要任何 API key / OAuth token / cookie。纯 WebSearch 驱动。
- **无敏感数据**：不读取通讯录、不访问微信客户端、不存储任何用户私密信息。
- **本地运行**：`mpwatch.py` 仅标准库，只在技能目录内读写 `assets/` 和 `state/`，无网络请求。
- **IMA 凭证**：如用户配置 IMA，凭证仅本地存储，不发送到任何服务器。
- **反馈数据**：用户反馈仅存储在本地 `state/feedback.json`，不发送到任何服务器。

## Rationalizations

1. **为什么选 WebSearch 而非爬虫**：微信无公开 API，爬虫有法律风险和封号风险。WebSearch 是合法合规的替代方案，虽然覆盖不全但可持续。
2. **为什么单文件脚本**：降低维护成本，用户不需要理解多文件架构。纯标准库，零依赖，python3 ≥ 3.8 即可。
3. **为什么用评分分层而非 k-NN**：k-NN 需要训练集，对 212 个号的泛化能力有限。评分分层用「评分理由」让 AI 的判断可解释，且不需要维护训练数据。
4. **为什么浅色模板**：与法律周报（`#f8f7f5`）保持视觉一致性，降低用户在两个技能间切换的认知成本。
5. **为什么默认周报而非日报**：法律人的时间碎片化，每天看 20+ 篇文章不现实。周报模式（每周一集中看）更符合实际工作节奏。
6. **为什么加身份系统**：不同法律职业的信息需求差异很大。律师需要办案参考，法官需要类案统一，检察官需要公诉技能，法务需要合规管理。身份让推荐和评分更精准。
7. **为什么加自动迭代**：静态的评分规则会随着时间失效（账号停更、内容质量下降、用户兴趣变化）。自动迭代让系统「越看越准」，不需要用户手动维护。

## 脚本参考

`scripts/mpwatch.py`（纯标准库，无网络，只写技能目录内 JSON 与 --out 指定文件）：

- `init / list / add / remove / profile / stats` — 清单与配置
- `dedupe --input <NDJSON>` — 与 `state/seen.json` 比对去重，stdout 输出新增条目并标记已见
- `render --input <NDJSON> [--out 文件] [--date 日期]` — 按分类分栏渲染 Markdown 简报
- `feedback [--list] [--add <标题> --account <来源公众号> --rating 👍/👎] [--stats]` — 用户反馈管理（自动迭代；--account 让 --stats 能按来源统计）
- `version` — 显示当前版本
- `update --check` — 查看版本与更新方式
- `selftest` — 隔离环境全链路自测；每次改脚本后必跑

`scripts/render_html.py`（独立脚本，不是 mpwatch.py 的子命令）：

- `python3 scripts/render_html.py --input <NDJSON> --out <HTML> [--date 日期] [--identity 律师]` — 渲染浅色周报 HTML（评分分栏 ⭐/📌/📄）

## 打包结构

```
法律公众号周报/
├── SKILL.md                         ← 本文件
├── VERSION                          ← 版本号（与 frontmatter version 一致）
├── scripts/mpwatch.py               ← 清单管理 + 去重 + 渲染 + 反馈（单文件）
├── scripts/render_html.py           ← 浅色周报 HTML 渲染（评分分栏，独立脚本）
├── assets/accounts.json             ← 关注清单 + 执业方向（init 生成，脚本维护）
├── state/seen.json                  ← 已见文章库（去重用，自动生成）
├── state/feedback.json              ← 用户反馈库（自动迭代用，自动生成）
└── references/
    ├── account-directory.md         ← 分执业方向的推荐目录
    ├── benchmark-framework.md       ← 对标分析框架
    ├── push-setup.md                ← 定时推送配置指南
    ├── ima-integration.md           ← IMA 知识库集成指南
    └── update-guide.md              ← 版本更新指南
```

