每日学习卡片自动生成 - 从会话记录中提炼知识,生成结构化学习卡片。
章节内容它到底能干嘛功能概览:每日卡片 + 每周周报 + 每周测试适用人群检查你是否适合使用快速开始3 步上手配置说明config.json 各字段详解常见问题FAQ 和故障排查更新日志版本历史
这是一套完整的 学习闭环系统,不是单一定时任务:
产出频率内容📝 每日学习卡片每天提取当日对话中的主题、决策、踩坑、新概念、金句📊 每周学习周报每周一汇总上周学习概览,Elon 经理点评 + 下周建议📋 每周测试题每周一基于上周学习卡片出 20 道题(70% 本周 + 30% 历史)
三项自动串联:每日卡片 → 周报 → 测试 → 错题本,形成"输入 → 沉淀 → 检验"的闭环。
正在用 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 排序✅ 按内容丰富度排序❌ 按时间线堆叠自动测试✅ 每周出题检验吸收率❌ 无法自动生成
bash
clawhub install daily-learning-cards
装完第一次对话,我会检测到这是新装的,然后问你几个问题:
你回答完,我帮你:① 写配置 ② 配好定时任务。你什么都不用动。以后想改设置,直接告诉我。
执行条件: 检测到 ~/.daily-learning-cards/config.json 不存在,或存在但没有 channels.sources 字段。
执行步骤:
"检测到你刚安装了每日学习卡片技能,需要先做一次配置。我会问你几个问题,你回答完就行。"
依次问(但一次只问 1-2 个问题,别列清单):
config.json → channels.sourcesconfig.json → schedule.hour / schedule.minuteweekly-summary-cron.sh 的 cron 时间weekly-exam.sh 的 cron 时间config.json → channels.deliveryfeishu.target写入 ~/.daily-learning-cards/config.json:
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 渠道。如果想改,直接告诉我就行。"
text
┌─────────────────┐ ┌─────────────┐ ┌─────────────┐
│ 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
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.maxTopicsnumber20最大主题数extract.maxPitfallsnumber6最大踩坑记录数extract.maxConceptsnumber6最大新概念数extract.maxInsightsnumber6最大金句数extract.minInsightLengthnumber10金句/洞见的最小字符长度summary.emojiStylestring"unicode"Emoji 样式:unicode/textschedule.hournumber10定时小时schedule.minutenumber00定时分钟languagestring"zh"语言:zh/en/bilingualchannels.sourcesstring[]["webui","feishu"]收集渠道(从哪些 memory/ 子目录读取,可扩展如 dingtalk/weixin)channels.deliverystring"feishu"推送渠道(投递到哪个消息渠道)feishu.targetstring—飞书推送目标(群/私聊 ID),仅 channels.delivery=feishu 时生效
1. 主题(Topics)
## 新主题:{主题名} 或 ### 时间:{时间}2. 决策(Decisions)
| 选项 | 考虑因素 | 结果 | 表格3. 踩坑记录(Pitfalls)
**踩坑记录:** + - **问题:** {描述}4. 新概念(Concepts)
**新概念:** + - **术语:** {术语}5. 金句/洞见(Insights)
> "{金句}" 或 > {金句}以下系统噪音会被自动过滤:
每日推送到消息渠道的摘要格式:
保存到 memory/learning-cards/YYYY-MM-DD.md 的完整格式:
markdown
# 学习卡片 - 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 · 自我提升部*
症状: 定时任务运行但无卡片生成
检查:
bash
# 1. 检查昨日是否有会话记录
ls -la memory/*/
# 2. 检查日志
tail -20 /tmp/daily-learning-cards.log
# 3. 手动运行查看输出
bash daily-learning-cards.sh
解决:
extract.js 是否正常输出 JSON症状: 踩坑记录/新概念/金句未提取
检查:
bash
# 检查记忆文件格式
ls memory/*/2026-04-18.md 2>/dev/null
cat memory/feishu/2026-04-18.md 2>/dev/null | grep -A3 "踩坑记录"
解决:
- **问题:** {描述}extract-rules.md 中的识别规则症状: 提取的主题数与预期不符
检查:
bash
# 查看配置
cat ~/.daily-learning-cards/config.json | grep maxTopics
# 测试提取
node scripts/extract.js 2026-04-18 | grep -c '"title"'
解决:
~/.daily-learning-cards/config.json 中的 maxTopics症状: 到时间了没有收到学习卡片
检查:
bash
# 查看 cron 任务
openclaw cron list | grep "学习卡片"
# 检查任务状态
openclaw cron info <任务ID>
解决:
--announce 参数是否正确配置编辑 prompts/extract-rules.md:
markdown
# 自定义提取规则
## 新增提取字段
### 6. 关键数据(KeyData)
**识别方式:**
- 表格格式:`| 数据 | 数值 | 意义 |`
**提取内容:**
- name: 数据名称
- value: 数值
- meaning: 意义
编辑 prompts/summary-template.md:
markdown
# 我的自定义摘要模板
## 输出格式
📚 今日学习总结 · {日期}
🎯 核心收获:{主题数} 个主题 💡 关键洞见:{金句数} 条
{主题列表}
💪 继续加油!
text
text
┌─────────────────┐
│ learning-cards │ 每日生成学习卡片
│ (本技能) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ learning-examiner│ 基于卡片出题测试
│ (学习考官) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ learning-manager│ 生成周报汇总
│ (Elon) │
└─────────────────┘
text
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 # 考题生成
│ ├── extract-insights.js # 金句提取
│ ├── extract-pitfalls.js # 踩坑提取
│ ├── extract-concepts.js # 新概念提取
│ └── load-config.js # 配置加载(含初始化向导)
├── config.json # 用户配置
└── README.md # 简要说明
更多更新即将到来
MIT-0 - 自由使用,无需署名。
如有问题或建议,请:
/tmp/daily-learning-cards.log💃 金银 Planet · 自我提升部