💼

國家法律法規查詢

👤 nigo 📦 v1.0.0 ⭐ 4.7 ⬇️ 139 下載
💼 行業專業 免費

📖 技能介紹


name: china-law-search description: 中國國家法律法規資料庫(flk.npc.gov.cn)查詢工具。支援法規搜尋、詳情檢視、狀態檢查、按日期篩選新發布法規、批次狀態核查。觸發詞:法律法規、法規查詢、法規檢索、法規狀態、法規廢止、法規修訂、新發布法規、flk、國家法律法規資料庫、china law、law search、規章查詢、部門規章、地方規章、國家規章庫、規章檢索、gov.cn規章。 slug: nigo-china-law-search displayName: 國家法律法規查詢 version: 1.0.0 summary: 中國國家法律法規資料庫(flk.npc.gov.cn)查詢工具,支援法規搜尋、詳情檢視、狀態檢查、按日期篩選新發布法規、批次狀態核查。 license: MIT


中國法律法規統一查詢

統一查詢入口,自動先查國家法律法規資料庫(flk.npc.gov.cn),查不到再 fallback 到國家規章庫(gov.cn)。

覆蓋範圍: - 國家法律法規資料庫:憲法、法律、行政法規、地方法規、司法解釋、監察法規 - 國家規章庫:部門規章、地方政府規章

When to Use

  • 查詢某條法律法規/規章是否仍然有效
  • 搜尋某個關鍵詞相關的法律法規或規章
  • 查詢某個日期之後新發布的法律法規
  • 批次檢查一批法規的當前狀態(自動兩庫聯查)
  • 從Excel讀取法規清單,批次檢查有效性並輸出Excel結果
  • 查詢新發布法規並直接輸出Excel
  • 批次下載法規全文(docx)
  • 下載法規全文(docx/pdf)

使用方式

Python API(AI Agent 推薦用法)

import sys, os
sys.path.insert(0, os.path.expanduser("~/.claude/skills/china-law-search/scripts"))
import law_search

# ── 搜尋 ──
result = law_search.unified_search("安全生產法")
result = law_search.unified_search("危險化學品 安全管理", content_search=True)

# ── 批次檢查 ──
results = law_search.unified_batch_check(["法規名稱1", "法規名稱2"])

# ── 從Excel批次檢查並輸出Excel(一步到位,支援斷點續查)──
law_search.batch_check_to_excel(
    input_excel="法律法規清單.xlsx",
    output_excel="法規有效性查詢結果.xlsx",
    col="B",              # 法規名稱所在列
    start_row=2,           # 資料起始行(跳過表頭)
    progress_file="check_progress.json",  # 斷點續查進度檔案
)

# ── 查詢新發布法規並輸出Excel ──
law_search.new_since_to_excel("2026-01-01", "2026年新發布法規.xlsx")

# ── 批次下載法規全文(推薦工作流:查詢→轉格式→下載→重試)──
import json

# Step 1: 批次查詢
results = law_search.unified_batch_check(["法規名稱1", "法規名稱2"])

# Step 2: 轉成 batch_download_from_check 需要的格式
check_progress = {}
for r in results:
    name = r.get("name", "")
    check_progress[name] = {
        "status": r.get("status", ""),
        "url": r.get("url", ""),
        "source": "國家規章庫" if r.get("source") == "gov.cn" else "國家法律法規資料庫",
    }

# Step 3: 批次下載(支援斷點續下)
law_search.batch_download_from_check(
    check_progress=check_progress,
    output_dir="./下載",
    delay=0.5,
    dl_progress_file="download_progress.json",
)

# Step 4: 如有超時,直接重跑(自動跳過已下載的)
law_search.batch_download_from_check(
    check_progress=check_progress,
    output_dir="./下載",
    delay=0.5,
    dl_progress_file="download_progress.json",
)

# ── 單獨呼叫某個庫 ──
from lib import flk_api, gov_api

flk_api.search("安全生產法", exact=True)
flk_api.search("危險化學品", content_search=True)
flk_api.search_all_pages("消防安全", content_search=True)

gov_api.search("商品房屋租賃管理辦法")
gov_api.search("消防安全", content_search=True)

# 下載
flk_api.download_file("bbbs_id", output_dir="./downloads")
gov_api.download_as_docx("商品房屋租賃管理辦法", output_dir="./downloads")

CLI

LAW=~/.claude/skills/china-law-search/scripts/law_search.py

# ── 搜尋 ──
python3 $LAW search "安全生產法"
python3 $LAW search "安全生產法" --exact
python3 $LAW search "危險化學品 安全管理" --content
python3 $LAW search "消防安全" --content --all-pages

# ── 批次檢查 ──
python3 $LAW batch-check laws.txt
python3 $LAW batch-check laws.txt --json

# ── 從Excel批次檢查並輸出Excel ──
python3 $LAW check-excel 法律法規清單.xlsx -o 查詢結果.xlsx --col B --progress progress.json

# ── 查詢新發布法規並輸出Excel ──
python3 $LAW new-since-excel 2026-01-01 -o 2026年新發布法規.xlsx

# ── 查詢新發布法規(文本輸出)──
python3 $LAW new-since 2025-03-09
python3 $LAW new-since 2025-03-09 --all-types --all-pages --json

# ── 下載 ──
python3 $LAW download <bbbs_id> --output ./downloads
python3 $LAW batch-download check_result.json --output ./downloads

# ── 從檢查進度批次下載 ──
python3 $LAW download-from-check progress.json -o ./下載 --dl-progress dl_progress.json

檔案結構

china-law-search/
├── SKILL.md                    # 本檔案
├── scripts/
│   ├── law_search.py           # 統一入口(推薦使用)
│   └── flk_api.py              # flk.npc.gov.cn 獨立客戶端(向後相容)
└── lib/
    ├── __init__.py
    ├── flk_api.py              # 國家法律法規資料庫 API
    ├── gov_api.py              # 國家規章庫 API
    ├── refresh_gov_key.js      # playwright-cli 重新整理 athenaappkey 指令碼
    └── .athena_key_cache.json  # athenaappkey 快取(自動生成)

核心函式一覽

函式 用途 輸入 輸出
unified_search() 統一搜索(兩庫) 關鍵詞 dict
unified_batch_check() 批次檢查狀態 名稱列表 list
batch_check_to_excel() Excel→批次檢查→Excel 輸入Excel路徑 輸出Excel
new_since_to_excel() 新發布法規→Excel 日期 Excel檔案
unified_new_since() 新發布法規查詢 日期 dict
batch_download_from_check() 批次下載全文 檢查進度dict 下載進度dict

輸出欄位說明

所有查詢結果統一包含以下欄位:

欄位 說明
title 法規名稱
type / flxz 法規類別(法律/行政法規/部門規章/地方政府規章等)
date / gbrq 公佈日期
status / sxx_text 狀態(有效/已修改/已廢止/尚未生效)
org / zdjgName 制定機關
source 資料來源:國家法律法規資料庫國家規章庫
url 原文連結(可點選)

檔案下載

國家法律法規資料庫(flk)

  • 直接下載官方 docx/pdf 檔案,通過簽名 URL 從 OSS 獲取
  • flk 有 JS 反爬保護,download_file() 內部通過 playwright-cli 獲取簽名URL繞過

國家規章庫(gov.cn)

  • 規章庫沒有直接的檔案下載介面
  • 通過抓取詳情頁 HTML,用 pandoc 轉 docx(保留原始格式)
  • 依賴:需要安裝 pandocbrew install pandoc)和 python-docxpip install python-docx

批次下載

  • batch_download_from_check() 從檢查進度資料批次下載
  • 自動區分 flk 和規章庫,使用不同下載方式
  • 支援斷點續下(通過 dl_progress_file 引數)

athenaappkey 管理

國家規章庫 API 需要動態認證 key,約 1 小時過期。

自動重新整理

gov_api.py 檢測到 key 過期或無效時,會自動通過 playwright-cli 攔截瀏覽器請求獲取新 key,並驗證有效性後再快取。流程: 1. 用 playwright-cli open 開啟規章庫頁面 2. 用 playwright-cli --raw run-code 攔截 athena/forward 請求,提取 athenaappkey header 3. 發一個測試請求驗證 key 有效性(resultCode.code == 200) 4. 驗證通過後儲存到快取,關閉瀏覽器

如果自動重新整理失敗(playwright-cli 不可用或網路問題),可按下方"athenaappkey 重新整理標準流程"手動獲取。

檔案命名規則

下載檔案命名: 法規型別_法規名稱_公佈日期_狀態.ext 例如: 法律_中華人民共和國安全生產法_2021-06-10_有效.docx

已知問題與經驗

flk 下載超時與重試

  • flk.npc.gov.cn 的下載 API 有 JS 反爬保護,直接 HTTP 請求會返回 HTML 而非 JSON
  • 解決方案:flk_api.download_file() 內部通過 playwright-cli 獲取簽名下載URL
  • 如果 playwright-cli 不可用,下載會失敗
  • 批次下載時可能出現間歇性超時(The read operation timed out),這是 flk 的反爬觸發了
  • batch_download_from_check() 支援斷點續下,超時的條目重跑即可自動跳過已完成的
  • 建議批次下載 delay 保持 0.5-1 秒,如有超時直接重跑即可

規章庫 API 返回格式變化(2026-04 發現)

  • 規章庫搜尋 API 的返回結構可能有兩種格式:
  • 舊格式:result.data 是 dict,包含 pagerlist
  • 新格式:result.data 是 list(直接是結果列表),result.totalCountresult.pageSize 在上層
  • gov_api.pysearch()search_with_content() 已相容兩種格式
  • 當 athenaappkey 無效時,API 不會返回 HTTP 錯誤,而是返回 data: [] + resultCode 包含錯誤資訊(如 athena_01503 解密失敗
  • 如果規章庫返回 0 條結果但實際應該有資料,先檢查 athenaappkey 是否有效

規章庫 athenaappkey 過期

  • 規章庫 API 的 athenaappkey 約1小時過期
  • gov_api.py 已改進為自動重新整理 + 驗證:key 過期或無效時自動通過 playwright-cli 攔截請求獲取新 key,並驗證有效性
  • 自動重新整理依賴 playwright-cli(@playwright/cli),未安裝時會自動通過 npm install -g @playwright/cli 安裝
  • 如果自動重新整理失敗(如 playwright-cli 不可用),可按"athenaappkey 重新整理標準流程"手動獲取

athenaappkey 重新整理標準流程(3步)

Step 1:開啟規章庫頁面

playwright-cli open https://www.gov.cn/zhengce/xxgk/gjgzk/index.htm

Step 2:攔截請求獲取 key

playwright-cli --raw run-code "async page => {
  const keys = [];
  await page.route(url => url.href.includes('athena/forward'), async route => {
    const key = route.request().headers()['athenaappkey'] || '';
    if (key) keys.push(key);
    await route.continue();
  });
  await page.reload({ waitUntil: 'networkidle' });
  await page.waitForTimeout(3000);
  await page.unroute(url => url.href.includes('athena/forward'));
  return keys.join(',');
}"

輸出是逗號分隔的多個 key(都一樣),取第一個即可。

Step 3:儲存到快取檔案

import json, time, os
key = '這裡貼上Step2輸出的第一個key'
cache_path = os.path.expanduser('~/.claude/skills/china-law-search/lib/.athena_key_cache.json')
with open(cache_path, 'w') as f:
    json.dump({'key': key, 'ts': time.time()}, f)

Step 4:關閉瀏覽器

playwright-cli close

重新整理後快取有效期約1小時,足夠完成大部分批次操作。

部分法規兩庫都查不到

  • 通知、意見、指引等規範性檔案兩庫都不收錄
  • 中央企業相關的內部管理辦法通常不在公開法規庫中(如"中央企業合規管理辦法"在規章庫可查,但"中央企業全面風險管理指引"查不到)
  • 具體查不到的型別:國資委釋出的"指引"、"意見"、"通知"、"工作規則"、"工作規定"
  • 這類檔案標記為"未找到",需從國資委官網或其他渠道獲取

批次操作建議

  • 大批次查詢(>100條)建議使用 batch_check_to_excel() 並指定 progress_file
  • 進度檔案支援斷點續查,中斷後重新執行會跳過已完成的
  • 下載同理,使用 dl_progress_file 支援斷點續下
  • 查詢和下載建議間隔 0.5-1 秒,如有超時直接重跑(斷點續下)
  • 批次下載如有超時,重跑即可(自動跳過已完成的)

unified_batch_check 返回格式

  • 返回 list,每個元素是 dict,包含 name, found, title, status, bbbs, url, flxz, source 等欄位
  • found=True 時有完整資訊,found=False 時只有 namestatus
  • 要傳給 batch_download_from_check(),需要轉成 {法規名: {status, url, source, ...}} 格式的 dict
  • 注意unified_batch_check 返回的 status 欄位對規章庫結果是 "有效(規章庫)"source"gov.cn"

flk_api.search 返回格式

  • 返回 dict(不是 list),結構為 {"total": N, "rows": [...]}
  • 每個 row 包含 bbbs(ID)、titlegbrqsxx(時效性編碼)、flxz(法規分類)等

    這個技能的最新版本可以在7w4.net小蔥技能站找到。

  • 注意gbrq 欄位可能是 None(不是空字串),比較時需要處理 None
  • 搜尋結果可能包含不相關的法規(如搜"憲法"會返回"廈門市…關於…憲法…的決定"),batch_check() 內部已有精確匹配邏輯,不要自己寫匹配邏輯,直接用 unified_batch_check

Key Rules

  • 批次檢查時自動兩庫聯查:先查 flk,查不到的再查規章庫
  • flk API 無需認證,穩定可靠
  • 規章庫 API 需要動態 athenaappkey,過期後會自動通過 playwright-cli 重新整理並驗證,通常無需手動干預。如自動重新整理失敗,按"athenaappkey 重新整理標準流程"手動獲取
  • 查詢和下載間隔建議 0.5-1 秒
  • 國家規章庫只收錄現行有效規章,已廢止的不在庫中
  • 部分規範性檔案(通知、意見、指引等)兩庫都不收錄,需人工確認
  • --content 按正文內容搜尋,兩個庫都支援
  • --all-pages 自動翻頁獲取全部結果,適用於結果較多的場景
  • 全文搜尋建議用短關鍵詞(2-4個詞),長句可能無結果
  • 規章庫下載通過抓取詳情頁 HTML 用 pandoc 轉 docx,需要安裝 pandoc
  • Excel 輸出使用 openpyxl,需要安裝(pip install openpyxl
  • 不要自己寫法規匹配邏輯,直接用 unified_batch_check(),它內部已處理好精確匹配、多版本選擇、None 值等邊界情況
  • 不要自己寫下載邏輯,用 batch_download_from_check() 組合 unified_batch_check() 的結果,它自動區分 flk/規章庫並支援斷點續下
  • 批次下載如有超時,重跑即可(自動跳過已完成的,斷點續下)

自我進化規則

當使用本 skill 完成任務後,如果發現以下情況,應自動更新 skill 程式碼和文件:

  1. 新的 API 變化:如果 flk 或規章庫的 API 介面發生變化(返回格式、URL、認證方式等),更新對應的 lib/flk_api.pylib/gov_api.py
  2. 新的使用模式:如果使用者的使用方式產生了新的有用函式或工作流,將其整合到 scripts/law_search.py 並更新 SKILL.md
  3. Bug 修復:如果在使用中發現並修復了 bug,確保修復被持久化到 skill 檔案中
  4. 經驗積累:如果遇到新的已知問題或解決方案,更新 SKILL.md 的"已知問題與經驗"部分
  5. 依賴變化:如果發現新的依賴需求或依賴版本問題,更新文件

更新時遵循以下原則: - 保持向後相容,不破壞已有的 API - 新增函式同時提供 Python API 和 CLI 介面 - 所有批次操作都支援斷點續做(通過進度檔案) - 更新 SKILL.md 的函式一覽表和使用示例


作者:nigo 微信公眾號:逆行的狗

🤖 AI 評測

質量良好,文件詳細且功能實用,搜尋和批次檢查功能穩定可靠,Excel 匯出和斷點續做機制設計合理。優點是覆蓋兩個權威法規庫、支援批次操作、異常處理完善。不足是部分功能依賴外部工具安裝,可能出現環境配置問題,整體使用門檻稍高。適合需要頻繁查詢法規的使用者使用。

📊 多維度評分

適應性4.5
規範性4.6
有效性4.8
可靠性4.5
可信度4.9

📁 包含檔案 (6 個)

📄 SKILL.md 15.2 KB
📄 lib/__init__.py 0 B
📄 lib/flk_api.py 18.6 KB
📄 lib/gov_api.py 22.6 KB
📄 lib/refresh_gov_key.js 532 B
📄 scripts/law_search.py 42.2 KB