Back to skills
extension
Category: Data & AnalyticsAPI key required

政府政策检索与钉钉群推送

定期检索政府网站/政策平台最新政策,解析提取标题、发文机关、摘要、原文链接等关键信息,并通过钉钉群机器人 Webhook(加签)以 Markdown 消息自动推送。含数据源配置、新增识别去重、异常重试与日志、消息格式规范。

personAuthor: user_c139f4e0hubcommunity

政府政策检索与钉钉群推送(Gov Policy → DingTalk Push)

功能定义(Overview)

本技能搭建一条「定期检索政府政策 → 解析提取关键信息 → 自动推送到钉钉群」的完整管线:

  • 检索:按配置的数据源清单(政府官网 / 政策发布平台 / 通知公告栏目),周期性访问抓取最新政策
  • 解析:从页面中提取政策标题、发布日期、发文机关、政策摘要、原文链接、申报截止日期等字段
  • 去重:基于「标题 + 发文机关 + 发布日期」识别新增政策,避免重复推送
  • 推送:通过钉钉自定义机器人 Webhook(支持加签)以 Markdown 消息发送到指定群

适用于:企业补贴/资质申报信息监控、行业政策日报、政府公开信息订阅等场景。本技能沉淀自政府政策巡检生产实践(57 个监控源、每日巡检、台账同步 + 截止提醒,全链路已验证)。

何时使用(When to Use)

  • 用户要求把某个政策来源/关键词的更新自动推送到钉钉群
  • 需要配置"每日/每小时巡检政府网站"的定时任务
  • 需要定义钉钉推送消息的标准格式(标题加粗、来源部门、摘要、链接)
  • 已有政策数据(Excel/JSON/网页)需要整理后推送到钉钉
  • 需要为新的政策来源扩展现有推送管线

输入参数(Input Parameters)

所有参数通过配置文件管理(见 references/config.example.json),核心参数:

| 参数 | 说明 | 示例 | |---|---|---| | sources[] | 政策数据源清单:url(栏目页)、nameregion(地区/级别)、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 — 访问并抓取目标政策源

  1. 读取配置文件,逐个访问 sources[] 中的栏目 URL(优先 gov.cn 官方域名)
  2. 用 WebFetch 抓取栏目列表页;若列表页需要翻页或为 JS 渲染,抓取前 1–2 页即可
  3. 对命中关键词的条目,用 WebFetch 抓取详情页核实正文与发布日期
  4. 记录巡检结果:成功访问数 / 失败源(打不开、栏目异常)

Step 2 — 识别新增政策(去重)

  • 去重键政策标题 + 发文机关 + 发布日期(无日期时用标题+机关)
  • 与上次推送记录比对(本地 data/seen.json 或推送历史文件);仅保留 lookbackDays 窗口内、且未推送过的条目
  • 同一政策年度批次(如"2026年度申报")视为不同条目
  • 只推真实可核查信息:URL 必须真实,严禁编造

Step 3 — 提取并格式化政策信息

按输出规范(见下)将每条政策整理为结构化条目,字段:标题 / 发布机关 / 发布日期 / 摘要(1-2 句)/ 原文链接,可选字段:补贴类型、申报条件、金额、截止日期。

Step 4 — 通过 Webhook 推送 Markdown 消息

  1. 将整理好的条目渲染为 Markdown 文本,保存到本地 data/push_{YYYYMMDD}.md
  2. 执行推送脚本(见 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
    
  3. 校验返回 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