Install
openclaw skills install daily-learning-cards自动从多渠道对话记录提炼主题、决策、踩坑、新概念和金句,生成每日结构化学习卡片并自动推送。
openclaw skills install daily-learning-cards每日学习卡片自动生成 - 从会话记录中提炼知识,生成结构化学习卡片。
| 章节 | 内容 |
|---|---|
| 它到底能干嘛 | 功能概览:每日卡片 + 每周周报 + 每周测试 |
| 适用人群 | 检查你是否适合使用 |
| 快速开始 | 3 步上手 |
| 配置说明 | config.json 各字段详解 |
| 常见问题 | FAQ 和故障排查 |
| 更新日志 | 版本历史 |
这是一套完整的学习闭环系统,不是单一定时任务:
| 产出 | 频率 | 内容 |
|---|---|---|
| 📝 每日学习卡片 | 每天 | 提取当日对话中的主题、决策、踩坑、新概念、金句 |
| 📊 每周学习周报 | 每周一 | 汇总上周学习概览,Elon 经理点评 + 下周建议 |
| 📋 每周测试题 | 每周一 | AI 基于上周学习卡片出 20 道独立设计的题,内容不足时自动补充 AI 扩展题 |
三项自动串联:每日卡片 → 周报 → 测试 → 错题本,形成"输入 → 沉淀 → 检验"的闭环。
正在用 OpenClaw 的人。 需要满足:
⚠️ 对话渠道自动识别(5 种): session 文件会自动检测消息来源渠道(Feishu / WebUI / DingTalk / WeCom / QQBot),无需手动配置。如需开启或关闭特定渠道的学习卡片生成,在
config.json的channels.sources中添加或移除渠道名即可。全部渠道代码:feishu、webui、dingtalk、weixin、qqbot。
不是 OpenClaw 用户?这套 Skill 你用不了——定时任务和消息投递依赖 OpenClaw 基础设施。
| 对比项 | daily-learning-cards | 手动记录 |
|---|---|---|
| 自动提取 | ✅ 从会话记录自动抓取 | ❌ 靠记忆回顾 |
| 结构化输出 | ✅ 主题/决策/踩坑/概念/金句 | ❌ 碎片化笔记 |
| 多渠道支持 | ✅ 飞书/WebUI/钉钉/微信/QQ 自动合并 | ❌ 需要手动整理 |
| 每日自动推送 | ✅ 定时投递到消息渠道 | ❌ 需要自己提醒 |
| AI 排序 | ✅ 按内容丰富度排序 | ❌ 按时间线堆叠 |
| 自动测试 | ✅ 每周出题检验吸收率 | ❌ 无法自动生成 |
clawhub install daily-learning-cards
装完第一次对话,我会检测到这是新装的,然后问你几个问题:
你回答完,我帮你:① 写配置 ② 配好定时任务。你什么都不用动。以后想改设置,直接告诉我。
执行条件: 检测到 ~/.daily-learning-cards/config.json 不存在,或存在但没有 channels.sources 字段。
执行步骤:
"检测到你刚安装了每日学习卡片技能,需要先做一次配置。我会问你几个问题,你回答完就行。"
依次问(但一次只问 1-2 个问题,别列清单):
对话渠道: "你现在用哪些对话渠道?飞书、WebUI、钉钉、微信、QQ?多选哦"
config.json → channels.sources生成时间: "每天几点生成学习卡片?比如 10:00?"
config.json → schedule.hour / schedule.minute周报/测试: "周报和测试大概什么时间生成?默认周一 11:00 和 11:30"
weekly-summary-cron.sh 的 cron 时间weekly-exam.sh 的 cron 时间推送渠道: "学习卡片发到你哪个渠道?飞书?还是微信/钉钉?"
config.json → channels.deliveryfeishu.target写入 ~/.daily-learning-cards/config.json:
{
"channels": { "sources": ["feishu", "webui"], "delivery": "feishu" },
"schedule": { "hour": 10, "minute": 0, "timezone": "Asia/Shanghai" },
"feishu": { "target": "用户给的 ID" }
}
使用 openclaw cron add 创建三个定时任务:
注意: 路径用 \$SKILL_DIR(OpenClaw 自动注入的环境变量,指向 skill 安装目录),而不是硬编码路径。
"配置完成!以后每天 10:00 学习卡片会自动发到你的 XX 渠道。如果想改,直接告诉我就行。"
┌─────────────────┐ ┌─────────────┐ ┌─────────────┐
│ memory/feishu/ │ │ extract.js │ │ generate- │
│ memory/webui/ │ ──▶ │ (数据提取) │ ──▶ │ card.js │
│ memory/dingtalk/│ │ 5种渠道 │ │ (AI整合) │
│ memory/weixin/ │ │ 自动识别 │ │ │
│ memory/qqbot/ │ │ │ │ │
│ ...可扩展... │ │ │ │ │
└─────────────────┘ └─────────────┘ └──────┬──────┘
│
▼
┌─────────────────┐ ┌─────────────┐ ┌─────────────┐
│ OpenClaw cron │ │ stdout │ │ learning- │
│ --announce │ ◀── │ (摘要输出) │ ◀── │ cards/ │
│ │ │ │ │ YYYY-MM-DD.md
└─────────────────┘ └─────────────┘ └─────────────┘
设计原则:
位置:~/.daily-learning-cards/config.json
{
"extract": {
"maxTopics": 20,
"maxPitfalls": 6,
"maxConcepts": 6,
"maxInsights": 6,
"minInsightLength": 10
},
"summary": {
"includeTopics": true,
"includeDecisions": true,
"includePitfalls": true,
"includeConcepts": true,
"includeInsights": true,
"emojiStyle": "unicode"
},
"schedule": {
"hour": 10,
"minute": 0,
"timezone": "Asia/Shanghai"
},
"channels": {
"sources": ["webui", "feishu"],
"delivery": "feishu"
},
"feishu": {
"target": "oc_xxxxx"
},
"language": "zh"
}
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
extract.maxTopics | number | 20 | 最大主题数 |
extract.maxPitfalls | number | 6 | 最大踩坑记录数 |
extract.maxConcepts | number | 6 | 最大新概念数 |
extract.maxInsights | number | 6 | 最大金句数 |
extract.minInsightLength | number | 10 | 金句/洞见的最小字符长度 |
summary.emojiStyle | string | "unicode" | Emoji 样式:unicode/text |
schedule.hour | number | 10 | 定时小时 |
schedule.minute | number | 00 | 定时分钟 |
language | string | "zh" | 语言:zh/en/bilingual |
channels.sources | string[] | ["webui","feishu"] | 收集渠道(从哪些 memory/ 子目录读取,可扩展如 dingtalk/weixin) |
channels.delivery | string | "feishu" | 推送渠道(投递到哪个消息渠道) |
feishu.target | string | — | 飞书推送目标(群/私聊 ID),仅 channels.delivery=feishu 时生效 |
1. 主题(Topics)
## 新主题:{主题名} 或 ### 时间:{时间}2. 决策(Decisions)
| 选项 | 考虑因素 | 结果 | 表格3. 踩坑记录(Pitfalls)
**踩坑记录:** + - **问题:** {描述}4. 新概念(Concepts)
**新概念:** + - **术语:** {术语}5. 金句/洞见(Insights)
> "{金句}" 或 > {金句}以下系统噪音会被自动过滤:
每日推送到消息渠道的摘要格式:
保存到 memory/learning-cards/YYYY-MM-DD.md 的完整格式:
# 学习卡片 - 2026-04-18
## 基本信息
- **日期:** 2026-04-18
- **渠道:** 飞书 + WebUI(多渠道合并)
- **主题数:** 12 个
- **决策数:** 12 个
- **踩坑数:** 7 个
- **新概念:** 5 个
---
## 核心主题
### 1. 落款格式问题
**来源:** 飞书
### 2. 今日记忆文件检查
**来源:** 飞书
...
---
## 重要决策
| 选项 | 考虑因素 | 结果 | 来源 |
|------|---------|------|------|
| 统一超时时间 | 提高系统稳定性 | 采纳 | 飞书 |
...
---
## 踩坑记录
### 1. follow-builders脚本使用openclaw message send发送命令无法执行
**来源:** 飞书
- **解决方案:** 修改脚本直接调用技能的JS文件
- **教训:** 命令需要在正确的环境中执行
...
---
## 新概念
### 1. 定时任务超时控制
**来源:** 飞书
- **定义:** 为定时任务设置最大执行时间限制
- **应用场景:** 防止任务无限期运行
...
---
## 金句 / 洞见
1. > "超时控制是系统稳定性的关键要素"
> —— 飞书
...
---
## 数据来源
- **飞书:** memory/feishu/2026-04-18.md
- **WebUI:** memory/webui/2026-04-18.md
- 更多渠道同理(如钉钉 → `memory/dingtalk/`)
---
*💃 金银 Planet · 自我提升部*
症状: 定时任务运行但无卡片生成
检查:
# 1. 检查昨日是否有会话记录
ls -la memory/*/
# 2. 检查日志
tail -20 /tmp/daily-learning-cards.log
# 3. 手动运行查看输出
bash daily-learning-cards.sh
解决:
extract.js 是否正常输出 JSON症状: 踩坑记录/新概念/金句未提取
检查:
# 检查记忆文件格式
ls memory/*/2026-04-18.md 2>/dev/null
cat memory/feishu/2026-04-18.md 2>/dev/null | grep -A3 "踩坑记录"
解决:
- **问题:** {描述}extract-rules.md 中的识别规则症状: 提取的主题数与预期不符
检查:
# 查看配置
cat ~/.daily-learning-cards/config.json | grep maxTopics
# 测试提取
node scripts/extract.js 2026-04-18 | grep -c '"title"'
解决:
~/.daily-learning-cards/config.json 中的 maxTopics症状: 到时间了没有收到学习卡片
检查:
# 查看 cron 任务
openclaw cron list | grep "学习卡片"
# 检查任务状态
openclaw cron info <任务ID>
解决:
--announce 参数是否正确配置编辑 prompts/extract-rules.md:
# 自定义提取规则
## 新增提取字段
### 6. 关键数据(KeyData)
**识别方式:**
- 表格格式:`| 数据 | 数值 | 意义 |`
**提取内容:**
- name: 数据名称
- value: 数值
- meaning: 意义
编辑 prompts/summary-template.md:
# 我的自定义摘要模板
## 输出格式
📚 今日学习总结 · {日期}
🎯 核心收获:{主题数} 个主题 💡 关键洞见:{金句数} 条
{主题列表}
💪 继续加油!
┌─────────────────┐
│ learning-cards │ 每日生成学习卡片
│ (本技能) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ learning-examiner│ 基于卡片出题测试
│ (学习考官) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ learning-manager│ 生成周报汇总
│ (Elon) │
└─────────────────┘
daily-learning-cards/
├── _meta.json # Skill 元数据
├── SKILL.md # 本文件
├── daily-learning-cards.sh # 主脚本(每日卡片入口)
├── weekly-summary-cron.sh # 周报脚本(每周一 11:00)
├── weekly-exam.sh # 测试脚本(每周一 11:30)
├── refine-memory.sh # 记忆文件精炼脚本
├── prompts/ # Prompts 目录
│ ├── summary-template.md # 摘要模板
│ └── extract-rules.md # 提取规则
├── scripts/ # 脚本目录
│ ├── extract.js # 数据提取
│ ├── generate-card.js # 学习卡片生成
│ ├── generate-exam.js # 考题生成 V1(模板,保留作 fallback)
│ ├── generate-exam-v2.js # 考题生成 V2(AI 智能出题)🆕
│ ├── generate-summary-v2.js # 周报生成 V2(AI 智能生成)🆕
│ ├── extract-exam-data.js # 考题数据提取器 🆕
│ ├── extract-insights.js # 金句提取
│ ├── extract-pitfalls.js # 踩坑提取
│ ├── extract-concepts.js # 新概念提取
│ └── load-config.js # 配置加载(含初始化向导)
├── config.json # 用户配置
└── README.md # 简要说明
extract-exam-data.js 从学习卡片 + 原始记忆文件双源提取结构化 JSONextract-exam-data.js、generate-exam-v2.js、generate-summary-v2.jsgenerate-exam.js 作为 fallback更多更新即将到来
MIT-0 - 自由使用,无需署名。
如有问题或建议,请:
/tmp/daily-learning-cards.log💃 金银 Planet · 自我提升部