Privacy and Compliance Notice (Transparent Disclosure, Does Not Block Execution)
This skill processescourt litigation documents and service SMS messages, whose content includes sensitive litigation data such as case numbers, parties, court information, and service times, and some may also involve client confidentiality and personal privacy. By using it, you authorize this skill to process them in the following ways:
- Downloaded documents and archive records will bewritten to the local file system(case directory + skill internal
archive/), please confirm that the target location is accessible only to you, and do not commit it to a public repository or sync it to a third-party service. - For steps involving login credentials (account, password, verification code), after you paste an SMS containing the relevant information, they will be automatically filled in by default to enable seamless downloading.
- Creating new case directories and writing internal archive records are both performed automatically according to the process, without the need for step-by-step confirmation.
Function Overview
The complete process for handling court SMS messages:Paste SMS → Parse content → Match case → Download documents → Archive and save。
Two trigger methods are supported:
Method 1: Paste the original SMS text
收到法院短信,内容如下:
【xx市人民法院】张三,您好!您有(2025)苏0981民初1234号案件文书送达,请点击链接查收:https://zxfw.court.gov.cn/zxfw/#/pagesAjkj/app/wssd/index?qdbh=DEMO1&sdbh=DEMO2&sdsin=DEMO3
Method 2: Send the service link directly
The user may directly paste a service link (not the complete SMS text). In this case, skip SMS text parsing and directly extract from the URL the qdbh、sdbh、sdsin parameter, then enter the third step of the download process.
https://zxfw.court.gov.cn/zxfw/#/pagesAjkj/app/wssd/index?qdbh=xxx&sdbh=xxx&sdsin=xxx
SMS Type Classification
| Type | Characteristics | Contains download link | Processing method |
|---|---|---|---|
| Document service | Contains service platform link + case number | Yes | Download the document and archive it to the case directory |
| Case filing notice | Contains keywords such as "case filed" | May have | Display the parsing result |
| Information notice | No link, pure information | No | Display the parsing result |
Supported service platforms:zxfw.court.gov.cn(national),sd.gdems.com(Guangdong),jysd.10102368.com(integrated service),dzsd.hbfy.gov.cn(Hubei),sfpt.cdfy12368.gov.cn(Judicial Service Network). The same platform may use different domains (isomorphic with different domains); identify the platform by URL path characteristics. See references/sms-patterns.json。
Workflow (four steps)
Step 1: Input parsing
- Read
references/sms-patterns.jsonas parsing reference - Determine the input type:
- Complete SMS: Contains court signature (such as
【xx法院】) + body + link → complete parsing process - Pure link: The user directly sends a service URL (such as
https://zxfw.court.gov.cn/...?qdbh=xxx&sdbh=xxx&sdsin=xxx) → skip SMS text parsing, directly extract parameters from the URL, and enter the third step of downloading. Information such as the case number and parties is extracted from the document content after downloading the document.
- Complete SMS: Contains court signature (such as
- Analyze the SMS text pasted by the user (pure link input skips this step):
a) SMS classification: Determine the type based on keywords
- Document delivery: contains a zxfw.court.gov.cn link
- Case filing notice: contains "已立案", "立案通知", etc.
- Information notice: other
b) Case number extraction: use the regex [((〔[]\d{4}[))〕]] to match the standard case number format
Examples of standard case number formats:
(2025)苏0981民初1234号(2024)粤0604执保5678号〔2025〕京0105民初901号
c) Party extraction: initially identify from the SMS text; the final determination is subject to the document content
- Note: the form of address in the SMS (e.g., "Zhang San, hello") is only the SMS recipient and is not treated as a party to the case
- Company name:
xx有限责任公司、xx有限公司、xx股份有限公司 - Litigation opposition:
A与B、A诉B、原告A 被告B - Role prefix:
原告:xxx、被告:xxx, etc. - After downloading the document, the party information in the complaint and summons shall prevail, overriding the preliminary judgment made at the SMS stage
d) Download link extraction: identify the delivery platform link in the SMS and extract the parameters
| Platform | Domain | Download method | Extracted parameters |
|---|---|---|---|
| National Unified Court Delivery Platform | zxfw.court.gov.cn |
curl API direct connection | qdbh, sdbh, sdsin |
| Guangdong Court Electronic Delivery | sd.gdems.com |
Browser automation | Delivery identification code in the path |
| Integrated Delivery Platform | jysd.10102368.com |
Browser automation | key |
| Hubei Electronic Delivery | dzsd.hbfy.gov.cn |
HTTP API (no account required) / Browser automation (account mode) | No account: msg; account mode: account + password extracted from the body text |
| Judicial Delivery Network | sfpt.cdfy12368.gov.cn |
Pure Playwright (no API) | Verification code (last 6 digits of mobile number / SMS verification code) |
e) Delivery evidence verification (P0): read Delivery and deadline rules, distinguishing between sending, receipt, generation, and legal delivery.
- zxfw's
getWsListBySdbhNewdoes not containdt_cjsjin the tested responses, and this field must not be fabricated; even if other interfaces have a creation time, it cannot automatically be treated as the delivery time. - Verify the applicable basis, proof of service, or system send-success/arrival evidence based on "document + recipient". QR code generation, document signatures, and ordinary SMS times are only recorded as clues and cannot be used to start counting from the date of another document in the same batch.
- Organize the evidence according to the reference format and execute
python3 scripts/check_service_evidence.py /private/path/service-evidence.json; only when outputtingconfirmedproceed to deadline rule verification. The checker only checks structure and consistency, and does not replace verification of the original evidence. - When unknown, conflicting, or if the check fails,
service.served_on=null, display "delivery time to be confirmed" and the gaps, and continue downloading and archiving; do not output a definite deadline or countdown.
f) Avoid python heredoc during the download period: prefer to write a temporary .py file or switch to execute_code, avoiding python3 <<'PY' syntax - it hits the dangerous command rule (pattern key script execution via heredoc), triggering an approval popup each time.python3 -c(key script execution via -e/-c flag) likewise.
Exclusion list: court names, judge names, place names, legal terms, etc. should not be extracted as parties. See
sms-patterns.json→party_extraction.exclude_keywords。
Output format(displayed to the user):
📋 短信解析结果:
- 类型:文书送达
- 案号:(2025)苏0981民初1234号
- 当事人:张三、xx有限公司
- 下载链接:已提取(zxfw.court.gov.cn)
Step 2: Determine the archive directory
- Scan the current working directory: Identify the directory structure, and find the case directory matching the SMS case number or party.
- Find the archive subdirectory: Under the matched case directory, find the subdirectory related to court documents (such as
08*、法院送达、court, etc.) - If no matching case is found,automatically create a new one under the current working directory (project root)
{案号} {当事人与案由}/, without asking the user
Step 3: Document download
Platform determination: Based on the link domain identified in step 1, select the download strategy.
zxfw.court.gov.cn→ Option 1 (direct API) → Option 2 → Option 3sd.gdems.comorjysd.10102368.com→ skip Option 1, go directly to Option 2 → Option 3dzsd.hbfy.gov.cn→ Hubei dedicated process (see below)sfpt.cdfy12368.gov.cn(including the Guangxi example171.106.48.55:28083) → SFDW dedicated process (see below)- Unknown domain but URL path matches known platform characteristics → identify platform by path (support for different domains with the same structure)
- Completely unrecognizable → prompt the user to provide link information
⛔ Iron rule for fallback: Strictly serial, parallel is prohibited. Stop once the current option succeeds; never fall back. Do not attempt multiple options in parallel as a "dual safeguard".
Dependencies
| Dependency | Purpose | Applicable option | Installation method |
|---|---|---|---|
| Python 3.8+ | Service evidence check (standard library, no pip required) | Before deadline verification | macOS/Linux use the existing python3; if missing, prompt to install and then retry the deadline verification |
curl |
API download | Option 1 | Preinstalled on macOS/Linux |
jq |
JSON parsing (optional) | Option 1 | brew install jq |
| Playwright | Browser automation | Option 2/3 | See below |
Playwright installation guide(only required for Options 2/3):
# 方案二: Playwright CLI
npm install -g playwright
npx playwright install chromium
# 方案三: Playwright MCP(需在 Claude Code 设置中配置)
# 在 settings.json 的 mcpServers 中添加:
# "playwright": { "command": "npx", "args": ["@anthropic-ai/mcp-playwright"] }
⛔ In most cases Playwright is not needed: the zxfw platform Option 1 calls the API directly with curl, with no browser needed. Only the gdems/jysd platforms orafter Option 1 failsare Options 2/3 needed. Do not open a browser at the same time while Option 1 is being executed.
Option 1 — Direct API (preferred)
Fully headless, no browser needed. Directly call the zxfw backend API to obtain the document download link, then use curl to download the PDF.
API information:
- Endpoint:
POST https://zxfw.court.gov.cn/yzw/yzw-zxfw-sdfw/api/v1/sdfw/getWsListBySdbhNew - Content-Type:
application/json - Request body:
{ "qdbh": "xxx", "sdbh": "xxx", "sdsin": "xxx" }(extracted from the SMS URL) - Response fields:
data[].c_wsmc(document name),data[].wjlj(OSS signed download link),data[].c_fymc(court name) - No authentication required, no browser required
# 1. 从短信 URL 提取参数(示例)
qdbh="DEMO_qdbh_value"
sdbh="DEMO_sdbh_value"
sdsin="DEMO_sdsin_value"
# 2. 调用 API 获取文书列表
mkdir -p /tmp/court-sms-staging/
resp=$(curl -s -X POST "https://zxfw.court.gov.cn/yzw/yzw-zxfw-sdfw/api/v1/sdfw/getWsListBySdbhNew" \
-H "Content-Type: application/json" \
-d "{\"qdbh\":\"$qdbh\",\"sdbh\":\"$sdbh\",\"sdsin\":\"$sdsin\"}")
# 3. 解析文书列表,逐个下载 PDF
echo "$resp" | jq -r '.data[] | "\(.c_wsmc)\t\(.wjlj)"' | while IFS=$'\t' read -r name url; do
curl -sL -o "/tmp/court-sms-staging/${name}.pdf" "$url"
done
# 4. 验证下载结果
ls -lh /tmp/court-sms-staging/*.pdf
Option 2 — Headless browser (Playwright CLI)
When the Option 1 API is unavailable or the link has expired, use Playwright CLI in headless mode to open the page and intercept network requests to obtain the download link.
# 需要先安装 playwright
npx playwright install chromium 2>/dev/null
# 无头模式运行(脚本需自行编写,拦截 getWsListBySdbhNew API 响应)
node scripts/download_court_docs.mjs --url "{短信链接}" --output /tmp/court-sms-staging/
Option 3 — Interactive browser (Playwright MCP)
When Option 2 is unavailable (Playwright MCP must already be configured):
1. browser_navigate → 打开短信中的 zxfw URL
2. 等待页面加载
3. browser_evaluate → 直接调用 fetch API 获取文书列表
4. browser_run_code → 下载 PDF 文件到 /tmp/court-sms-staging/
If the API call is unsuccessful, switch to page interaction:
1. browser_snapshot → 查看当前页面结构
2. 找到文书列表或 PDF 预览区域
3. 定位下载按钮(可能在 iframe 内)
4. browser_click → 点击下载
5. 等待下载完成,保存到临时目录
Hubei platform download process (dzsd.hbfy.gov.cn)
The Hubei electronic service platform has two types of links; it automatically selects based on the URL format:
Channel 1: Account-free mode(URL contains /hb/msg=xxx)
- Extract from URL
msgparameter value - Try direct HTTP API connection:
msg="从URL提取的msg值"
mkdir -p /tmp/court-sms-staging/
# 查询文书信息
resp=$(curl -s -X POST "http://dzsd.hbfy.gov.cn/delimobile/tDeliSms/findSmsInfo?t=$(date +%s%3N)" \
-H "Content-Type: application/json" \
-H "Referer: http://dzsd.hbfy.gov.cn/deli-mobile-ui/" \
-d "{\"msg\":\"$msg\"}")
# 检查是否需要验证码(data.isNeedCaptcha == "Y")
# 如需验证码或无可下载文书,降级到 Playwright MCP
# 逐个下载文书
echo "$resp" | jq -r '.data.docList[] | "\(.docName)\t\(.downloadPath)"' | while IFS=$'\t' read -r name path; do
if [ -n "$path" ]; then
curl -sL -o "/tmp/court-sms-staging/${name}.pdf" "http://dzsd.hbfy.gov.cn/delimobile${path}"
fi
done
- If a CAPTCHA is required or HTTP fails, fall back to Playwright MCP (Option 3)
Channel 2: Account mode(URL contains /sfsddz)
- Extract credentials from SMS body:
- Account: match
账号\s*(\d{15,20}) - Default password: match
默认密码[::]\s*([0-9A-Za-z]+)
- Account: match
- Browser automation (Playwright MCP) required; the login page includes a CAPTCHA
- After logging in, iterate through the pending-signature/signed/expired document lists and download each one
Note: Both modes on the Hubei platform may encounter CAPTCHAs. For account-free mode, try the HTTP API first; for account mode, it is recommended to guide the user to open the link manually or use Playwright MCP.
Judicial Delivery Network download process (SFDW - sfpt.cdfy12368.gov.cn)
All POST requests on the Judicial Delivery Network use TDHCryptoUtil encryption and cannot be downloaded via HTTP API; only a pure Playwright process can be used.
Guangxi instance:171.106.48.55:28083 Links under the domain route to the same SFDW platform, and the download process is the same.
CAPTCHA acquisition(two methods, tried in priority order):
- Last 6 digits of the mobile phone number(preferred): Obtain the lawyer's mobile phone number from the case assignment information and use the last 6 digits as the CAPTCHA input
- SMS CAPTCHA: Extract from the SMS body, match
验证码[::]\s*(\w{4,6})
Playwright MCP process:
1. browser_navigate → 打开短信中的 SFDW 链接
2. 等待页面自动重定向到 pc.html?tdhParams=xxx
3. browser_snapshot → 查看验证码输入页面(input#checkCode)
4. 输入验证码(优先手机尾号后6位,其次短信验证码)
5. browser_evaluate → 调用 Vue app.checkYzm() 触发验证
6. 验证通过后 browser_evaluate → 获取 app.$data.wsList(文书列表)
7. 遍历 wsList,逐个调用 downloadFile(app, ws) 下载文书
8. 保存到 /tmp/court-sms-staging/
Note: If phone-number-suffix verification fails, prompt the user to check the CAPTCHA in the SMS and enter it manually. Each item in wsList contains wjmc (file name) and wjgs (format).
Failure fallback
When all three levels fail:
⚠️ 自动下载失败,请手动访问以下链接下载:
{原始链接}
下载后请将文件放到对应案件目录中。
我将为您创建待处理记录。
Step 4: Archive and save
-
Determine the target directory: Automatically determine based on the current project environment, without asking the user
- Scan the current project directory and match case directories related to the case number or parties
- If a matching case directory is found, first look for a court document subdirectory (e.g.,
08*、法院送达、court, etc.); if there is no subdirectory, archive directly to the case root directory - If no matching case is found, automatically create a new one under the current project:
{案号} {当事人与案由}/ - If the target directory does not exist, automatically create it
-
Get the current date:
date "+%Y%m%d" -
Determine the document title:
- Prefer the title returned by the API
- Otherwise, based on
sms-patterns.jsonindocument_titlesmapping, infer - Finally fall back to the original file name (remove the extension); if it still cannot be determined, use
未知文书
-
Construct the file name:
{title}({case_name})_{YYYYMMDD}收.pdf- Example:
受理通知书(张三与李四合同纠纷)_20260404收.pdf - Remove illegal characters:
< > : " | ? * \ / - If a file with the same name already exists, append
_2suffix
- Example:
-
Move into the target directory
-
Write internal record: Save the complete information of this processing to the
archive/directory inside the skill(i.e.,.claude/skills/court-sms/archive/), not the case folder. For the format, seereferences/archive-format.mdTransparent disclosure:
archive/will retain the original SMS text (sms_raw), case numbers, parties, court IDs, download parameters, API responses, and other sensitive litigation information. This directory is excluded from the version control repository by default (already added to.gitignore). Do not sync it to public repositories, third-party cloud drives, or shared directories. -
Basic document parsing: Court PDFs usually have a text layer; extract the first-page text to quickly identify the document type and key information
- Summons: Extract the hearing time, location, courtroom, and case number, and highlight them to the user as reminders
- Notice/Notification: Extract key dates such as the payment deadline and the evidence submission deadline
- Complaint/Statement of Defense: Extract the cause of action, parties, and summary of claims
- Judgment/Ruling: Read the main text and the remedy notice at the end, verify the trial level, procedure, and appealability; do not determine first instance or appealability based on the title alone
- Other documents: Display the document title and court name
- If multiple documents are downloaded at once, parse them one by one and consolidate them into a single report
In-depth analysis (such as judgment interpretation or contract review) is outside the scope of this skill; use a dedicated analysis skill instead.
-
Appeal deadline verification (P1): Follow service and deadline rules for execution; do not calculate directly based on the title
- First check the service evidence, then read the remedy notice in that document, and verify the applicable period, parties, and exceptions. Ordinary civil periods such as 15/10 days are only candidate rules; preservation, final instance, small claims, no domicile within the territory, etc., must be determined separately.
- Verify the official holiday and adjusted workday calendar for the year and the applicable procedural law; the starting day is usually not counted for periods calculated by days, holidays within the period are still counted, only the last day is extended according to the rules, and adjusted workdays are not treated as ordinary weekends.
- If any of service, appealability, period rules, or calendar is unconfirmed,
deadline_status=pending,appeal_deadline=null、appeal_days_remaining=null, and the report clearly states the items pending verification. When it is confirmed that there is no such right of appeal, usenot_applicable。 - Only after all verifications are complete record
deadline_status=confirmed, attachingdeadline_basisand the correspondingserviceevidence. Calculate separately for multiple documents and multiple recipients; historicalsent_atcannot be directly transferred as a confirmed service date. - Read the triggering event and obligation from the original notice separately for deadlines such as payment and evidence submission; do not reuse the appeal deadline table.
-
Report to the user: Follow
references/report-format.mdto output a structured report- First confirm that archiving is complete (case number, court, parties, cause of action, number of files, location)
- List all archived documents
- If a summons is included, ⚠️ highlight the hearing time, location, and trial procedure
- If a judgment/ruling is included, ⏰ display the verified deadline or the reason it is pending verification; do not omit unknown status
- If some operations fail, list the failed documents and their original links
Step 5: PDF post-processing (optional)
Not enabled by default. Only proactively alert the user when file splitting is detected.
After archiving is complete, scan the PDF files in the target directory to detect whether the same document has been split into multiple files.
Read user preferences
Read config/user-preferences.json Get the user's merge and rename preferences. If the file does not exist, use the default values (refer to config/user-preferences.example.json)。
Key preference items:
| Preference | Default value | Description |
|---|---|---|
merge_strategy |
per_evidence |
Merge strategy:per_evidence(merge separately by number) or unified(unified merge) |
merge_options.unified.bookmarks.enabled |
true |
Whether to add PDF bookmarks during unified merge |
rename.enabled |
true |
Whether to simplify file names |
Trigger detection
Read references/sms-patterns.json → post_processing.trigger configuration, group according to the following rules:
分组规则:
1. 证据类:文件名以"证据"开头 → 按编号分组(证据1、证据2、证据3…)
2. 其他文书:按文书类型分组(传票、起诉状、应诉通知书…)
3. 如任一组内文件数 > 3(threshold),触发提示
Example: 10 PDFs under Evidence 3 → trigger.
User confirmation
Use AskUserQuestion to prompt the user, listing the detected split situations:
检测到以下文书被拆分为多个 PDF:
- 证据3:10 个文件
- 证据5:4 个文件
是否执行 PDF 后处理(合并 + 重命名)?
→ 是,合并所有
→ 让我选择(逐个确认)
→ 跳过
Execute post-processing
After user confirmation, according to the user-preferences.json in merge_strategy execute:
Strategy 1: per_evidence (default)
Merge separately by individual evidence number, each piece of evidence retained independently:
- 证据3 有 10 个拆分文件 → 合并为「证据3:打印截图.pdf」
- 证据5 有 4 个拆分文件 → 合并为「证据5:电脑截图.pdf」
- 未被拆分的证据(如证据1 只有 1 个文件)保持不动
Strategy 2: unified
Merge the evidence directory + all evidence into a single "Plaintiff's Evidence.pdf", and add PDF bookmarks:
合并顺序:证据目录 → 证据1 → 证据2 → … → 证据N
书签格式:
📑 证据目录
📑 证据1:仲裁申请书、不予受理通知书
📑 证据2:劳动合同、保密协议
📑 证据3:被告工资表
📑 证据4:泄露账号密码的电脑截图
📑 证据5:打印及拷贝资料的电脑截图
📑 证据6:删除电脑操作痕迹的截图
The bookmark name uses the concise version: evidence number + colon + evidence title (remove party and date suffixes). Use pypdf's add_outline_item to add bookmarks.
The user can modify
user-preferences.jsonat any time to switch strategies, without changing the skill itself.
Page size standardization
During the merge process, simultaneously standardize page sizes to A4 (210×297mm). Use pypdf to process page by page:
from pypdf import PdfReader, PdfWriter, Transformation
A4_W = 595.27 # 210mm in points
A4_H = 841.89 # 297mm in points
for page in reader.pages:
pw, ph = float(page.mediabox.width), float(page.mediabox.height)
is_landscape = pw > ph
# 保持原始方向:纵向→A4纵向,横向→A4横向
target_w = A4_H if is_landscape else A4_W
target_h = A4_W if is_landscape else A4_H
# 等比缩放并居中
scale = min(target_w / pw, target_h / ph)
offset_x = (target_w - pw * scale) / 2
offset_y = (target_h - ph * scale) / 2
new_page = writer.add_blank_page(width=target_w, height=target_h)
page.add_transformation(Transformation().scale(scale).translate(offset_x, offset_y))
new_page.merge_page(page)
Rules:
- Portrait page → A4 portrait (210×297mm)
- Landscape page → A4 landscape (297×210mm), do not force rotation to portrait
- Proportional scaling, centered placement, no cropping, no stretching
Simplify file names
According to the user-preferences.json → rename configuration, uniformly rename all files:
去除规则(strip_patterns):
- 去掉括号内的当事人信息:(张三与李四合同纠纷)
- 去掉日期后缀:_20260405收
- 去掉平台标记:(合并)、(自贸法庭)、(素)-
特殊映射(special_mappings):
- 起诉状(素)… → 起诉状(要素式).pdf
- 开庭传票 → 传票.pdf
Rename example:
| Original | After renaming |
|---|---|
传票(张三与李四合同纠纷)_20260405收.pdf |
传票.pdf |
起诉状(合并).pdf |
起诉状.pdf |
起诉状(素)-要素式起诉状(合并).pdf |
起诉状(要素式).pdf |
应诉通知书(自贸法庭).pdf |
应诉通知书.pdf |
E法桥平台使用告知书(xxx)_20260405收.pdf |
E法桥平台使用告知书.pdf |
Internal archive format
After each processing is completed, create a JSON record under archive/ , for the format see references/archive-format.md。
Common court SMS format reference
Document service SMS
【xx市人民法院】张三,您好!您有(2025)苏0981民初1234号案件文书送达,
请点击链接查收:
https://zxfw.court.gov.cn/zxfw/#/pagesAjkj/app/wssd/index?qdbh=DEMO1&sdbh=DEMO2&sdsin=DEMO3
如非本人操作请联系法院。
Case filing notice SMS
【xx市xx区人民法院】您好,您提交的立案材料已审核通过。
案号:(2025)京0105民初54321号
请及时缴纳诉讼费用。
Court hearing reminder SMS
【xx市xx区人民法院】提醒:您有(2025)苏0508民初567号案件,
定于2025年3月15日上午9:30在第3法庭开庭,请准时到庭。
Hubei electronic service SMS (account-free)
【xx人民法院】您有案件文书待查收,请点击链接查收:
http://dzsd.hbfy.gov.cn/hb/msg=XXXXXXX
如有疑问请联系法院。
Hubei electronic service SMS (account mode)
【xx人民法院】您有(2025)鄂xxxx民初xxxx号案件文书送达。
账号 420xxxxxxxxxxxxx
默认密码:xxxxxx
请登录 http://dzsd.hbfy.gov.cn/sfsddz 查收。
Judicial service network SMS
【xx人民法院】您有(2025)川xxxx民初xxxx号案件文书送达。
验证码:A1B2C3
请点击链接查收:https://sfpt.cdfy12368.gov.cn/sfsdw//r/xxxxxxxxxxxx
Troubleshooting
| Problem | Solution |
|---|---|
| SMS type cannot be identified | Display the original text, ask the user to confirm the type before continuing |
| Case number extraction failed | Manually enter the case number |
| Party identification inaccurate | Prompt the user to confirm/correct the party list |
| No matching case | Provide three options: select existing/create new/save temporarily |
| Playwright download timeout | Check the network connection, try refreshing the page and retry |
| Page requires a CAPTCHA | Notify the user, pause and wait for manual processing |
| Downloaded file corrupted | Clean up the temporary directory, retry the download |
| Target directory does not exist | Automatically create the corresponding directory |
| SFDW verification code verification failed | Try the last 6 digits of the phone number and the SMS verification code; if both fail, prompt the user to contact the court |
Configuration
No additional configuration is required. For parsing rules, see references/sms-patterns.json。
To modify the parsing rules (add new document titles, adjust regular expressions, etc.), simply edit this JSON file.
🔄 Change History
For the full changelog, see CHANGELOG.md. For the attribution statement, see references/ATTRIBUTION.md。