每日技术学习内容生成与推送 Skill,面向后端工程师(Java/Go 等)。每天两次主动推送丰富内容:上午9点和下午14点各推送算法题(2道)+ 架构 + AI大模型 + 前沿资讯(3篇)。内容包含完整代码示例、原理图解、业务场景联想,适合中高级工程师进阶。触发场景:(1) 心跳检查时判断当前时段是否已推送;(2) 用户说"今日学习"、"给我推送内容"、"每日推送"、"学习内容"等;(3) 用户反馈内容不够详细时重新生成。
Resources
6Install
npx skillscat add yuzhaoyang4java/daily-learning-push Install via the SkillsCat registry.
Daily Learning Push
每日技术学习内容推送,每天2次:上午9点 + 下午14点。
⚠️ 内容安全强制约束
生成推送内容时,以下内容严格禁止出现:
| 禁止项 | 说明 |
|---|---|
| 公司名称 | 禁止出现任何雇主或所在公司名称 |
| 内部域名/链接 | 禁止出现任何内部系统链接、内网地址 |
| 公司内部数据 | 禁止透露任何业务数据、架构细节、系统设计 |
| 无中生有 | 所有技术内容必须基于公开知识,禁止编造 |
| 非公开信息 | 技术资讯必须来自公开渠道,附真实来源链接 |
业务场景举例时,使用通用描述:
- ✅ "某电商平台的秒杀场景" / "某内容社区的推荐系统"
- ❌ "小红书秒杀场景" / "内部 xxx 系统"
每次推送内容:
- 🧮 算法题 2道(完整题库1道 + Top100热题1道)
- 🏗️ 架构专题 1篇(原理+图解+代码+业务场景)
- 🤖 AI大模型 1篇(概念+实现+应用)
- 📰 前沿资讯 3篇(技术趋势、行业动态)
工作流
Step 1:检查当前时段是否已推送
运行脚本判断幂等状态(区分早上/下午时段):
# 上午9点检查
python3 scripts/check_push_state.py --period morning
# 下午14点检查
python3 scripts/check_push_state.py --period afternoon- 输出
ALREADY_PUSHED:当前时段已推送,跳过 - 输出
NOT_PUSHED:继续执行
Step 2:获取今日主题
python3 scripts/get_today_topic.py --period morning # 上午主题
python3 scripts/get_today_topic.py --period afternoon # 下午主题输出 JSON,包含时段内容和序号:
morning 示例:
{
"period": "morning",
"day": 4,
"algorithm": { "index": 7, "topic": "三数之和 (LeetCode 15)", "difficulty": "Medium" },
"algorithm_top100": { "index": 3, "topic": "两数之和 (LeetCode 1)", "difficulty": "Easy" },
"architecture": { "index": 5, "topic": "分布式事务 Seata 原理" },
"ai": { "index": 5, "topic": "向量数据库与 RAG 实践" },
"tech_news": ["OpenAI GPT-5 预览", "Google Gemini 2.5 Pro 发布", "国内大模型价格战分析"]
}afternoon 示例:
{
"period": "afternoon",
"day": 4,
"day_offset": 500,
"algorithm": { "index": 507, "topic": "二叉树最大路径和 (LeetCode 124)", "difficulty": "Hard" },
"algorithm_top100": { "index": 23, "topic": "有效括号 (LeetCode 20)", "difficulty": "Easy" },
"architecture": { "index": 18, "topic": "Redis Cluster 设计与实战" },
"ai": { "index": 18, "topic": "LLM 微调策略全解析" },
"tech_news": ["阿里巴巴通义千问 Qwen3 官宣", "GitHub Copilot 免费版上线", "Cursor 0.50 AI IDE 评测"]
}Step 3:生成详细内容
读取 references/content-template.md 获取格式规范,按模板生成各方向内容。
内容质量标准(必须满足):
| 类型 | 要求 |
|---|---|
| 🧮 算法题×2 | 题目描述 + 暴力解→优化解演进 + 完整代码 + 复杂度分析 |
| 🏗️ 架构专题 | 原理详解 + ASCII 架构图 + 代码示例 + 业务场景 |
| 🤖 AI 专题 | 概念 + 流程图 + 实现要点 + 应用案例 |
| 📰 前沿资讯×3 | 标题 + 一句话总结 + 来源链接(可选) |
详细格式规范见 references/content-template.md。
主题库见 references/algorithm-topics.md、references/top100-topics.md、references/architecture-topics.md、references/ai-topics.md。
Step 4:保存 + 写入 Redoc + 推送
- 将内容写入
memory/YYYY-MM-DD-{morning|afternoon}.md(时段文件) - 追加到
memory/YYYY-MM-DD.md(当天汇总) - 写入 Redoc 学习空间子文档:
# 创建当次推送的 Redoc 文档
REDOC_SKILL=/app/skills/hi-redoc-curd
bash "$REDOC_SKILL/scripts/hi-redoc-curd.sh" \
-p memory/YYYY-MM-DD-{morning|afternoon}.md
# 保存返回的 shortcutId 到 push-state.json- 更新学习空间索引文档(可选,用户需配置自己的 Redoc 父文档):
- 在索引表格中追加新一行:日期 · 时段 · 内容摘要 · 新文档链接
- 如果未配置 Redoc,则跳过此步骤,仅保存本地文件
- 保持历史记录完整,按日期倒序排列
# 更新学习空间父文档(追加新行到归档表格)
# 父文档 ID 从配置文件读取
PARENT_DOC_ID=$(cat ~/.openclaw/workspace/memory/.redoc-config.json 2>/dev/null | python3 -c "import json,sys; print(json.load(sys.stdin).get('parentDocId',''))")
if [ -n "$PARENT_DOC_ID" ]; then
bash "$REDOC_SKILL/scripts/hi-redoc-curd.sh" \
-u "$PARENT_DOC_ID" \
-c "(完整更新后的学习空间文档内容)"
fi- 更新推送状态:
python3 scripts/update_push_state.py --period morning # 上午
python3 scripts/update_push_state.py --period afternoon # 下午- 在当前会话展示内容,并回复 Redoc 链接给用户
首次使用:一键初始化
新用户只需运行一次,自动完成所有配置:
python3 ~/.openclaw/workspace/skills/daily-learning-push/scripts/init_user.py脚本会自动:
- ✅ 创建你自己的 Redoc 学习空间父文档
- ✅ 生成
memory/.redoc-config.json配置 - ✅ 初始化
push-state.json(从 Day 1 开始)
每位用户拥有独立的父文档,互不干扰。
Redoc 配置(可选,初始化后自动完成)
如果需要手动配置,编辑 ~/.openclaw/workspace/memory/.redoc-config.json:
{
"parentDocId": "你的学习空间父文档 shortcutId",
"parentDocUrl": "https://<your-redoc-host>/doc/xxxx",
"enabled": true,
"autoUpdateIndex": true
}手动获取父文档 shortcutId
- 在 Redoc 创建学习空间父文档(如:
我的技术学习空间) - 打开文档 → 复制 URL 中的 shortcutId
- 例如:
https://<your-redoc-host>/doc/ABCD1234→ shortcutId =ABCD1234
配置说明
| 配置项 | 说明 | 默认值 |
|---|---|---|
parentDocId |
你的学习空间父文档 ID | 空(需自己填写) |
enabled |
启用 Redoc 归档 | true |
autoUpdateIndex |
自动更新父文档索引 | true |
归档流程
- 启用 Redoc 后,每次推送会创建独立的子文档
- 父文档中的归档索引表格自动更新
push-state.json中记录每次推送的 shortcutId
推送时段配置
推送状态保存在 memory/push-state.json,结构:
{
"lastMorningPush": "2026-03-27",
"lastAfternoonPush": "2026-03-27",
"dailyProgress": { "morning": { ... }, "afternoon": { ... } }
}用户配置
安装后在工作区 MEMORY.md 中添加以下配置(可选,使用默认值):
## 每日学习推送配置
- 技术方向:Java 后端(默认)
- 当前水平:中级(默认)
- 业务背景:电商/社交(默认)
- 推送时间:上午9点 + 下午14点