Dingtalk Group Saver

v1.0.0

自动在钉钉群中被@时保存群ID和群名,双写至JSON和MEMORY.md实现持久化和跨Session共享。

1· 507·5 current·5 all-time
byjohnson@jiangzhiyu

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for jiangzhiyu/dingtalk-group-saver.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Dingtalk Group Saver" (jiangzhiyu/dingtalk-group-saver) from ClawHub.
Skill page: https://clawhub.ai/jiangzhiyu/dingtalk-group-saver
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install dingtalk-group-saver

ClawHub CLI

Package manager switcher

npx clawhub@latest install dingtalk-group-saver
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
技能名和描述(在被@时保存群 ID 与群名并持久化到 memory)与包含的代码/元数据一致:index.js 读取/写入 ~/.openclaw/workspace 下的 JSON 存储并尝试更新 MEMORY.md。没有请求与目的不符的外部凭据或工具。唯一异常是代码在生成的 MEMORY.md 节中写入一条硬编码的“数据来源”路径(/Users/jiangzhiyu/...),这是开发痕迹但并不改变存储行为。
Instruction Scope
SKILL.md 声称“双写(JSON + MEMORY.md)”,但实现上 index.js 会始终写入 JSON 文件,而对 MEMORY.md 的更新有前提(文件必须存在且包含特定章节/标记),否则会跳过更新。updateMemoryMd 使用章节标题和代码块结束标志来查找替换区域,若 MEMORY.md 格式与预期不符则不会更新。代码没有读取或发送到外部网络,也未访问除 HOME/USERPROFILE 以外的环境变量或其它系统凭据。
Install Mechanism
无安装规范;技能为 instruction + 单个 JavaScript 文件且不从外部 URL 下载或提取任何二进制,因而不会在安装阶段引入第三方代码或远程依赖。
Credentials
未声明需要任何密钥或凭据。运行时仅使用 HOME 或 USERPROFILE 环境变量来定位用户的 ~/.openclaw/workspace 路径,这是与其目的相符的最小权限访问。
Persistence & Privilege
技能会在用户的 OpenClaw workspace 下创建/写入 memory 文件,这与其“跨 Session 共享长期记忆”的目的匹配。flags 未设置 always:true,也不会修改其他技能或系统范围配置。
Assessment
要点与建议: - 功能与说明基本一致:安装后该技能会在你的主目录下的 ~/.openclaw/workspace/memory/ 创建并写入 dingtalk-groups.json(持久化群信息),并尝试更新同目录下的 MEMORY.md(仅当该文件存在并包含预期章节时才会更新)。 - 注意事项:代码在生成的 MEMORY.md 中插入了一条硬编码的“数据来源”路径(/Users/jiangzhiyu/...),这是开发者残留信息,虽非凭据泄露但显得不规范。若你对此敏感,可在启用前打开 index.js 检查或移除该字符串。 - 兼容性:若你的 MEMORY.md 不包含 SKILL.md 预期的章节或标记,MD 同步会被跳过 —— 这会导致实际行为与文档描述(双写)不完全一致。建议先备份当前 MEMORY.md 和 memory 目录,或在安全环境中测试。 - 隐私与安全:技能不含网络传输代码或第三方依赖,不会把群 ID/群名上传到外部服务;风险主要来自本地文件写入(持久化)。确认是否愿意让技能将群信息写入 ~/.openclaw/workspace 下的文件。

Like a lobster shell, security has layers — review code before you run it.

latestvk97fcjvq9zv1m4aza4qnzdwf75824fst
507downloads
1stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

DingTalk Group Saver

版本: 2.0.0
描述: 当在钉钉群里被@时,自动保存群 ID 和群名字到 memory 中(双写持久化)


🎯 功能

当收到钉钉群消息且被@时:

  1. 自动提取群 ID (conversationId)
  2. 自动提取群名字
  3. 双写存储
    • JSON 文件:memory/dingtalk-groups.json(结构化数据)
    • Markdown 文件:MEMORY.md(长期记忆,所有 Session 可读)

📁 文件结构

~/.openclaw/workspace/skills/dingtalk-group-saver/
├── SKILL.md              # 本文件
└── index.js              # 实现代码

💾 数据存储

1. JSON 文件(结构化)

位置~/.openclaw/workspace/memory/dingtalk-groups.json

{
  "groups": [
    {
      "conversationId": "cid/xxx==",
      "groupName": "测试群",
      "firstSeenAt": "2026-02-26T14:00:00+08:00",
      "lastActiveAt": "2026-02-26T14:00:00+08:00",
      "mentionCount": 1
    }
  ]
}

2. MEMORY.md(长期记忆)

位置~/.openclaw/workspace/MEMORY.md

自动更新 ### 钉钉群列表(推送渠道) 章节,包含:

  • 群名称
  • 群 ID
  • 用途描述

优势

  • ✅ 所有 Session 启动时自动加载
  • ✅ 人类可读,便于手动编辑
  • ✅ 与系统配置、主人画像等长期记忆在一起

🔧 使用方式

无需手动调用! 自动触发:

  1. 在钉钉群里@小牛马
  2. 机器人回复消息
  3. 自动保存群信息到:
    • memory/dingtalk-groups.json
    • MEMORY.md

📋 查看已保存的群

# 查看 JSON 数据
cat ~/.openclaw/workspace/memory/dingtalk-groups.json

# 查看 MEMORY.md 中的群列表
grep -A 10 "钉钉群列表" ~/.openclaw/workspace/MEMORY.md

🎯 使用场景

场景说明
新群@机器人自动记录群信息
发送群消息从 MEMORY.md 查找群 ID
群管理维护已知群列表
Session 切换新 Session 自动继承群信息

⚠️ 注意事项

  • 只在被@时触发(避免记录所有群)
  • 群名字可能为空(API 限制)
  • 首次保存后,后续@会更新 lastActiveAtmentionCount
  • MEMORY.md 中的表格会自动同步更新

🔄 更新日志

  • v2.0.0 - 新增 MEMORY.md 双写,保证所有 Session 可读
  • v1.0.0 - 初始版本,仅保存到 JSON 文件

由 OpenClaw 技能系统自动加载 🐂🐎

Comments

Loading comments...