政府政策检索与钉钉群推送(Gov Policy → DingTalk Push)
功能定义(Overview)
本技能搭建一条「定期检索政府政策 → 解析提取关键信息 → 自动推送到钉钉群」的完整管线:
- 检索:按配置的数据源清单(政府官网 / 政策发布平台 / 通知公告栏目),周期性访问抓取最新政策
- 解析:从页面中提取政策标题、发布日期、发文机关、政策摘要、原文链接、申报截止日期等字段
- 去重:基于「标题 + 发文机关 + 发布日期」识别新增政策,避免重复推送
- 推送:通过钉钉自定义机器人 Webhook(支持加签)以 Markdown 消息发送到指定群
适用于:企业补贴/资质申报信息监控、行业政策日报、政府公开信息订阅等场景。本技能沉淀自政府政策巡检生产实践(57 个监控源、每日巡检、台账同步 + 截止提醒,全链路已验证)。
何时使用(When to Use)
- 用户要求把某个政策来源/关键词的更新自动推送到钉钉群
- 需要配置"每日/每小时巡检政府网站"的定时任务
- 需要定义钉钉推送消息的标准格式(标题加粗、来源部门、摘要、链接)
- 已有政策数据(Excel/JSON/网页)需要整理后推送到钉钉
- 需要为新的政策来源扩展现有推送管线
输入参数(Input Parameters)
所有参数通过配置文件管理(见 references/config.example.json),核心参数:
| 参数 | 说明 | 示例 |
|---|---|---|
| sources[] | 政策数据源清单:url(栏目页)、name、region(地区/级别)、department(发文机关)、keywords(栏目筛选词) | 工信部通知公告、广东省科技厅通知 |
| filter.keywords | 全局检索关键词/分类筛选(命中才推送) | ["补贴","申报","专项资金","奖励"] |
| filter.excludeKeywords | 排除词(如"征求意见稿"、已过期批次) | ["征求意见"] |
| lookbackDays | 时间窗口:只保留近 N 天发布的新政策 | 7 |
| bot.webhook / bot.secret | 钉钉机器人 Webhook 地址与加签密钥(secret 走环境变量 DINGTALK_SECRET,勿入库) | https://oapi.dingtalk.com/robot/send?access_token=xxx |
| bot.groupName / bot.groupId | 目标钉钉群名称 / 群 ID(用于汇报与标识,webhook 本身已绑定群) | 政策信息群 |
| schedule | 检索频率:rrule(WorkBuddy 自动化)或 cron(自建调度) | FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=9;BYMINUTE=0 |
| push.* | 推送行为:是否 @所有人、日报标题模板、是否分离截止提醒 | 见配置示例 |
| remindDays | 截止提醒提前天数(可选,配合台账场景) | 7 |
机器人创建方式:目标群 → 群设置 → 机器人 → 添加自定义机器人 → 安全设置勾选「加签」→ 得到 Webhook 与 SEC 密钥。Webhook 仅存于本地配置,SECRET 建议用环境变量注入。
处理流程(Workflow)
Step 1 — 访问并抓取目标政策源
- 读取配置文件,逐个访问
sources[]中的栏目 URL(优先 gov.cn 官方域名) - 用 WebFetch 抓取栏目列表页;若列表页需要翻页或为 JS 渲染,抓取前 1–2 页即可
- 对命中关键词的条目,用 WebFetch 抓取详情页核实正文与发布日期
- 记录巡检结果:成功访问数 / 失败源(打不开、栏目异常)
Step 2 — 识别新增政策(去重)
- 去重键:
政策标题 + 发文机关 + 发布日期(无日期时用标题+机关) - 与上次推送记录比对(本地
data/seen.json或推送历史文件);仅保留lookbackDays窗口内、且未推送过的条目 - 同一政策年度批次(如"2026年度申报")视为不同条目
- 只推真实可核查信息:URL 必须真实,严禁编造
Step 3 — 提取并格式化政策信息
按输出规范(见下)将每条政策整理为结构化条目,字段:标题 / 发布机关 / 发布日期 / 摘要(1-2 句)/ 原文链接,可选字段:补贴类型、申报条件、金额、截止日期。
Step 4 — 通过 Webhook 推送 Markdown 消息
- 将整理好的条目渲染为 Markdown 文本,保存到本地
data/push_{YYYYMMDD}.md - 执行推送脚本(见
scripts/dingtalk-push.js):# 环境变量注入(不要写死在脚本里) export DINGTALK_WEBHOOK="https://oapi.dingtalk.com/robot/send?access_token=xxx" export DINGTALK_SECRET="SECxxx" # 用文件推送 node scripts/dingtalk-push.js --title "🏛️ 政策日报 2026-08-06" --file data/push_20260806.md # 或直接文本推送 node scripts/dingtalk-push.js --title "测试" --text "**政府政策推送** 管线正常 ✅" # 需要 @所有人 时加 --at-all - 校验返回
errcode === 0;成功后把本次推送的政策写入data/seen.json供下次去重
定时调度(可选,推荐)
在 WorkBuddy 中创建自动化任务:
- 名称:
政府政策推送:<数据源名> - 调度:
schedule中配置的 rrule(如工作日 09:00) - 工作目录:skill 所在项目目录
- Prompt:
按 gov-policy-dingtalk-push 技能执行一次政策检索与推送,配置文件:<路径>
输出规范(Output Format)
钉钉消息按以下标准格式(Markdown,确保群内阅读清晰):
## 🏛️ 政策日报 YYYY-MM-DD(周X)
### 1️⃣ 国家级
**科技口**
1. [**政策标题(加粗)**](https://原文链接)
(发文机关 | 补贴类型 | 申报条件摘要 | 补贴金额 | 截止 YYYY-MM-DD)
> 摘要正文:一句话要点
### 2️⃣ 省级 / 市级 / 区级
(按地区分组,规则同上;某组无新政写「今日暂无新增」)
---
📊 **巡检统计:已巡检 N/M 个监控源;打不开 K 个(列出);栏目异常 J 个**
🗂️ **去重统计:新增 X 条(跳过重复 Y 条)**
—— 由政府政策推送机器人自动发送
格式要点:
- 政策标题加粗,并包在 Markdown 链接内(点击直达原文)
- 单条信息用
|分隔的元信息行:发文机关、发布日期、摘要 - 原文链接单独可点击(钉钉支持
[文字](url)) - 日期统一
YYYY-MM-DD;截止类信息标注剩余天数(当天截止标⚠️) - 结尾附巡检统计与去重统计,便于发现源失效
异常处理(Error Handling)
| 异常 | 处理 |
|---|---|
| 网络请求失败(超时/5xx/DNS) | 对单个源重试 2 次(间隔 3s / 10s);仍失败则记录到日志并跳过该源,不中断整体推送 |
| 政策源改版/栏目 URL 失效(解析结果为空或结构变化) | 标记该源「栏目异常」,在日报巡检统计中列出,提示人工更新 sources[] 配置;自动尝试同域名首页兜底 |
| 详情页反爬/验证码 | 放弃该条,不编造内容;记录该源需人工检查 |
| 钉钉推送限流(errcode 310000/130101 等) | 退避重试:等待 60s 后重试 1 次;仍失败则保存消息到 data/push_{ts}.md 待人工补发,并在日志标注 |
| 加签失败(errcode 310000 且消息为签名错误) | 检查服务器时间偏差与 SECRET 是否一致(钉钉要求时间戳误差 <1h) |
| 内容含敏感词被拒(errcode 310001) | 检查机器人安全设置;若设了关键词白名单需把标题关键词加入 |
| 部分源失败 | 保证已成功的源照常推送,失败项记入巡检统计段落 |
日志:每次执行在 data/logs/policy_push_{YYYYMMDD}.log 追加一行结构化记录:
[2026-08-06 09:00:12] sources_ok=55/57 sources_fail=[hp_kj (栏目异常), sc_fgw (超时)] new=6 dup=12 push=ok errcode=0
配置与维护(Configuration & Maintenance)
- 配置文件:
references/config.example.json为模板,复制为项目内config.json使用。新增政策来源 = 在sources[]追加一条(url/name/region/department/keywords);调整规则 = 改filter/schedule/push - 推送脚本:
scripts/dingtalk-push.js(Webhook + 加签,已验证),支持--title/--text/--file/--at-all/--webhook/--secret - 消息模板:
assets/daily_push_template.md(日报模板)、assets/reminder_template.md(截止提醒模板,配合台账场景) - 去重历史:
data/seen.json(推送过的政策标题+日期,可清空重置) - 维护建议:
- 定期核对
sources[]栏目 URL(政府网站改版频繁,日报巡检统计会暴露失效源) - SECRET 仅存环境变量,配置文件提交版本库时脱敏
- 新增数据源时同步更新日报中的分组标题与巡检统计基数
- 定期核对
资源清单(Resources)
gov-policy-dingtalk-push/
├── SKILL.md # 本文件(流程与规范)
├── scripts/
│ └── dingtalk-push.js # 钉钉推送脚本(Webhook+加签,Node.js)
├── references/
│ └── config.example.json # 配置模板(数据源/关键词/调度/推送)
└── assets/
├── daily_push_template.md # 日报 Markdown 推送模板
└── reminder_template.md # 截止提醒推送模板(可选)
关联生产实例(参考)
- 生产环境已上线自动化任务:
政府政策每日推送+台账同步+截止提醒(57 个监控源、工作日 09:00) - 钉钉多维表格台账:
政策信息台账(baseId/tableId 见部署方项目内config.json)
微信扫一扫