本仓库是 macOS Apple Silicon 版本的源码级分享包,用于抓取科研、工信、发改、财政、人工智能、产业政策和案例信息,并通过 OpenAI-compatible API 一键生成中文科研政策简报。
This repository is the source-ready macOS Apple Silicon edition of a policy crawler and AI-assisted daily brief generator. It collects Chinese research, industry, AI, funding, and policy updates, then uses an OpenAI-compatible API to generate a Chinese research-policy brief.
注意 / Note: 这个 GitHub 仓库不包含便携运行时
runtime/、浏览器登录态app_data/、历史输出outputs_app/、本地日志或简报模板。完整便携包可作为 GitHub Release 附件发布;源码仓库适合阅读、二次开发和自行安装依赖运行。
- 抓取国家部委、地方政府、科技/工信/发改/财政部门、学会、实验室和相关产业信息源。
- 从官网列表页、站内搜索、Bing 搜索、微信公众号后台历史文章等多个通道采集候选信息。
- 用规则过滤科研项目、资质申报、奖励申报、人工智能、算力、芯片、服务器、云计算、通信、存储、散热等主题。
- 支持 Playwright 渲染动态页面,也支持
requests + BeautifulSoup直连抓取静态 HTML。 - 支持 DeepSeek、OpenAI、通义千问、智谱、Moonshot/Kimi、火山方舟、SiliconFlow、OpenRouter 和自定义 OpenAI-compatible API。
- 在本机 PWA 控制台里输入 API Key 后,点击一次即可完成智能筛选、摘要生成和报告导出。
- 输出 PDF/DOCX/XLSX/JSON,包括日报、来源与关键词说明、爬取记录和失败记录。
主要来源写在 config/sources.json。当前配置包含 57 个来源,其中 53 个默认启用。
国家级来源 / National sources:
- 科技部
www.most.gov.cn - 国家发展改革委
www.ndrc.gov.cn - 工业和信息化部
www.miit.gov.cn - 财政部
www.mof.gov.cn - 国家科学技术奖励工作办公室
www.nosta.gov.cn
北京来源 / Beijing sources:
- 北京市科委、中关村管委会
- 北京市发展改革委
- 北京市经济和信息化局
- 北京市人才工作局(北京政务专题)
- 北京市财政局
山东与济南来源 / Shandong and Jinan sources:
- 山东省科学技术厅、山东省工业和信息化厅、山东省发展改革委、山东省财政厅
- 济南市科学技术局、济南市工业和信息化局、济南市发展改革委、济南市财政局、济南高新区
江苏与苏州来源 / Jiangsu and Suzhou sources:
- 江苏省科学技术厅、江苏省工业和信息化厅、江苏省发展改革委、江苏省财政厅
- 苏州市科学技术局、苏州市工业和信息化局、苏州市发展改革委、苏州市财政局、苏州市吴中区人民政府
河南与郑州来源 / Henan and Zhengzhou sources:
- 河南省科学技术厅、河南省工业和信息化厅、河南省发展改革委、河南省财政厅
- 郑州市科学技术局、郑州市工业和信息化局、郑州市发展改革委、郑州市财政局
陕西来源 / Shaanxi sources:
- 陕西省科学技术厅、陕西省工业和信息化厅、陕西省发展改革委、陕西省财政厅
学会、实验室和行业来源 / Societies, labs, and industry sources:
- 上海人工智能实验室、中国人工智能学会、中国电子学会、中国通信学会
- 山东电子学会、山东省人工智能学会、山东省计算机学会、山东通信学会
- 北京市科协、江苏省科协、河南省科协、陕西省科协、山东省科协
微信公众号来源写在 config/wechat_accounts.json,用于补充行业热点和案例转载类信息。默认关键词覆盖算力、服务器、人工智能、大模型、芯片、科研经费、财政资金、问责等方向。
核心入口是 gov_policy_agent.py,本地控制台服务是 tools/local_pwa_server.py。
抓取链路 / Crawling pipeline:
- 读取
config/sources.json中的机构名称、层级、官网域名和 seed URL。 - 读取
config/site_strategies.json中的站点专用策略,例如列表链接选择器、正文选择器、是否优先 Playwright、额外 seed URL。 - 对每个来源并行抓取列表页,优先使用
requests直连 HTML。 - 如果页面需要 JavaScript 渲染、反爬挑战或列表为空,则使用 Playwright 打开 Chromium 获取渲染后 HTML。
- 从列表页抽取候选文章链接,过滤明显非政策链接、医疗健康等不相关条目。
- 进入正文页抽取标题、日期、正文、来源、链接和政策信号。
- 对动态站点和失败链接进行站内/Bing 搜索补充。
- 启用微信公众号搜索时,先通过
--wechat-login保存本机登录态,再用后台历史文章搜索补充行业热点和案例信息。 - 对结果去重、按日期窗口过滤、按主题规则筛选,并生成候选包、Excel 记录和报告文件。
默认 PWA 的“运行日报”按钮会执行类似下面的命令:
python3 gov_policy_agent.py \
--as-of YYYY-MM-DD \
--output-dir outputs_app/outputs_refresh_YYYYMMDD_daily \
--report-bundles summary \
--pdf-engine auto \
--enable-wechat-search \
--cookie-dir app_data/wechat_state \
--parallel-workers 8 \
--disable-playwright-repair \
--disable-llm-review \
--verbosePWA 页面提供“智能筛选并生成日报”按钮。实现方式如下:
- 用户在本机页面选择服务商、API Base URL、模型,并输入 API Key。
- 前端
pwa/app.js调用本地接口POST /api/generate-brief。 - 本地服务
tools/local_pwa_server.py从上一步抓取结果中找到.runtime/简报候选包_*.json。 - 服务端把候选政策、行业热点、案例信息压缩成 JSON prompt,调用 OpenAI-compatible API。
- 模型返回每条入选内容的
id、key_point和summary。 - 服务端写入
.runtime/codex_manual_summary_YYYYMMDD_daily.json。 - 服务端再执行
gov_policy_agent.py --repair-only --manual-summary-json ...,把摘要回填进最终日报并导出文件。
支持的 API 服务商 / Supported API providers:
- DeepSeek:
https://api.deepseek.com - OpenAI:
https://api.openai.com/v1 - 通义千问 / DashScope:
https://dashscope.aliyuncs.com/compatible-mode/v1 - 智谱 AI:
https://open.bigmodel.cn/api/paas/v4 - Moonshot / Kimi:
https://api.moonshot.cn/v1 - 火山方舟:
https://ark.cn-beijing.volces.com/api/v3 - SiliconFlow:
https://api.siliconflow.cn/v1 - OpenRouter:
https://openrouter.ai/api/v1 - 自定义 OpenAI-compatible endpoint
API Key 只通过本机浏览器发送到本机服务,再由本机服务调用模型接口;仓库不会保存你的 Key。Do not commit real API keys.
源码运行方式 / Source checkout:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m playwright install chromium
python tools/local_pwa_server.py --workspace .浏览器会打开:
http://127.0.0.1:8765/
macOS 启动脚本 启动政策爬虫小程序.command 是给完整便携包使用的,会查找 runtime/python/bin/python3。源码仓库没有 runtime/,所以源码运行请使用上面的 Python 命令。
- 安装依赖并启动本机 PWA。
- 在页面选择基准日期。
- 第一次使用微信公众号搜索时,按页面提示扫码登录;登录态会保存在本机
app_data/wechat_state/,不要上传。 - 点击“运行日报”等待抓取完成。页面会显示进度、日志、已抓取数据和输出文件。
- 在“智能筛选”区域选择 API 服务商、模型,输入 API Key。
- 点击“智能筛选并生成日报”。
- 在“输出文件”里下载 PDF、DOCX、XLSX 或 JSON。
config/sources.json: 官网来源、层级、域名、seed URL。config/site_strategies.json: 站点专用选择器、Playwright 等待条件、额外入口。config/wechat_accounts.json: 微信公众号搜索账号名、范围、优先级和关键词。config/query_templates.json: 专利、标准、论文、技术资讯等检索模板。config/competitor_aliases.json: 竞对或机构别名。config/report_options.json: 报告标题、副标题和模板路径。
本仓库已删除 科研信息简报模板.docx。如果你需要套用 Word 模板,请把模板放回本地,并把 config/report_options.json 的 template_path 改成你的本机路径;如果模板不存在,程序会用默认空白文档结构生成 DOCX。
默认输出目录是 outputs_app/outputs_refresh_YYYYMMDD_daily/。
常见文件:
科研信息简报_YYYYMMDD.pdf: 最终日报。信息来源与搜索关键词_YYYYMMDD.pdf: 来源与关键词说明。信息来源与搜索关键词使用说明_YYYYMMDD.pdf: 使用说明。爬取记录和总结_YYYYMMDD.xlsx: 明细、失败记录和统计。.runtime/intelligence_items_latest.json: 本机 PWA 展示用的结构化缓存。.runtime/简报候选包_YYYYMMDD.json: 供 API 智能筛选的候选包。.runtime/codex_manual_summary_YYYYMMDD_daily.json: API 生成的摘要选择结果。
不要提交以下目录和文件:
runtime/: 大型便携运行时和浏览器二进制。app_data/: 浏览器 cookie、微信登录态和 storage state。outputs_app/: 生成报告、候选包和运行缓存。.omx/: 本地 agent 状态和日志。.env,.env.local: API Key 和本机配置。*.zip: 完整便携包应作为 Release asset 发布,不应进 Git 仓库。
The included .gitignore is configured to keep these files out of repository history.