SuperAPI AI Directory

weekly-legal-briefing

Design & creation

View repository

Updated 10-15 20:10

About this skill

weekly-legal-briefing · Scheduled legal research report

Positioning

The outbound outreach side of retention.The consumer is the client—turn "proactively reaching out to clients" into a scheduled task, rather than sending only when you remember to.

This skill is part of the XX Lawyer Legal AI Course System (see 知识整理/课程体系/XX 律师法律AI课程主题体系.md) inthe outreach end of the client relationship main axis. Skill 1 (industry-research-report) handles the client acquisition side background intelligence, while this skill handles scheduled outreach on the retention side, with reusable materials produced in between through the existing suite (legal-proposal-generator / litigation-analysis).

⚠️ Hard constraints(The boundaries of this skill are completely different from Skill 1; this is the core reason the two skills are not merged)

  • Never automatically send externally — the output of this skill is always _DRAFT a draft; email / WeChat group sending / client system push are all not done, and the publishing action is physically left to humans
  • Whitelist source system — sources not in config/sources-whitelist.txt are never included in the draft
  • Cases must carry case numbers — anything included in the "Case Studies" section must be verifiable through public channels; cases whose case numbers cannot be found are not included in the draft
  • Configuration first — before the first run, you must first fill in config/report-profile.md(personalization) + config/sources-whitelist.txt(source whitelist) + config/audience-profile.md(client profile)
  • Scheduling after deployment is handled by the platform — this skill is only responsible for "running one issue"; scheduling is handled by platforms such as WorkBuddy / OpenClaw / Claude Code cron

Trigger scenarios

  • "I want to set up a legal weekly briefing for XX client"
  • "From now on, send a legal research report to the client every Monday"
  • "The client wants a legal weekly briefing; how do we implement it"
  • "Automatically generate a legal newsletter for the XX industry every week"
  • "Set up a scheduled task to run a weekly briefing every week"

Key differences from Skill 1

Dimension Skill 1 industry-research-report Skill 2 weekly-legal-briefing
Purpose Client acquisition (for lawyers' own use) Retention (for clients to read)
Output Single in-depth report Periodic lightweight weekly briefing
Source discipline Priority tiers (P1-P5), non-P5 labeling Strict whitelist; items outside the whitelist are discarded by default
Quality gates Disclaimer + traceability appendix DRAFT gate + case number verification + clickable sources
Lifecycle Fast-moving consumable Subscription asset, accumulated in archives
Scheduling Pull on demand Scheduled push (platform-driven after deployment)
Output suffix {industry}_{region}_{YYYYMMDD}.pdf ..._第N期_DRAFT.pdf

Personalized configuration (three files, required for first deployment)

First-run wizard (first use · one-time)

Same as Skill 1: see industry-research-report/SKILL.md "First-run wizard" section. The Agent uses the harness's actual questioning mechanism (not tied to a fixed tool) to ask all 7 core questions at once (firm name / series name / primary color / design intensity / cover variant / lead attorney / contact info), and writes them into config/report-profile.md(gitignore), and all subsequent weekly reports read from here.

1. config/report-profile.md(required, inherits Skill 1's system)

Shares the same configuration fields with Skill 1 (primary color / accent color / palette group / cover variant / design intensity all inherit the 5 palettes from v0.3.0); see config/report-profile.example.md. This skill adds two more fields on top of Skill 1's fields:

Field Default Description
audience_label 科技型制造企业 Client persona tag, displayed in the "Target Readers" slot on the cover
period_label 第 N 期 · {YYYY-MM-DD} Issue number tag template, replaced per issue when render.py renders

2. config/audience-profile.md(required, client persona)

Determines the baseline for topic filtering and source whitelist matching. Suggested structure:

## 客户画像
- industry_focus: [科技型制造 / 具身智能 / 低空经济 / ...]
- employee_scale: [500-2000 人 / 2000+ 人 / ...]
- business_focus: [劳动 / 知识产权 / 投融资 / 跨境合规 / ...]
- risk_focus: [竞业限制 / 商业秘密 / 股权激励 / 数据合规 / ...]

## 选题优先级(决定本期选哪 3-5 条)
- 高频议题: [...]
- 行业动态: [...]
- 监管动向: [...]

## 联系人
- editor: {本期编辑署名}
- contact_wechat: {微信号}
- contact_phone: {电话}

3. config/sources-whitelist.txt(required, whitelisted sources)

One domain or WeChat official account ID per line,sources outside the whitelist are discarded by default. Suggested starting point:

# 官媒
xinhuanet.com
people.com.cn
jjjcb.com         # 经济参考报
stcn.com          # 证券时报
cs.com.cn         # 中国证券报
21jingji.com      # 21 世纪经济报道
yicai.com         # 第一财经

# 法律法规
gov.cn            # 国务院
court.gov.cn      # 最高人民法院
chinacourt.org    # 中国法院网
pkulaw.com        # 北大法宝(仅法规原文链接)

# 行业协会
caam.org.cn       # 中国汽车工业协会
semi.org.cn       # SEMI 中国

# 律所与法律自媒体(按需)
zhichanlaw.com    # 知产力
iphouse.cn        # IPR Daily

Whitelist update rule: only the lawyer themself may add or remove entries; AI must not be allowed to automatically expand the list.

IO Contract

Input

Configuration (one-time):config/report-profile.md + config/audience-profile.md + config/sources-whitelist.txt

Runtime parameters (each run):

  • --period-number N: issue number (by default automatically increments based on existing files in archive/)
  • --industry-keywords [k1 k2 ...]: the featured topic for this issue (by default extracted from the "Topic Priority" in audience-profile.md)

Outputs (marked with _DRAFT, never remove DRAFT)

  • archive/法律周报_{audience}_{YYYY}第{N}期_DRAFT.md —— intermediate draft
  • archive/法律周报_{audience}_{YYYY}第{N}期_DRAFT.pdf —— final draft (A4 fine layout, bluebook style)
  • archive/法律周报_{audience}_{YYYY}第{N}期_DRAFT.meta.json —— metadata (including source list, case number list, generation time)

Publishing action: after manual review passes, remove the _DRAFT suffix (e.g. cp ..._DRAFT.pdf ..._V1.pdf),Prohibited to automatically rename or automatically send via this skill.

Research report skeleton (mandatory five-section format)

  1. This Issue's Highlights —— 3-5 items, by section (e.g. tax / labor / social security base)
  2. Case Studies —— typical cases focused on audience_profile,must include case number + source
  3. This Week's Developments —— summaries of whitelisted sources, with source and date noted for each item
  4. Three practical tips for such enterprises
  5. Footer —— editor of this issue / contact phone (audience-profile placeholder)

Full template see templates/briefing-skeleton.md, all five sections must be complete.

Data source dependencies

Search discipline (whitelist system)

  • Only search config/sources-whitelist.txt the domains / official accounts listed in
  • Hit a non-whitelisted source → discard, do not annotate, do not include in the draft
  • Key conclusions must be cross-verified by at least 2 whitelisted sources

Case verification

  • Each case included in the "Case Studies" section must includecase number + trial court + judgment date
  • The case number must be searchable on https://wenshu.court.gov.cn(China Judgments Online)
  • Cases whose case numbers cannot be foundare not included in the draft, instead marked as "recent similar cases (case number pending)"

SOP (single generation process)

  1. Load configuration —— three config files; if any is missing, abort and prompt
  2. Topic extraction —— Take 3-5 items from the "topic priorities" in audience-profile.md or this issue's --industry-keywords
  3. Whitelist source search —— Search the web for each topic, filtering out results outside the whitelist
  4. Case verification —— Check each case study candidate one by one against case numbers on China Judgements Online, filtering out entries whose case numbers cannot be found
  5. Generate markdown —— Fill in according to the five-section format of briefing-skeleton.md
  6. Render PDF —— Same pipeline as Skill 1 (render.py + pdf.py, blue book format)
  7. Write metadata + archive —— Append metadata JSONL incrementally to archive/_meta.jsonl, to facilitate the aggregation of materials for the annual service report
  8. Hard stop at DRAFT —— This skill physically ends at this step; automatic renaming / pushing is not allowed

Quality discipline

  • Source whitelist system —— Sources not on the whitelist are never included in the draft
  • Cases must include case numbers —— Must include case number / trial court / judgment date; the case number must be verifiable on China Judgements Online
  • Post-generation self-check list —— Automatically generate one per issue archive/法律周报_..._DRAFT.checklist.md listing: each source is clickable / dates fall within the current issue / no speculative statements
  • Manual review before publication —— Skill output always stops at DRAFT; this is a hard rule

Rendering pipeline (same origin as Skill 1, blue book format)

briefing-skeleton.md (填充后的 md)
  → scripts/render.py            # md → A4 HTML
  → references/report-template.html + references/covers/cover-{C,D,E,F}.html
  → scripts/pdf.py               # HTML → PDF

Differences from the Skill 1 rendering pipeline:

  • Cover kicker field:本期 · 法律周报 · 第 N 期
  • Footer right side:footer_brand defaults to 法律周报 · 第 N 期
  • Metadata page: one additional item "number of whitelist source hits / number of cases / word count of this issue", to facilitate review

For detailed design specifications, see references/design-spec.md(same origin as Skill 1, sharing the :root variable).

Scheduling hookup (platform-agnostic design)

The skill itself only handles "running one issue"; scheduling is handled by the deployment platform. Write one deployment note for each of the two platforms:

WorkBuddy automation task

See deploy/workbuddy-deploy.md. Three-piece set:

  • Name:{audience} 法律周报
  • Working time: every Monday 09:00
  • Prompt: call python3 scripts/render.py ... && python3 scripts/pdf.py ...

OpenClaw / Claude Code cron

See deploy/openclaw-deploy.md. Three-piece set:

  • Name:{audience} 周报
  • cron:0 9 * * 1(every Monday 09:00)
  • Command:python3 scripts/render.py -i ... && python3 scripts/pdf.py -i ...
  • Channel push: can push _DRAFT.pdf to the channel, butthe publish action still requires manual confirmation in the channel reply

Other platforms (crontab / launchd / Cloud Functions)

See deploy/generic-cron-deploy.md。

Acceptance criteria

  • Run 4 consecutive issues (simulating one month, running once every Monday)
  • Sources outside the whitelist 0 leaks(verified by sampling)
  • Case section spot check: case numbers 100% verifiable through public channels
  • Review experience: manual from DRAFT to publishable ≤ 15 minutes/issue(exceeding this indicates the generation quality is substandard, requiring adjustment of the whitelist or topics)

What v1 does not do (minimum viable boundary)

  • No automatic outbound sending (email/WeChat mass sending is never done; publishing is always manual)
  • No multi-client personalization (v1 single audience; v2 will do audience multi-configuration split reports)
  • No fine typography polishing (headers and footers use preset Blue Book templates)
  • No connection to the Yuandian case database (whitelist sources + case number re-verification is already enough for v1 validation)
  • No intelligent topic selection (v1 topics come from explicit declarations in audience-profile.md)

v2 iteration direction

  • Multi-client split reports: derive N copies from one set of materials according to audience_profile
  • Annual service report linkage: weekly report archives serve as the "workload evidence source" for the annual report (file naming rules aligned) — the endpoint of the client relationship main axis on the reach side
  • Orchestration with industry-research-report: use Skill 1 to build background for new industry clients (customer acquisition), use Skill 2 for continuous tracking (retention), and use the existing suite in the middle — the full chain of the client relationship main axis v2 takes shape
  • Automatic topic selection(controlled): AI automatically suggests 3-5 candidates based on audience_profile, and generates after manual selection

Troubleshooting

Symptom Troubleshooting
sources-whitelist.txt 不存在 Copy config/sources-whitelist.example.txt as config/sources-whitelist.txt, fill in the real whitelist
audience-profile.md 不存在 Copy config/audience-profile.example.md as config/audience-profile.md
All items in the case section were removed All case number re-verifications failed → first troubleshoot China Judgments Online connectivity + case number format
Source hit rate < 50% The whitelist may be too strict; follow the references/source-priority.md prompt to expand
playwright 未安装 Same as Skill 1
Automatic outbound sending triggered by mistake Impossible— this skill has no outbound sending code path; if outbound sending is needed, please handle it manually

Referenced resources

  • Template:templates/briefing-skeleton.md / templates/checklist-template.md
  • Design:references/report-template.html / references/design-spec.md / references/covers/cover-{C,D,E,F}.html(same source as Skill 1)
  • Script:scripts/render.py / scripts/pdf.py(same source as Skill 1, can be reused directly)
  • Configuration:config/report-profile.example.md / config/audience-profile.example.md / config/sources-whitelist.example.txt
  • Deployment:deploy/workbuddy-deploy.md / deploy/openclaw-deploy.md / deploy/generic-cron-deploy.md
  • Archiving:archive/(_meta.jsonl accumulate, facilitating annual service report aggregation)