@clawhub-bxwzan-b28f309ea1
通过视觉化图片帮助记忆英语单词的智能学习工具。支持创建学习计划、智能配图、词根词缀分析、音标标注,配合艾宾浩斯遗忘曲线实现高效记忆。适用于英语词汇学习、备考、日常积累等场景。
---
name: english-visual-vocabulary
description: 通过视觉化图片帮助记忆英语单词的智能学习工具。支持创建学习计划、智能配图、词根词缀分析、音标标注,配合艾宾浩斯遗忘曲线实现高效记忆。适用于英语词汇学习、备考、日常积累等场景。
metadata:
version: 1.0.0
author: Coze Agent
tags: [英语学习, 词汇记忆, 视觉学习, 图片记忆, 艾宾浩斯]
triggers: [背单词, 学英语, 英语学习, 记忆单词, 单词卡片, visual vocabulary, vocabulary]
---
# 看图学英语
## 🎯 Quick Reference
| 场景 | 操作示例 | 输出 |
|------|---------|------|
| 创建学习计划 | "帮我制定一个30天的英语词汇学习计划,每天20个单词" | 学习计划表 + 每日任务清单 |
| 单词配图记忆 | "帮我记忆单词 'abandon',生成配图卡片" | 单词卡片(图片+音标+释义+词根分析) |
| 批量单词学习 | "学习这10个单词:apple, banana, orange..." | 批量单词卡片集 |
| 词根词缀分析 | "分析单词 'unbelievable' 的词根词缀" | 词根拆解图 + 记忆技巧 |
| 复习提醒 | "按照艾宾浩斯曲线安排复习" | 复习时间表 + 待复习单词列表 |
| 场景词汇 | "学习关于'办公室'场景的10个单词" | 场景化单词卡片 + 情境例句 |
---
## 📖 背景
### 痛点
- **记忆效率低**:传统背单词依赖机械重复,缺乏情境关联,记忆留存率仅10-20%
- **抽象难理解**:抽象词汇(如"perseverance")难以通过文字定义形成深刻印象
- **学习动力不足**:枯燥的单词表和纯文本学习容易让人失去兴趣
- **遗忘曲线陡峭**:没有科学复习机制,学过的单词很快忘记
- **词根词缀知识缺失**:不了解构词规律,无法举一反三
### 后果
- 词汇量增长缓慢,长期停滞在基础水平
- 考试备考周期长,效率低下
- 实际应用时想不起单词,沟通受阻
- 学习自信心受挫,放弃英语学习
### 价值
本Skill通过**视觉记忆法**解决以上问题:
- 🎨 **双重编码理论**:图片+文字双通道记忆,留存率提升至65%
- 🧠 **情境化理解**:图片提供具体情境,加深语义理解
- 📊 **科学复习**:艾宾浩斯曲线自动安排复习节点
- 🔍 **词根拆解**:揭示单词构词规律,举一反三
- 🎯 **个性化计划**:根据目标定制学习路径
---
## 🚀 使用方法
### 方法一:创建学习计划(推荐新手)
**触发词**:`背单词`、`制定英语学习计划`、`帮我学英语`
**示例对话**:
```
用户:我想在30天内背完1000个高频词汇
AI:好的!我来为你制定30天学习计划:
- 每天35个新单词
- 配合图片记忆
- 自动生成词根分析
- 按艾宾浩斯曲线安排复习
[生成学习计划表]
```
**工作流程**:
1. 评估用户水平和目标
2. 创建个性化学习计划(每日/每周)
3. 从词库中选择目标词汇
4. 为每个单词生成视觉卡片
5. 安排艾宾浩斯复习节点
---
### 方法二:单词卡片生成
**触发词**:`记忆单词`、`单词卡片`、`生成单词配图`
#### 单个单词学习
```
用户:帮我记忆单词 'serendipity'
```
**AI执行步骤**:
1. **获取单词信息**
- 音标:/ˌserənˈdɪpəti/
- 词性:n. 名词
- 中文释义:意外发现珍宝的运气;机缘巧合
2. **生成配图**
- 使用 `search_images` 搜索 "serendipity concept" 或 "意外发现"
- 或使用 `image_generate` 生成艺术风格插图
3. **词根词缀分析**(标准格式)
```
单词: serendipity
音标: /ˌser.ənˈdɪp.ə.ti/
音节拆分: ser-en-dip-i-ty
词根分析:
serendip - 锡兰旧称(斯里兰卡)
-i- - 连接字母
-ty - 名词后缀(状态/性质)
词源: 源自《锡兰三王子》童话故事
记忆: 塞伦迪普岛上的意外发现 → 机缘巧合
```
4. **输出卡片**
```
┌─────────────────────────┐
│ [配图:意外发现宝藏] │
├─────────────────────────┤
│ serendipity │
│ /ˌserənˈdɪpəti/ │
│ n. 意外发现珍宝的运气 │
├─────────────────────────┤
│ 词根:serendip + -ity │
│ 例:Finding this book │
│ was pure serendipity│
└─────────────────────────┘
```
#### 批量单词学习
```
用户:学习这些单词:abandon, abstract, abundant, accelerate
```
**AI执行步骤**:
1. 批量获取单词信息
2. 并行生成/搜索配图(提高效率)
3. 逐个输出卡片
4. 生成总结文档供下载
---
### 方法三:词根词缀专项学习
**触发词**:`词根学习`、`前缀后缀`、`构词法`
```
用户:教我前缀 "un-" 的用法
```
**输出**:
```
前缀:un- = not (不,否定)
常见单词配图卡片:
1. unhappy (不开心的) [配图:悲伤表情]
2. unbelievable (难以置信的) [配图:震惊表情]
3. uncomfortable (不舒服的) [配图:坐立难安]
4. unfair (不公平的) [配图:天平倾斜]
记忆技巧:un- 放在形容词前,表示"相反"或"否定"
```
---
### 方法四:艾宾浩斯复习
**触发词**:`复习单词`、`艾宾浩斯`、`安排复习`
**复习时间表**:
```
学习后间隔:20分钟 → 1小时 → 9小时 → 1天 → 2天 → 6天 → 31天
示例:
2024-01-01 学习单词 abandon
├─ 第1次复习:2024-01-01 20分钟后
├─ 第2次复习:2024-01-01 1小时后
├─ 第3次复习:2024-01-02 早上
├─ 第4次复习:2024-01-03
├─ 第5次复习:2024-01-05
├─ 第6次复习:2024-01-08
└─ 第7次复习:2024-02-01
```
**AI操作**:
1. 读取学习记录
2. 筛选今日待复习单词
3. 重新展示单词卡片(隐藏释义)
4. 用户自测后显示答案
5. 标记掌握程度(熟悉/模糊/忘记)
---
### 方法五:场景化词汇学习
**触发词**:`场景单词`、`主题词汇`、`情境英语`
```
用户:学习关于"咖啡店"的英语单词
```
**输出**:
```
☕ 咖啡店场景词汇
1. barista [配图:咖啡师]
/bəˈriːstə/ n. 咖啡师
2. espresso [配图:浓缩咖啡]
/eˈspresoʊ/ n. 浓缩咖啡
词根:espress- (挤压) + -o
3. latte [配图:拿铁]
/ˈlɑːteɪ/ n. 拿铁咖啡
来源:意大利语 "牛奶"
... (更多单词)
情境对话示例:
"I'd like a grande latte with oat milk, please."
```
---
## 🔧 代码示例
### 调用脚本生成学习卡片
```bash
# 生成单个单词卡片
python scripts/generate_card.py --word "serendipity" --style "artistic"
# 批量生成
python scripts/generate_cards_batch.py --words "apple,banana,orange" --output "./cards/"
# 生成学习计划
python scripts/create_plan.py --days 30 --words-per-day 20 --level "intermediate"
```
### 自定义图片风格
```bash
# 卡通风格
python scripts/generate_card.py --word "happy" --style "cartoon"
# 写实风格
python scripts/generate_card.py --word "mountain" --style "realistic"
# 艺术风格
python scripts/generate_card.py --word "freedom" --style "artistic"
```
---
## 🎨 常见变体
### 1. 备考模式(四六级/雅思/托福)
- 自动加载考试词库
- 按考试频率排序
- 生成模拟测试题
### 2. 儿童英语启蒙
- 使用卡通风格图片
- 简化释义
- 添加趣味例句
### 3. 专业词汇学习
- 医学、法律、计算机等专业词库
- 专业术语解释
- 行业场景配图
### 4. 旅行英语
- 按国家/地区分类
- 实用短语
- 文化背景介绍
---
## ⚠️ 注意事项
### 图片版权
- ✅ 优先使用 `image_generate` 生成原创图片
- ✅ 使用 `search_images` 时,选择可商用的图片来源
- ✅ 在卡片中标注图片来源(如需)
- ❌ 避免使用明显受版权保护的图片
### 词根词缀准确性
- 词源信息参考权威词典(牛津、剑桥、韦氏)
- 多个来源交叉验证
- 标注词源语言(拉丁语、希腊语等)
- 提供历史演变背景
### 学习效果优化
- 每次学习不超过20个新单词(避免认知负荷过载)
- 配合听写、造句等多维度练习
- 定期测试巩固
- 根据掌握情况调整复习频率
### 个性化调整
- 允许用户指定图片风格偏好
- 支持自定义词库导入
- 可调整学习计划(加速/减速)
- 支持导出学习记录
---
## 📚 相关资源
### 内部资源
- `references/common_roots.md` - 常见词根词缀手册
- `references/ebbinghaus_schedule.md` - 艾宾浩斯复习时间表
- `references/vocabulary_lists/` - 各级别词库
### 外部资源
- [Oxford Learner's Dictionaries](https://www.oxfordlearnersdictionaries.com/)
- [Etymonline - 词源字典](https://www.etymonline.com/)
- [Anki - 间隔重复软件](https://apps.ankiweb.net/)
### 配合使用的Skill
- `image_generate` - 生成单词配图
- `search_images` - 搜索网络图片
- `echart` - 生成学习进度图表
---
## 🔄 工作流程图
```
用户输入单词
↓
获取单词信息(音标/释义/例句)
↓
词根词缀分析
↓
生成/搜索配图
↓
组装单词卡片
↓
记录到学习日志
↓
安排艾宾浩斯复习
↓
定期提醒复习
```
---
## 💡 最佳实践
1. **每日固定时间学习**:建议早晨或睡前,形成习惯
2. **主动回忆**:看图片先猜单词,再显示答案
3. **造句练习**:用新学的单词造3个句子
4. **关联记忆**:将新单词与已知单词建立联系
5. **多感官学习**:配合发音音频,调动听觉
---
## 📞 技术支持
遇到问题?请提供以下信息:
- 学习的单词/词库
- 错误提示截图
- 预期效果 vs 实际效果
---
**开始使用**:只需说 "帮我背单词" 或 "制定英语学习计划",AI将自动引导你开始视觉化词汇学习之旅!
FILE:README.md
# English Visual Vocabulary Skill
通过视觉化图片帮助记忆英语单词的智能学习工具。
## 📁 目录结构
```
english-visual-vocabulary/
├── SKILL.md # Skill主文档
├── README.md # 本文件
├── scripts/ # 辅助脚本
│ ├── generate_card.py # 单个单词卡片生成
│ ├── generate_cards_batch.py # 批量卡片生成
│ ├── create_plan.py # 学习计划创建
│ └── ebbinghaus_reminder.py # 艾宾浩斯复习提醒
└── references/ # 参考资源
├── common_roots.md # 词根词缀手册
├── ebbinghaus_schedule.md # 艾宾浩斯时间表
└── vocabulary_lists/ # 词库
├── beginner.json # 初级词汇
├── intermediate.json # 中级词汇
└── advanced.json # 高级词汇
```
## 🚀 快速开始
### 方式一:对话式学习(推荐)
直接在对话中使用触发词:
- "帮我背单词"
- "制定一个30天英语学习计划"
- "学习单词 'serendipity'"
### 方式二:脚本工具
```bash
# 生成单个单词卡片
python scripts/generate_card.py --word "happy" --style "artistic"
# 批量生成
python scripts/generate_cards_batch.py --words "apple,banana,orange"
# 创建学习计划
python scripts/create_plan.py --days 30 --words-per-day 20
# 查看今日复习
python scripts/ebbinghaus_reminder.py --action today
```
## 🎨 图片风格
支持多种图片风格:
- `cartoon` - 卡通风格
- `realistic` - 写实风格
- `artistic` - 艺术风格
- `minimalist` - 极简风格
## 📊 核心功能
### 1. 视觉记忆
- 为每个单词生成配图
- 支持多种风格
- 通过图片建立情境关联
### 2. 词根词缀分析
- 自动拆解单词结构
- 提供词源信息
- 帮助举一反三
### 3. 艾宾浩斯复习
- 科学复习时间表
- 自动提醒
- 记忆效果追踪
### 4. 学习计划
- 个性化定制
- 每日任务管理
- 进度追踪
## 📚 词库说明
### Beginner(初级)
- 基础词汇
- 日常生活用语
- 适合英语初学者
### Intermediate(中级)
- 常见学术词汇
- 工作场景用语
- 适合有一定基础的学习者
### Advanced(高级)
- 高级学术词汇
- 文学用词
- 适合高水平英语学习者
## 💡 使用建议
1. **每日学习量**:建议20-30个新单词
2. **固定时间**:选择早晨或睡前学习
3. **主动回忆**:先看图片猜单词,再看答案
4. **及时复习**:严格按照艾宾浩斯时间表
5. **造句练习**:用新单词造3个句子
## 🔗 相关工具
- `image_generate` - 生成单词配图
- `search_images` - 搜索网络图片
- `echart` - 生成学习进度图表
## 📝 更新日志
### v1.0.0 (2024-01-01)
- 初始版本发布
- 支持基础单词卡片生成
- 实现艾宾浩斯复习系统
- 提供三级词库
## 🤝 贡献
欢迎贡献:
- 添加更多词库
- 改进词根分析算法
- 优化图片生成逻辑
## 📄 许可证
MIT License
---
**开始你的视觉化词汇学习之旅!** 🎯
FILE:cards/happy_card.md
# 📚 HAPPY
## 🎨 Visual Memory
[图片区域 - 使用 search_images 或 image_generate 工具生成配图]
风格:artistic
## 📖 Word Information
**音标**: ``
**词性**:
**中文释义**:
## 🔍 Root Analysis
_该单词无明显词根词缀分解_
## 💬 Example Sentence
---
*创建时间: 2026-04-07T11:59:39.684466*
FILE:cards/happy_data.json
{
"word": "happy",
"phonetic": "",
"part_of_speech": "",
"chinese_meaning": "",
"example_sentence": "",
"root_analysis": [],
"image_style": "artistic",
"created_at": "2026-04-07T11:59:39.684466"
}
FILE:references/common_roots.md
# 📚 常见英语词根词缀手册
## 🎯 前缀 Prefixes
### 否定前缀
| 前缀 | 含义 | 示例 |
|------|------|------|
| **un-** | not, opposite | unhappy (不开心的), unbelievable (难以置信的) |
| **dis-** | not, away | dislike (不喜欢), disappear (消失) |
| **in-/im-/ir-/il-** | not | incorrect (不正确), impossible (不可能), irregular (不规律), illegal (非法) |
| **non-** | not | nonstop (不停), nonsense (废话) |
| **anti-** | against | antifreeze (防冻), antisocial (反社会) |
| **counter-** | against | counterattack (反击), counterclockwise (逆时针) |
### 方位前缀
| 前缀 | 含义 | 示例 |
|------|------|------|
| **pre-** | before | predict (预测), prehistoric (史前) |
| **post-** | after | postwar (战后), postpone (推迟) |
| **inter-** | between | international (国际), interact (互动) |
| **intra-** | within | intranet (内网), intravenous (静脉内) |
| **sub-** | under, below | subway (地铁), submarine (潜水艇) |
| **super-** | above, beyond | supermarket (超市), supernatural (超自然) |
| **trans-** | across | transport (运输), translate (翻译) |
### 数量前缀
| 前缀 | 含义 | 示例 |
|------|------|------|
| **uni-** | one | uniform (统一), unicorn (独角兽) |
| **bi-** | two | bicycle (自行车), bilingual (双语) |
| **tri-** | three | triangle (三角形), tricycle (三轮车) |
| **multi-** | many | multinational (跨国), multitask (多任务) |
| **poly-** | many | polygon (多边形), polysyllable (多音节) |
### 其他常用前缀
| 前缀 | 含义 | 示例 |
|------|------|------|
| **re-** | again | rewrite (重写), rebuild (重建) |
| **ex-** | former, out | ex-president (前总统), export (出口) |
| **co-** | together | cooperate (合作), coexist (共存) |
| **auto-** | self | automatic (自动), automobile (汽车) |
| **tele-** | far | telephone (电话), television (电视) |
---
## 🔧 后缀 Suffixes
### 名词后缀
| 后缀 | 含义 | 示例 |
|------|------|------|
| **-tion/-sion** | action, state | action (行动), decision (决定) |
| **-ment** | state, result | development (发展), movement (运动) |
| **-ness** | state, quality | happiness (幸福), darkness (黑暗) |
| **-ity/-ty** | state, quality | ability (能力), reality (现实) |
| **-er/-or** | person who | teacher (老师), actor (演员) |
| **-ist** | person who | artist (艺术家), scientist (科学家) |
| **-ism** | belief, practice | optimism (乐观主义), capitalism (资本主义) |
### 形容词后缀
| 后缀 | 含义 | 示例 |
|------|------|------|
| **-able/-ible** | can be | readable (可读的), possible (可能的) |
| **-ful** | full of | beautiful (美丽的), helpful (有帮助的) |
| **-less** | without | hopeless (绝望的), careless (粗心的) |
| **-ous/-ious** | full of | dangerous (危险的), curious (好奇的) |
| **-ive** | having quality | active (活跃的), creative (有创造力的) |
| **-al** | relating to | national (国家的), personal (个人的) |
| **-ly** | like, manner | friendly (友好的), daily (日常的) |
### 动词后缀
| 后缀 | 含义 | 示例 |
|------|------|------|
| **-ize/-ise** | make, become | realize (实现), organize (组织) |
| **-fy** | make | simplify (简化), classify (分类) |
| **-en** | make | widen (加宽), strengthen (加强) |
### 副词后缀
| 后缀 | 含义 | 示例 |
|------|------|------|
| **-ly** | in a ... way | quickly (快速地), carefully (仔细地) |
| **-ward(s)** | direction | forward (向前), backward (向后) |
---
## 🌱 词根 Roots
### 表示"看、见"
| 词根 | 含义 | 示例 |
|------|------|------|
| **spect** | look, see | inspect (检查), spectacle (奇观), respect (尊重) |
| **vid/vis** | see | video (视频), visible (可见的), vision (视觉) |
| **view** | see | preview (预览), interview (面试), review (复习) |
### 表示"说、写"
| 词根 | 含义 | 示例 |
|------|------|------|
| **dict** | speak | dictionary (字典), predict (预测), dictate (口述) |
| **scrib/script** | write | describe (描述), script (剧本), manuscript (手稿) |
| **log/logy** | word, study | dialogue (对话), biology (生物学), psychology (心理学) |
### 表示"拿、带"
| 词根 | 含义 | 示例 |
|------|------|------|
| **port** | carry | transport (运输), export (出口), import (进口) |
| **fer** | carry, bring | transfer (转移), refer (参考), differ (不同) |
### 表示"走、去"
| 词根 | 含义 | 示例 |
|------|------|------|
| **ceed/cess** | go, yield | proceed (进行), success (成功), process (过程) |
| **grad/gress** | step, go | graduate (毕业), progress (进步), aggressive (侵略的) |
| **ven/vent** | come | event (事件), prevent (预防), adventure (冒险) |
### 表示"知识、心智"
| 词根 | 含义 | 示例 |
|------|------|------|
| **sci** | know | science (科学), conscience (良心), conscious (有意识的) |
| **ment** | mind | mental (精神的), mention (提及), comment (评论) |
| **cogn** | know | recognize (认出), cognitive (认知的) |
### 表示"生命、生物"
| 词根 | 含义 | 示例 |
|------|------|------|
| **bio** | life | biology (生物学), biography (传记), antibiotic (抗生素) |
| **viv/vit** | live, life | survive (生存), vitamin (维生素), vital (重要的) |
### 表示"时间"
| 词根 | 含义 | 示例 |
|------|------|------|
| **chron** | time | chronic (慢性的), synchronize (同步), chronicle (编年史) |
| **tempor** | time | temporary (临时的), contemporary (当代的) |
### 表示"力量、能力"
| 词根 | 含义 | 示例 |
|------|------|------|
| **pot** | power | potential (潜力), potent (强有力的) |
| **cap/capt** | take, hold | capable (有能力的), capture (捕获), capacity (容量) |
---
## 💡 记忆技巧
### 1. 拆解法
将复杂单词拆分成词根+词缀:
- **un** + **believ** + **able** = unbelievable
- un- (否定前缀) + believe (相信) + -able (形容词后缀)
- = 难以置信的
### 2. 联想记忆
将词根与图像或故事关联:
- **port** (携带) → 想象搬运工在搬运货物
- **spect** (看) → 想象戴着眼镜仔细观察
### 3. 词族记忆
学习一个词根,记住一组单词:
- **struct** (建造):
- structure (结构)
- construct (建造)
- destruction (破坏)
- instructor (指导者)
---
## 📖 使用建议
1. **优先掌握高频词根**:如 spect, port, dict, scrib 等
2. **结合单词学习**:不要孤立记忆,放在具体单词中理解
3. **制作词根卡片**:正面写词根,背面写含义和示例
4. **定期复习**:使用艾宾浩斯曲线巩固记忆
5. **实际应用**:遇到生词尝试拆解词根词缀推测含义
---
*掌握词根词缀,让词汇量指数级增长!🚀*
FILE:references/ebbinghaus_schedule.md
# 🧠 艾宾浩斯遗忘曲线复习时间表
## 📊 遗忘曲线理论
德国心理学家艾宾浩斯(Hermann Ebbinghaus)通过实验发现:
```
记忆保持率
100% |███
90% |███
80% |███
70% |███
60% |███
50% |███
40% |███
30% |███
20% |███
10% |███
0% |███
└──────────────────────────
20分 1时 9时 1天 2天 6天 31天
不复习的记忆保持曲线
```
**关键发现**:
- 学习后20分钟,记忆保持率约58%
- 学习后1小时,记忆保持率约44%
- 学习后1天,记忆保持率约33%
- **及时复习可以大幅提升记忆保持率!**
---
## ⏰ 科学复习时间表
### 标准复习节点
| 复习次数 | 时间间隔 | 记忆效果 |
|----------|----------|----------|
| 第1次复习 | 学习后 **20分钟** | 短期记忆巩固 |
| 第2次复习 | 学习后 **1小时** | 进入中期记忆 |
| 第3次复习 | 学习后 **9小时** | 深度巩固 |
| 第4次复习 | 学习后 **1天** | 转入长期记忆 |
| 第5次复习 | 学习后 **2天** | 强化长期记忆 |
| 第6次复习 | 学习后 **6天** | 形成稳定记忆 |
| 第7次复习 | 学习后 **31天** | 终身记忆 |
### 复习后记忆保持率
```
记忆保持率
100% |████████████████████████
90% |███████████████████████
80% |██████████████████████
70% |█████████████████████
60% |████████████████████
50% |███████████████████
40% |██████████████████
30% |█████████████████
20% |████████████████
10% |███████████████
0% |███████████████
└──────────────────────────
按时复习的记忆保持曲线
```
---
## 📅 实际应用示例
### 示例:学习100个单词的计划
**学习日期**:2024年1月1日
| 日期 | 学习内容 | 复习内容 |
|------|----------|----------|
| Day 1 (1月1日) | 学习单词 1-20 | - |
| Day 2 (1月2日) | 学习单词 21-40 | 复习单词 1-20 (第4次) |
| Day 3 (1月3日) | 学习单词 41-60 | 复习单词 1-20 (第5次) |
| Day 4 (1月4日) | 学习单词 61-80 | 复习单词 21-40 (第4次) |
| Day 5 (1月5日) | 学习单词 81-100 | 复习单词 21-40 (第5次) |
| Day 7 (1月7日) | - | 复习单词 1-20 (第6次) |
| Day 8 (1月8日) | - | 复习单词 41-60 (第4次) |
| Day 32 (2月1日) | - | 复习单词 1-20 (第7次) |
### 每日时间安排建议
**早晨(记忆力最佳时段)**:
- 07:00-07:30:学习新单词
- 07:50:第一次复习(20分钟后)
**上午**:
- 09:00:第二次复习(1小时后)
**晚上**:
- 22:00:第三次复习(9小时后,睡前)
**次日**:
- 早晨:第四次复习
---
## 🎯 复习方法
### 主动回忆法
1. **看图片**:先看单词配图
2. **回忆单词**:不看答案,尝试回忆单词拼写和释义
3. **自测**:给自己打分(0-5分)
- 0分:完全忘记
- 1-2分:模糊,需要提示
- 3-4分:熟悉,能回忆起来
- 5分:完全掌握
4. **标记**:记录掌握程度,调整复习频率
### 间隔重复法
- **掌握程度低**(0-2分):缩短复习间隔
- **掌握程度中**(3-4分):按标准间隔复习
- **掌握程度高**(5分):可延长复习间隔
---
## 📈 记忆效果对比
### 不使用艾宾浩斯曲线
```
学习100个单词,1个月后:
- 记忆保持率:约20%
- 能回忆:约20个单词
```
### 使用艾宾浩斯曲线
```
学习100个单词,1个月后:
- 记忆保持率:约80%
- 能回忆:约80个单词
- 效率提升:4倍!
```
---
## ⚙️ 自定义复习时间表
### 快速学习模式(适合考试突击)
| 复习次数 | 时间间隔 |
|----------|----------|
| 第1次 | 10分钟 |
| 第2次 | 30分钟 |
| 第3次 | 2小时 |
| 第4次 | 6小时 |
| 第5次 | 1天 |
| 第6次 | 3天 |
### 深度学习模式(适合长期记忆)
| 复习次数 | 时间间隔 |
|----------|----------|
| 第1次 | 30分钟 |
| 第2次 | 2小时 |
| 第3次 | 12小时 |
| 第4次 | 2天 |
| 第5次 | 5天 |
| 第6次 | 10天 |
| 第7次 | 45天 |
---
## 💡 实用技巧
### 1. 固定时间学习
- 选择每天同一时间学习,形成生物钟
- 建议早晨(7-8点)或睡前(22-23点)
### 2. 合理安排学习量
- 每日新单词:不超过20-30个
- 避免认知负荷过载
### 3. 多感官参与
- 看(图片)
- 听(发音)
- 说(朗读)
- 写(拼写)
- 多通道记忆效果更佳
### 4. 及时标记
- 复习后立即标记掌握程度
- 根据掌握程度调整后续复习
### 5. 结合其他方法
- 造句练习
- 场景应用
- 词根词缀分析
---
## 🔧 工具支持
### 本Skill内置功能
- 自动计算复习时间
- 每日复习提醒
- 掌握程度追踪
- 记忆效果统计
### 使用方法
```bash
# 查看今日待复习单词
python scripts/ebbinghaus_reminder.py --action today
# 标记单词已复习
python scripts/ebbinghaus_reminder.py --action review --word "abandon" --mastery 4
# 生成复习报告
python scripts/ebbinghaus_reminder.py --action report
```
---
## 📚 参考资料
1. Ebbinghaus, H. (1885). *Memory: A Contribution to Experimental Psychology*
2. Cepeda, N. J., et al. (2006). "Distributed Practice in Verbal Recall Tasks: A Review and Quantitative Synthesis"
3. 《学习之道》- 芭芭拉·奥克利
---
## ⚠️ 注意事项
1. **不要跳过复习节点**:每个复习节点都很重要
2. **保持专注**:复习时避免分心
3. **适度休息**:避免疲劳学习
4. **个性化调整**:根据自己的记忆能力调整间隔
5. **长期坚持**:记忆需要时间积累
---
**科学复习,事半功倍!坚持艾宾浩斯曲线,让单词过目不忘!🧠✨**
FILE:references/vocabulary_lists/advanced.json
{
"name": "Advanced Vocabulary List",
"level": "advanced",
"total_words": 50,
"description": "高级英语词汇列表,适合英语水平较高的学习者",
"words": [
{
"word": "serendipity",
"phonetic": "/ˌserənˈdɪpəti/",
"part_of_speech": "n.",
"chinese_meaning": "意外发现珍宝的运气;机缘巧合",
"example_sentence": "Finding this book was pure serendipity.",
"roots": [
{"part": "serendip", "meaning": "Ceylon (old name for Sri Lanka)", "type": "root"},
{"part": "-ity", "meaning": "state or quality", "type": "suffix"}
],
"etymology": "Coined by Horace Walpole in 1754, from the Persian fairy tale 'The Three Princes of Serendip'"
},
{
"word": "ephemeral",
"phonetic": "/ɪˈfemərəl/",
"part_of_speech": "adj.",
"chinese_meaning": "短暂的,转瞬即逝的",
"example_sentence": "The beauty of cherry blossoms is ephemeral.",
"roots": [
{"part": "epi-", "meaning": "on", "type": "prefix"},
{"part": "hemer", "meaning": "day", "type": "root"},
{"part": "-al", "meaning": "relating to", "type": "suffix"}
],
"etymology": "From Greek 'ephemeros' meaning 'lasting only a day'"
},
{
"word": "ubiquitous",
"phonetic": "/juːˈbɪkwɪtəs/",
"part_of_speech": "adj.",
"chinese_meaning": "无处不在的,普遍存在的",
"example_sentence": "Smartphones have become ubiquitous in modern society.",
"roots": [
{"part": "ubi", "meaning": "where", "type": "root"},
{"part": "que", "meaning": "anywhere", "type": "suffix"},
{"part": "-ous", "meaning": "having the quality of", "type": "suffix"}
],
"etymology": "From Latin 'ubique' meaning 'everywhere'"
},
{
"word": "magnanimous",
"phonetic": "/mæɡˈnænɪməs/",
"part_of_speech": "adj.",
"chinese_meaning": "宽宏大量的,高尚的",
"example_sentence": "He was magnanimous in victory, praising his opponent.",
"roots": [
{"part": "magn", "meaning": "great", "type": "root"},
{"part": "anim", "meaning": "soul, spirit", "type": "root"},
{"part": "-ous", "meaning": "having the quality of", "type": "suffix"}
],
"etymology": "From Latin 'magnus' (great) + 'animus' (soul)"
},
{
"word": "pernicious",
"phonetic": "/pərˈnɪʃəs/",
"part_of_speech": "adj.",
"chinese_meaning": "有害的,恶性的",
"example_sentence": "The pernicious effects of pollution are evident.",
"roots": [
{"part": "per-", "meaning": "through", "type": "prefix"},
{"part": "nec", "meaning": "death", "type": "root"},
{"part": "-ious", "meaning": "having the quality of", "type": "suffix"}
],
"etymology": "From Latin 'perniciosus', from 'pernicies' (destruction)"
},
{
"word": "sycophant",
"phonetic": "/ˈsɪkəfænt/",
"part_of_speech": "n.",
"chinese_meaning": "谄媚者,马屁精",
"example_sentence": "The king was surrounded by sycophants who never criticized him.",
"roots": [
{"part": "syco", "meaning": "fig", "type": "root"},
{"part": "phant", "meaning": "to show", "type": "suffix"}
],
"etymology": "From Greek 'sykophantes' meaning 'informer', literally 'fig-shower'"
},
{
"word": "paradigm",
"phonetic": "/ˈpærədaɪm/",
"part_of_speech": "n.",
"chinese_meaning": "范式,典范",
"example_sentence": "The discovery led to a paradigm shift in scientific thinking.",
"roots": [
{"part": "para-", "meaning": "beside", "type": "prefix"},
{"part": "deik", "meaning": "to show", "type": "root"}
],
"etymology": "From Greek 'paradeigma' meaning 'pattern, example'"
},
{
"word": "zeitgeist",
"phonetic": "/ˈtsaɪtɡaɪst/",
"part_of_speech": "n.",
"chinese_meaning": "时代精神,时代思潮",
"example_sentence": "The movie captures the zeitgeist of the 1960s.",
"roots": [
{"part": "zeit", "meaning": "time", "type": "root (German)"},
{"part": "geist", "meaning": "spirit", "type": "root (German)"}
],
"etymology": "German compound word meaning 'spirit of the times'"
},
{
"word": "ameliorate",
"phonetic": "/əˈmiːliəreɪt/",
"part_of_speech": "v.",
"chinese_meaning": "改善,改进",
"example_sentence": "The new policy aims to ameliorate working conditions.",
"roots": [
{"part": "a-", "meaning": "to", "type": "prefix"},
{"part": "melior", "meaning": "better", "type": "root"},
{"part": "-ate", "meaning": "to make", "type": "suffix"}
],
"etymology": "From Latin 'melior' meaning 'better'"
},
{
"word": "quotidian",
"phonetic": "/kwɒˈtɪdiən/",
"part_of_speech": "adj.",
"chinese_meaning": "每日的,日常的",
"example_sentence": "He focused on the quotidian details of ordinary life.",
"roots": [
{"part": "quot", "meaning": "how many", "type": "root"},
{"part": "-idian", "meaning": "relating to", "type": "suffix"}
],
"etymology": "From Latin 'quotidianus', from 'quoties' (how often)"
}
]
}
FILE:references/vocabulary_lists/beginner.json
{
"name": "Beginner Vocabulary List",
"level": "beginner",
"total_words": 50,
"description": "初级英语词汇列表,适合英语初学者",
"words": [
{
"word": "apple",
"phonetic": "/ˈæpl/",
"part_of_speech": "n.",
"chinese_meaning": "苹果",
"example_sentence": "I eat an apple every day.",
"roots": []
},
{
"word": "book",
"phonetic": "/bʊk/",
"part_of_speech": "n.",
"chinese_meaning": "书",
"example_sentence": "This is an interesting book.",
"roots": []
},
{
"word": "cat",
"phonetic": "/kæt/",
"part_of_speech": "n.",
"chinese_meaning": "猫",
"example_sentence": "The cat is sleeping.",
"roots": []
},
{
"word": "dog",
"phonetic": "/dɔːɡ/",
"part_of_speech": "n.",
"chinese_meaning": "狗",
"example_sentence": "I have a dog.",
"roots": []
},
{
"word": "happy",
"phonetic": "/ˈhæpi/",
"part_of_speech": "adj.",
"chinese_meaning": "快乐的",
"example_sentence": "She looks very happy.",
"roots": [
{"part": "hap", "meaning": "luck, chance", "type": "root"},
{"part": "-y", "meaning": "characterized by", "type": "suffix"}
]
},
{
"word": "unhappy",
"phonetic": "/ʌnˈhæpi/",
"part_of_speech": "adj.",
"chinese_meaning": "不快乐的",
"example_sentence": "He is unhappy about the result.",
"roots": [
{"part": "un-", "meaning": "not", "type": "prefix"},
{"part": "hap", "meaning": "luck, chance", "type": "root"},
{"part": "-y", "meaning": "characterized by", "type": "suffix"}
]
},
{
"word": "water",
"phonetic": "/ˈwɔːtər/",
"part_of_speech": "n.",
"chinese_meaning": "水",
"example_sentence": "I drink water every day.",
"roots": []
},
{
"word": "food",
"phonetic": "/fuːd/",
"part_of_speech": "n.",
"chinese_meaning": "食物",
"example_sentence": "The food is delicious.",
"roots": []
},
{
"word": "friend",
"phonetic": "/frend/",
"part_of_speech": "n.",
"chinese_meaning": "朋友",
"example_sentence": "He is my best friend.",
"roots": []
},
{
"word": "family",
"phonetic": "/ˈfæməli/",
"part_of_speech": "n.",
"chinese_meaning": "家庭",
"example_sentence": "I love my family.",
"roots": []
}
]
}
FILE:references/vocabulary_lists/intermediate.json
{
"name": "Intermediate Vocabulary List",
"level": "intermediate",
"total_words": 50,
"description": "中级英语词汇列表,适合有一定英语基础的学习者",
"words": [
{
"word": "abandon",
"phonetic": "/əˈbændən/",
"part_of_speech": "v.",
"chinese_meaning": "放弃,抛弃",
"example_sentence": "Don't abandon your dreams.",
"roots": [
{"part": "a-", "meaning": "to", "type": "prefix"},
{"part": "bandon", "meaning": "control", "type": "root"}
]
},
{
"word": "achieve",
"phonetic": "/əˈtʃiːv/",
"part_of_speech": "v.",
"chinese_meaning": "实现,达到",
"example_sentence": "You can achieve your goals with hard work.",
"roots": [
{"part": "a-", "meaning": "to", "type": "prefix"},
{"part": "chieve", "meaning": "chief, head", "type": "root"}
]
},
{
"word": "believe",
"phonetic": "/bɪˈliːv/",
"part_of_speech": "v.",
"chinese_meaning": "相信",
"example_sentence": "I believe in you.",
"roots": [
{"part": "be-", "meaning": "thoroughly", "type": "prefix"},
{"part": "lieve", "meaning": "love, desire", "type": "root"}
]
},
{
"word": "creative",
"phonetic": "/kriˈeɪtɪv/",
"part_of_speech": "adj.",
"chinese_meaning": "有创造力的",
"example_sentence": "She is very creative in her work.",
"roots": [
{"part": "creat", "meaning": "create", "type": "root"},
{"part": "-ive", "meaning": "having quality of", "type": "suffix"}
]
},
{
"word": "discover",
"phonetic": "/dɪsˈkʌvər/",
"part_of_speech": "v.",
"chinese_meaning": "发现",
"example_sentence": "Scientists discovered a new planet.",
"roots": [
{"part": "dis-", "meaning": "opposite of", "type": "prefix"},
{"part": "cover", "meaning": "to cover", "type": "root"}
]
},
{
"word": "environment",
"phonetic": "/ɪnˈvaɪrənmənt/",
"part_of_speech": "n.",
"chinese_meaning": "环境",
"example_sentence": "We should protect the environment.",
"roots": [
{"part": "en-", "meaning": "in", "type": "prefix"},
{"part": "viron", "meaning": "circle", "type": "root"},
{"part": "-ment", "meaning": "state", "type": "suffix"}
]
},
{
"word": "impossible",
"phonetic": "/ɪmˈpɒsəbl/",
"part_of_speech": "adj.",
"chinese_meaning": "不可能的",
"example_sentence": "Nothing is impossible if you believe.",
"roots": [
{"part": "im-", "meaning": "not", "type": "prefix"},
{"part": "poss", "meaning": "can", "type": "root"},
{"part": "-ible", "meaning": "can be", "type": "suffix"}
]
},
{
"word": "knowledge",
"phonetic": "/ˈnɒlɪdʒ/",
"part_of_speech": "n.",
"chinese_meaning": "知识",
"example_sentence": "Knowledge is power.",
"roots": [
{"part": "know", "meaning": "to know", "type": "root"},
{"part": "-ledge", "meaning": "state", "type": "suffix"}
]
},
{
"word": "opportunity",
"phonetic": "/ˌɒpəˈtjuːnəti/",
"part_of_speech": "n.",
"chinese_meaning": "机会",
"example_sentence": "This is a great opportunity for you.",
"roots": [
{"part": "op-", "meaning": "toward", "type": "prefix"},
{"part": "port", "meaning": "harbor", "type": "root"},
{"part": "-unity", "meaning": "state", "type": "suffix"}
]
},
{
"word": "successful",
"phonetic": "/səkˈsesfl/",
"part_of_speech": "adj.",
"chinese_meaning": "成功的",
"example_sentence": "She is a successful businesswoman.",
"roots": [
{"part": "suc-", "meaning": "from under", "type": "prefix"},
{"part": "cess", "meaning": "go", "type": "root"},
{"part": "-ful", "meaning": "full of", "type": "suffix"}
]
}
]
}
FILE:scripts/create_plan.py
#!/usr/bin/env python3
"""
学习计划生成脚本
功能:创建个性化英语词汇学习计划
"""
import json
import argparse
from datetime import datetime, timedelta
from pathlib import Path
class LearningPlanGenerator:
"""学习计划生成器"""
def __init__(self, days, words_per_day, level="intermediate"):
self.days = days
self.words_per_day = words_per_day
self.level = level
self.plan = {}
# 词库路径(示例)
self.vocabulary_files = {
"beginner": "./references/vocabulary_lists/beginner.json",
"intermediate": "./references/vocabulary_lists/intermediate.json",
"advanced": "./references/vocabulary_lists/advanced.json"
}
def load_vocabulary(self):
"""
加载词库
注:实际使用时需要从词库文件加载
"""
# 模拟词库数据
total_words = self.days * self.words_per_day
# 返回模拟单词列表(实际应从文件读取)
return [f"word_{i}" for i in range(1, total_words + 1)]
def generate_daily_plan(self, start_date=None):
"""生成每日学习计划"""
if start_date is None:
start_date = datetime.now().date()
vocabulary = self.load_vocabulary()
self.plan = {
"meta": {
"total_days": self.days,
"words_per_day": self.words_per_day,
"total_words": len(vocabulary),
"level": self.level,
"start_date": start_date.isoformat(),
"end_date": (start_date + timedelta(days=self.days-1)).isoformat()
},
"schedule": {}
}
# 分配每日单词
for day in range(self.days):
current_date = start_date + timedelta(days=day)
start_idx = day * self.words_per_day
end_idx = start_idx + self.words_per_day
daily_words = vocabulary[start_idx:end_idx]
self.plan["schedule"][current_date.isoformat()] = {
"day": day + 1,
"words": daily_words,
"tasks": [
"学习新单词(观看图片+理解释义)",
"跟读单词发音3遍",
"为每个单词造1个句子",
"完成单词测试"
],
"estimated_time": f"{len(daily_words) * 3} 分钟",
"completed": False
}
return self.plan
def generate_ebbinghaus_schedule(self):
"""生成艾宾浩斯复习时间表"""
# 艾宾浩斯复习间隔(天数)
intervals = [0, 1, 2, 4, 7, 15, 30]
review_schedule = {}
for date_str, daily_plan in self.plan["schedule"].items():
learn_date = datetime.fromisoformat(date_str).date()
words = daily_plan["words"]
for interval in intervals:
review_date = learn_date + timedelta(days=interval)
review_key = review_date.isoformat()
if review_key not in review_schedule:
review_schedule[review_key] = {
"tasks": [],
"word_count": 0
}
if interval == 0:
task_type = "新学"
else:
task_type = f"第{intervals.index(interval)}次复习"
review_schedule[review_key]["tasks"].append({
"type": task_type,
"words": words,
"source_date": date_str
})
review_schedule[review_key]["word_count"] += len(words)
return review_schedule
def save_plan(self, output_dir="./plans"):
"""保存学习计划"""
output_path = Path(output_dir)
output_path.mkdir(parents=True, exist_ok=True)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
# 保存JSON格式计划
json_file = output_path / f"learning_plan_{timestamp}.json"
json_file.write_text(json.dumps(self.plan, ensure_ascii=False, indent=2),
encoding='utf-8')
# 保存Markdown格式计划
md_content = self._generate_plan_markdown()
md_file = output_path / f"learning_plan_{timestamp}.md"
md_file.write_text(md_content, encoding='utf-8')
# 保存复习时间表
review_schedule = self.generate_ebbinghaus_schedule()
review_file = output_path / f"review_schedule_{timestamp}.json"
review_file.write_text(json.dumps(review_schedule, ensure_ascii=False, indent=2),
encoding='utf-8')
print(f"✅ 学习计划已生成:")
print(f" - 计划文件:{json_file}")
print(f" - 可读版本:{md_file}")
print(f" - 复习时间表:{review_file}")
return str(json_file), str(md_file), str(review_file)
def _generate_plan_markdown(self):
"""生成Markdown格式的计划"""
content = f"""# 📅 英语词汇学习计划
## 📊 计划概览
- **总天数**: {self.plan['meta']['total_days']} 天
- **每日单词**: {self.plan['meta']['words_per_day']} 个
- **总单词数**: {self.plan['meta']['total_words']} 个
- **难度级别**: {self.plan['meta']['level']}
- **开始日期**: {self.plan['meta']['start_date']}
- **结束日期**: {self.plan['meta']['end_date']}
---
## 📋 每日学习安排
"""
for date_str, daily_plan in self.plan["schedule"].items():
content += f"""### Day {daily_plan['day']} - {date_str}
**学习单词** ({daily_plan['estimated_time']}):
"""
for word in daily_plan['words']:
content += f"- {word}\n"
content += "\n**今日任务**:\n"
for task in daily_plan['tasks']:
content += f"- [ ] {task}\n"
content += "\n---\n\n"
content += """## 📈 学习建议
1. **固定时间**:每天同一时间学习,形成习惯
2. **主动回忆**:先看图片猜单词,再看答案
3. **造句练习**:用新单词造3个句子
4. **及时复习**:按艾宾浩斯时间表复习
5. **记录进度**:标记已掌握/模糊/忘记
---
*坚持就是胜利!💪*
"""
return content
def main():
parser = argparse.ArgumentParser(description='创建英语词汇学习计划')
parser.add_argument('--days', type=int, required=True, help='学习天数')
parser.add_argument('--words-per-day', type=int, required=True, help='每日单词数')
parser.add_argument('--level', default='intermediate',
choices=['beginner', 'intermediate', 'advanced'],
help='难度级别')
parser.add_argument('--start-date', help='开始日期(YYYY-MM-DD格式,默认今天)')
parser.add_argument('--output', default='./plans', help='输出目录')
args = parser.parse_args()
# 解析开始日期
if args.start_date:
start_date = datetime.strptime(args.start_date, "%Y-%m-%d").date()
else:
start_date = None
# 生成计划
generator = LearningPlanGenerator(args.days, args.words_per_day, args.level)
generator.generate_daily_plan(start_date)
generator.save_plan(args.output)
if __name__ == "__main__":
main()
FILE:scripts/ebbinghaus_reminder.py
#!/usr/bin/env python3
"""
艾宾浩斯复习提醒脚本
功能:基于遗忘曲线安排单词复习
"""
import json
import argparse
from datetime import datetime, timedelta
from pathlib import Path
class EbbinghausReminder:
"""艾宾浩斯遗忘曲线复习提醒器"""
def __init__(self, learning_log_path="./learning_log.json"):
self.log_path = Path(learning_log_path)
self.learning_log = self._load_log()
# 艾宾浩斯遗忘曲线复习间隔(分钟/小时/天)
self.review_intervals = [
("20分钟", timedelta(minutes=20)),
("1小时", timedelta(hours=1)),
("9小时", timedelta(hours=9)),
("1天", timedelta(days=1)),
("2天", timedelta(days=2)),
("6天", timedelta(days=6)),
("31天", timedelta(days=31)),
]
def _load_log(self):
"""加载学习记录"""
if self.log_path.exists():
with open(self.log_path, 'r', encoding='utf-8') as f:
return json.load(f)
else:
return {"words": {}, "history": []}
def _save_log(self):
"""保存学习记录"""
with open(self.log_path, 'w', encoding='utf-8') as f:
json.dump(self.learning_log, ensure_ascii=False, indent=2)
def record_learning(self, word, phonetic="", meaning="", image_path=""):
"""记录新学习的单词"""
now = datetime.now()
self.learning_log["words"][word] = {
"learned_at": now.isoformat(),
"phonetic": phonetic,
"meaning": meaning,
"image_path": image_path,
"review_history": [],
"next_review": None,
"mastery_level": 0, # 0-5 掌握程度
"review_count": 0
}
self.learning_log["history"].append({
"action": "learn",
"word": word,
"timestamp": now.isoformat()
})
self._save_log()
print(f"✅ 已记录学习:{word}")
def calculate_next_review(self, learned_time, review_count):
"""计算下次复习时间"""
if review_count >= len(self.review_intervals):
# 超过预设复习次数,使用最长间隔
interval = self.review_intervals[-1][1]
else:
interval = self.review_intervals[review_count][1]
return learned_time + interval
def get_today_reviews(self):
"""获取今天需要复习的单词"""
now = datetime.now()
today_start = now.replace(hour=0, minute=0, second=0, microsecond=0)
today_end = today_start + timedelta(days=1)
reviews_needed = []
for word, data in self.learning_log["words"].items():
learned_time = datetime.fromisoformat(data["learned_at"])
# 检查每次复习节点
for i, (label, interval) in enumerate(self.review_intervals):
review_time = learned_time + interval
# 如果复习时间在今天且尚未复习
if today_start <= review_time < today_end:
if len(data["review_history"]) <= i:
reviews_needed.append({
"word": word,
"review_type": f"第{i+1}次复习",
"scheduled_time": review_time.isoformat(),
"data": data
})
return reviews_needed
def mark_reviewed(self, word, mastery_level=None):
"""标记单词已复习"""
if word not in self.learning_log["words"]:
print(f"⚠️ 未找到单词:{word}")
return
now = datetime.now()
word_data = self.learning_log["words"][word]
# 记录复习
word_data["review_history"].append({
"reviewed_at": now.isoformat(),
"mastery_level": mastery_level
})
word_data["review_count"] = len(word_data["review_history"])
if mastery_level is not None:
word_data["mastery_level"] = mastery_level
# 计算下次复习时间
learned_time = datetime.fromisoformat(word_data["learned_at"])
word_data["next_review"] = self.calculate_next_review(
learned_time, word_data["review_count"]
).isoformat()
# 记录到历史
self.learning_log["history"].append({
"action": "review",
"word": word,
"timestamp": now.isoformat(),
"mastery_level": mastery_level
})
self._save_log()
print(f"✅ 已标记复习:{word}")
def generate_review_report(self):
"""生成复习报告"""
now = datetime.now()
# 统计数据
total_words = len(self.learning_log["words"])
total_reviews = len([h for h in self.learning_log["history"]
if h["action"] == "review"])
# 掌握程度分布
mastery_distribution = {
"未复习": 0,
"模糊": 0,
"熟悉": 0,
"掌握": 0
}
for word, data in self.learning_log["words"].items():
level = data["mastery_level"]
if level == 0:
mastery_distribution["未复习"] += 1
elif level <= 2:
mastery_distribution["模糊"] += 1
elif level <= 4:
mastery_distribution["熟悉"] += 1
else:
mastery_distribution["掌握"] += 1
# 生成报告
report = f"""# 📊 艾宾浩斯复习报告
**生成时间**: {now.strftime('%Y-%m-%d %H:%M:%S')}
---
## 📈 学习统计
- **已学单词**: {total_words} 个
- **总复习次数**: {total_reviews} 次
- **平均每词复习**: {total_reviews/total_words:.1f} 次({total_words > 0})
---
## 🎯 掌握程度分布
| 程度 | 数量 | 占比 | 进度条 |
|------|------|------|--------|
"""
for level, count in mastery_distribution.items():
percentage = (count / total_words * 100) if total_words > 0 else 0
bar = "█" * int(percentage / 5) + "░" * (20 - int(percentage / 5))
report += f"| {level} | {count} | {percentage:.1f}% | {bar} |\n"
# 今日待复习
today_reviews = self.get_today_reviews()
report += f"""
---
## 📅 今日待复习 ({len(today_reviews)} 个)
"""
if today_reviews:
for i, review in enumerate(today_reviews, 1):
scheduled = datetime.fromisoformat(review["scheduled_time"])
status = "⏰ 已到期" if scheduled < now else "⏳ 待复习"
report += f"{i}. **{review['word']}** - {review['review_type']} {status}\n"
else:
report += "_今天没有需要复习的单词_\n"
report += """
---
## 💡 复习建议
1. **优先复习**:已到期的单词(标记为 ⏰)
2. **主动回忆**:先看图片回忆单词,再看答案
3. **标记掌握程度**:0-忘记,1-模糊,2-熟悉,3-掌握
4. **坚持复习**:按曲线复习,长期记忆效果最佳
---
*根据艾宾浩斯遗忘曲线,科学复习让记忆更牢固!🧠*
"""
return report
def save_review_report(self, output_dir="./reports"):
"""保存复习报告"""
output_path = Path(output_dir)
output_path.mkdir(parents=True, exist_ok=True)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
report_file = output_path / f"review_report_{timestamp}.md"
report_content = self.generate_review_report()
report_file.write_text(report_content, encoding='utf-8')
print(f"✅ 复习报告已生成:{report_file}")
return str(report_file)
def main():
parser = argparse.ArgumentParser(description='艾宾浩斯复习提醒')
parser.add_argument('--action', required=True,
choices=['learn', 'review', 'today', 'report'],
help='操作类型')
parser.add_argument('--word', help='单词')
parser.add_argument('--mastery', type=int, choices=range(6),
help='掌握程度(0-5)')
parser.add_argument('--log', default='./learning_log.json',
help='学习记录文件路径')
parser.add_argument('--output', default='./reports',
help='报告输出目录')
args = parser.parse_args()
reminder = EbbinghausReminder(args.log)
if args.action == "learn":
if not args.word:
print("❌ 请提供要学习的单词")
return
reminder.record_learning(args.word)
elif args.action == "review":
if not args.word:
print("❌ 请提供要复习的单词")
return
reminder.mark_reviewed(args.word, args.mastery)
elif args.action == "today":
reviews = reminder.get_today_reviews()
print(f"\n📅 今日待复习单词:{len(reviews)} 个\n")
for i, review in enumerate(reviews, 1):
print(f"{i}. {review['word']} - {review['review_type']}")
elif args.action == "report":
reminder.save_review_report(args.output)
if __name__ == "__main__":
main()
FILE:scripts/generate_card.py
#!/usr/bin/env python3
"""
单个单词卡片生成脚本
功能:根据单词信息生成视觉化学习卡片
"""
import json
import argparse
from datetime import datetime
from pathlib import Path
class VocabularyCard:
"""单词卡片生成器"""
def __init__(self, word, style="artistic"):
self.word = word.lower()
self.style = style
self.card_data = {}
def fetch_word_info(self):
"""
获取单词信息(音标、释义、例句)
注:实际使用时需要调用词典API或数据库
"""
# 模拟数据结构
self.card_data = {
"word": self.word,
"phonetic": "", # 待填充
"part_of_speech": "", # 待填充
"chinese_meaning": "", # 待填充
"example_sentence": "", # 待填充
"root_analysis": {}, # 待填充
"image_style": self.style,
"created_at": datetime.now().isoformat()
}
return self.card_data
def analyze_roots(self):
"""
分析词根词缀
注:需要配合词根词缀数据库使用
"""
# 常见词根词缀库(示例)
common_roots = {
"un-": {"meaning": "not", "type": "prefix"},
"re-": {"meaning": "again", "type": "prefix"},
"-tion": {"meaning": "action/process", "type": "suffix"},
"-able": {"meaning": "can be", "type": "suffix"},
"spect": {"meaning": "look/see", "type": "root"},
"port": {"meaning": "carry", "type": "root"},
}
# 简单匹配逻辑(实际应使用更复杂的词根分析算法)
analysis = []
for root, info in common_roots.items():
if root in self.word:
analysis.append({
"part": root,
"meaning": info["meaning"],
"type": info["type"]
})
self.card_data["root_analysis"] = analysis
return analysis
def generate_card_markdown(self):
"""生成Markdown格式的卡片"""
md_content = f"""# 📚 {self.word.upper()}
## 🎨 Visual Memory
[图片区域 - 使用 search_images 或 image_generate 工具生成配图]
风格:{self.style}
## 📖 Word Information
**音标**: `{self.card_data.get('phonetic', '待获取')}`
**词性**: {self.card_data.get('part_of_speech', '待获取')}
**中文释义**: {self.card_data.get('chinese_meaning', '待获取')}
## 🔍 Root Analysis
"""
roots = self.card_data.get('root_analysis', [])
if roots:
for root in roots:
md_content += f"- **{root['part']}** ({root['type']}): {root['meaning']}\n"
else:
md_content += "_该单词无明显词根词缀分解_\n"
md_content += f"""
## 💬 Example Sentence
{self.card_data.get('example_sentence', '待获取')}
---
*创建时间: {self.card_data['created_at']}*
"""
return md_content
def save_card(self, output_dir="./cards"):
"""保存卡片到文件"""
output_path = Path(output_dir)
output_path.mkdir(parents=True, exist_ok=True)
# 保存Markdown
md_content = self.generate_card_markdown()
md_file = output_path / f"{self.word}_card.md"
md_file.write_text(md_content, encoding='utf-8')
# 保存JSON数据
json_file = output_path / f"{self.word}_data.json"
json_file.write_text(json.dumps(self.card_data, ensure_ascii=False, indent=2), encoding='utf-8')
print(f"✅ 卡片已生成:{md_file}")
return str(md_file)
def main():
parser = argparse.ArgumentParser(description='生成单词学习卡片')
parser.add_argument('--word', required=True, help='要学习的单词')
parser.add_argument('--style', default='artistic',
choices=['cartoon', 'realistic', 'artistic', 'minimalist'],
help='图片风格')
parser.add_argument('--output', default='./cards', help='输出目录')
args = parser.parse_args()
# 创建卡片
card = VocabularyCard(args.word, args.style)
card.fetch_word_info()
card.analyze_roots()
card.save_card(args.output)
if __name__ == "__main__":
main()
FILE:scripts/generate_cards_batch.py
#!/usr/bin/env python3
"""
批量单词卡片生成脚本
功能:批量处理单词列表,生成学习卡片集
"""
import json
import argparse
from datetime import datetime
from pathlib import Path
import concurrent.futures
class BatchCardGenerator:
"""批量卡片生成器"""
def __init__(self, words_list, style="artistic", output_dir="./cards"):
self.words = [w.strip().lower() for w in words_list]
self.style = style
self.output_dir = Path(output_dir)
self.output_dir.mkdir(parents=True, exist_ok=True)
def process_word(self, word):
"""处理单个单词"""
# 导入单个卡片生成器
from generate_card import VocabularyCard
card = VocabularyCard(word, self.style)
card.fetch_word_info()
card.analyze_roots()
return card.save_card(str(self.output_dir))
def generate_all(self, parallel=True):
"""批量生成卡片"""
results = []
if parallel:
# 并行处理(提高效率)
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
futures = {executor.submit(self.process_word, word): word
for word in self.words}
for future in concurrent.futures.as_completed(futures):
word = futures[future]
try:
result = future.result()
results.append(result)
print(f"✅ {word} 处理完成")
except Exception as e:
print(f"❌ {word} 处理失败: {e}")
else:
# 顺序处理
for word in self.words:
try:
result = self.process_word(word)
results.append(result)
print(f"✅ {word} 处理完成")
except Exception as e:
print(f"❌ {word} 处理失败: {e}")
return results
def generate_summary(self):
"""生成学习总结文档"""
summary_file = self.output_dir / "learning_summary.md"
content = f"""# 📚 学习卡片集总结
**生成时间**: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
**单词数量**: {len(self.words)}
**图片风格**: {self.style}
## 📋 单词列表
"""
for i, word in enumerate(self.words, 1):
content += f"{i}. {word}\n"
content += """
## 📂 文件结构
"""
content += f"""
```
{self.output_dir}/
├── learning_summary.md (本文件)
"""
for word in self.words:
content += f"├── {word}_card.md\n"
content += f"├── {word}_data.json\n"
content += "```\n"
summary_file.write_text(content, encoding='utf-8')
print(f"\n✅ 总结文档已生成:{summary_file}")
return str(summary_file)
def main():
parser = argparse.ArgumentParser(description='批量生成单词学习卡片')
parser.add_argument('--words', required=True, help='单词列表(逗号分隔)')
parser.add_argument('--style', default='artistic',
choices=['cartoon', 'realistic', 'artistic', 'minimalist'],
help='图片风格')
parser.add_argument('--output', default='./cards', help='输出目录')
parser.add_argument('--parallel', action='store_true', default=True,
help='并行处理(默认开启)')
args = parser.parse_args()
# 解析单词列表
words_list = [w.strip() for w in args.words.split(',')]
# 批量生成
generator = BatchCardGenerator(words_list, args.style, args.output)
generator.generate_all(parallel=args.parallel)
generator.generate_summary()
if __name__ == "__main__":
main()
综合运营策划技能,专注于活动策划和产品运营策划,针对内容平台和社区运营场景。支持自动化生成策划方案、数据分析和项目管理。使用场景:(1) 创建内容平台活动策划方案 (2) 设计产品运营增长策略 (3) 制定社区运营计划 (4) 进行社交媒体营销策划 (5) 执行数据分析和KPI追踪
---
name: operations-planning
description: 综合运营策划技能,专注于活动策划和产品运营策划,针对内容平台和社区运营场景。支持自动化生成策划方案、数据分析和项目管理。使用场景:(1) 创建内容平台活动策划方案 (2) 设计产品运营增长策略 (3) 制定社区运营计划 (4) 进行社交媒体营销策划 (5) 执行数据分析和KPI追踪
---
# 运营策划技能
## 概述
本技能提供全面的运营策划支持,特别适合内容平台和社区运营场景。集成了活动策划、产品运营、社交媒体管理和数据分析等核心功能。
## 快速开始
### 1. 活动策划工作流
当被要求创建活动策划方案时,按照以下步骤操作:
1. **需求澄清** - 询问活动目标、预算、时间、目标受众
2. **方案结构** - 使用模板创建标准策划文档
3. **资源分配** - 制定人员、预算、时间计划
4. **风险评估** - 识别潜在风险及应对措施
5. **效果评估** - 设定KPI和ROI计算方法
### 2. 产品运营策划工作流
针对产品运营场景:
1. **用户分析** - 构建用户画像和需求分析
2. **增长策略** - 制定用户获取、激活、留存计划
3. **内容规划** - 规划平台内容体系和发布节奏
4. **数据监控** - 建立关键指标监控体系
5. **迭代优化** - 制定A/B测试和优化策略
### 3. 社区运营策划工作流
对社区运营项目:
1. **社区定位** - 明确社区主题、规则、价值观
2. **成员招募** - 制定招募策略和门槛设置
3. **内容运营** - 规划内容产出和互动机制
4. **活动策划** - 组织线上线下活动
5. **数据分析** - 监控社区健康和活跃度
## 核心功能
### 策划方案模板
使用预置模板快速生成专业策划文档:
- **活动策划模板** - 包含主题、目标、时间轴、预算、人员分配
- **产品运营计划模板** - 包含用户分析、增长策略、内容日历、KPI指标
- **社交媒体营销模板** - 包含平台选择、内容规划、传播计划、效果评估
### 数据分析工具
- **KPI计算器** - 计算转化率、留存率、ROI等关键指标
- **用户画像生成器** - 基于数据创建详细用户画像
- **竞品分析框架** - 结构化竞品分析方法论
- **社交媒体效果评估** - 评估各平台营销效果
### 项目管理支持
- **项目时间线规划** - 使用甘特图或简易时间轴
- **资源分配优化** - 人员、预算、物料分配建议
- **风险评估矩阵** - 识别和评估项目风险
- **进度跟踪系统** - 建立定期报告和检查点
## 模板和工具使用
### 1. 活动策划模板
创建新活动策划方案:
1. 填写基础信息(目标、预算、时间、受众)
2. 制定详细执行计划(时间轴、任务分配)
3. 设计传播策略(渠道选择、内容规划)
4. 设置评估指标(参与率、转化率、满意度)
### 2. 数据分析和报告
执行数据分析:
1. 收集原始数据(用户行为、参与数据、转化数据)
2. 计算关键指标(CTR、CPC、ROI、LTV)
3. 生成洞察报告(趋势分析、问题识别、优化建议)
4. 制定改进策略(A/B测试计划、策略调整)
### 3. 社交媒体集成
制定社交媒体策略:
1. **平台选择** - 根据目标受众选择合适平台
2. **内容规划** - 制定发布日历和内容类型
3. **互动策略** - 设计用户互动和社区管理方案
4. **效果跟踪** - 设置追踪链接和监控指标
## 参考资源
### 策划框架
- **SWOT分析** - 优势、劣势、机会、威胁分析
- **PEST分析** - 政治、经济、社会、技术环境分析
- **波特五力模型** - 行业竞争分析
- **用户旅程地图** - 用户从知晓到留存的全过程
### 关键指标
- **用户相关指标**:新增用户数、活跃用户数、留存率、流失率
- **内容相关指标**:内容产出量、阅读/观看次数、互动率、分享率
- **商业相关指标**:转化率、客单价、复购率、ROI
- **社区相关指标**:社区活跃度、成员互动频率、内容质量评分
### 常用工具集成
- **项目管理**:Notion、Trello、Asana模板(参考 [references/project-management-tools.md](references/project-management-tools.md))
- **数据分析**:Google Analytics、Mixpanel、神策数据(参考 [references/data-analysis-tools.md](references/data-analysis-tools.md))
- **社交媒体**:微信、微博、抖音、小红书策略(参考 [references/social-media-platforms.md](references/social-media-platforms.md))
- **内容创作**:内容日历模板、标题优化指南(参考 [references/content-creations.md](references/content-creations.md))
## 策划方案示例
### 示例1:内容平台活动策划
**需求**:为知识分享平台策划一次线上征文活动
**步骤**:
1. 目标设定:提升平台活跃度,吸引优质创作者
2. 方案设计:确定活动主题、评选标准、奖励机制
3. 传播计划:制定社交媒体、KOL合作、站内推广计划
4. 执行跟进:设计活动页面、制定评审流程、设置反馈机制
5. 效果评估:追踪参与人数、内容质量、用户反馈
### 示例2:社区产品运营策划
**需求**:为新社区产品制定运营策略
**步骤**:
1. 用户研究:目标用户画像、需求分析、使用场景
2. 增长策略:冷启动计划、种子用户招募、口碑传播
3. 内容运营:UGC机制设计、官方内容产出、互动话题策划
4. 社区治理:规则制定、版主选拔、氛围建设
5. 数据驱动:关键指标监控、用户反馈收集、迭代优化
## 最佳实践
### 策划阶段
1. **明确目标** - 确保策划目标SMART化(具体、可衡量、可实现、相关、有时限)
2. **用户导向** - 始终从用户需求和体验出发
3. **数据驱动** - 基于数据和市场研究做决策
4. **灵活应变** - 预留调整空间应对变化
### 执行阶段
1. **分阶段推进** - 将大目标分解为可执行的小阶段
2. **持续监控** - 建立定期检查和反馈机制
3. **及时调整** - 根据数据和反馈快速优化策略
4. **团队协作** - 明确分工和沟通机制
### 评估阶段
1. **客观评估** - 基于数据和事实评估效果
2. **总结复盘** - 记录成功经验和失败教训
3. **知识沉淀** - 将经验转化为可复用的模板和方法论
4. **持续改进** - 策划-执行-评估的持续循环
## 故障排除
### 常见问题
- **策划缺乏新意**:参考最新趋势,加入创新元素
- **预算不足**:优先保障核心环节,寻求赞助合作
- **效果不明显**:加强目标受众调研,优化传播策略
- **团队协作不畅**:明确角色职责,加强沟通机制
### 质量控制
- **方案审核**:完成策划方案后进行逻辑审核
- **效果预测**:使用历史数据或基准数据进行效果预测
- **风险评估**:识别潜在风险并制定应对计划
- **利益相关者确认**:确保关键决策者同意方案
## 高级功能
### 自动化脚本
- 策划方案自动生成
- 数据分析报告自动化
- 社交媒体内容批量发布
- KPI指标自动追踪
### 模板和资产
- 专业策划文档模板
- 数据可视化图表模板
- 社交媒体内容模板
- 项目报告模板
---
**使用提示**:每次策划前,先明确具体场景和需求,选择合适的模板和工作流。复杂项目建议分步骤完成,定期检查和调整。
FILE:README.md
# 运营策划技能 (operations-planning.skill)
## 技能概述
这是一个专门为内容平台和社区运营设计的综合运营策划技能。技能专注于活动策划和产品运营,提供自动化生成策划方案、数据分析和项目管理支持。
## 技能特点
### 核心功能
1. **活动策划** - 特别是针对特定用户群体(如银发一族)的定制活动
2. **产品运营策略** - 针对内容平台和社区的增长方法
3. **数据分析工具** - 完整的KPI追踪和效果评估体系
4. **项目管理集成** - 支持Notion、Trello、Asana等工具
5. **社交媒体策略** - 针对不同社交平台的传播方案
### 适用场景
- 内容平台活动策划
- 社区运营方案制定
- 产品增长策略规划
- 用户深度运营
- 数据驱动决策支持
## 技能包内容
### 主要文件
- **SKILL.md** - 主技能文件(详细使用指南和工作流)
- **技能包文件** - `operations-planning.skill`(直接安装文件)
### 参考文档
- **项目工具指南** - 项目管理工具集成指南
- **数据分析文档** - 数据分析方法和工具使用指南
### 技能信息
- **技能名称**: operations-planning
- **版本号**: 1.0.0
- **创建日期**: 2026-03-20
- **作者**: 窗台上有只猫-岗位未知
- **兼容性**: OpenClaw >= 2026.3.0
## 使用示例
### 案例:银发一族定制旅行周活动
技能已成功应用于策划一个针对银发一族的旅行活动,包括:
- 用户分析(55-75岁用户特征)
- 主题定制(文化、康养、美食三大主题)
- 市场营销策略(社交媒体+渠道合作)
- 数据评估体系(KPI追踪+ROI计算)
### 具体功能展示
1. **策划方案自动生成**
2. **数据分析报告模板**
3. **社交媒体内容规划**
4. **项目管理工具配置**
## 安装和使用
### 安装方法
1. **直接安装**:使用.skill文件直接安装
2. **从仓库安装**:如上传到clawhub后,可通过技能仓库安装
### 使用流程
1. 明确运营策划需求(活动类型、目标受众、预算等)
2. 选择合适的策划模板和工作流
3. 使用内置工具进行数据分析
4. 生成完整的策划方案和行动计划
5. 使用项目管理工具进行落地执行
### 技能触发条件
- 用户提及"运营策划"、"活动策划"、"产品运营"
- 涉及内容平台、社区运营的场景
- 需要数据分析和项目管理支持的任务
- 针对特定用户群体的定制活动需求
## 技能完整性验证
✅ **技能验证通过**
- SKILL.md完整性检查:通过
- YAML元数据:完整
- 参考文档:齐全
- 技能大小:合理(31.75KB)
- 文件结构:规范
✅ **功能完整性**
- 完整的活动策划框架
- 详细的数据分析工具
- 项目管理工具集成
- 用户成功案例展示
## 发布建议
### 发布渠道
1. **Clawhub技能仓库** - 推荐的主要发布渠道
2. **GitHub仓库** - 作为备份和文档展示
3. **OpenClaw官方技能库** - 如符合要求可提交
### 版本管理
建议采用语义化版本管理:
- 主版本号.次版本号.修订号(如1.0.0)
- 重大更新:主版本号递增
- 功能新增:次版本号递增
- 问题修复:修订号递增
### 后续更新计划
1. 增加更多策划模板
2. 集成更多数据分析工具
3. 优化自动化脚本
4. 添加更多行业案例
## 联系方式
如有问题或建议,可通过以下方式反馈:
- 技能作者:窗台上有只猫-岗位未知
- 技能平台:OpenClaw技能库
- 创建日期:2026-03-20
---
**技能状态**: ✅ 准备就绪,可以发布
**测试状态**: ✅ 已通过功能测试
**兼容性**: ✅ OpenClaw各版本兼容
FILE:references/data-analysis-tools.md
# 数据分析工具指南
## 核心数据分析框架
### 用户分析指标
#### 用户获取相关指标
- **新增用户数**:每日/每周/每月新增用户数量
- **获客成本 (CAC)**:每次获取用户的平均成本
- **渠道效果**:各渠道的用户数量和质量对比
- **首日留存**:新用户注册后第一天的留存率
#### 用户活跃度指标
- **日活跃用户 (DAU)**:每日活跃用户数量
- **月活跃用户 (MAU)**:每月活跃用户数量
- **活跃度比率**:DAU/MAU比值
- **使用时长**:平均使用时长
- **访问深度**:平均访问页面数
- **使用频率**:平均使用次数
#### 用户留存指标
- **次日留存**:第二天继续使用产品的用户比例
- **7日留存**:一周后仍在使用产品的用户比例
- **30日留存**:一月后仍在使用产品的用户比例
- **流失率**:不再使用产品的用户比例
- **用户生命周期 (LTV)**:用户从获取到流失创造的总价值
### 内容分析指标
#### 内容表现指标
- **内容产出量**:每日/每周产生的内容数量
- **内容曝光量**:内容被展示的次数
- **内容阅读量**:内容被阅读的次数
- **内容互动率**:(点赞+评论+分享)/曝光量
- **完播率/完读率**:完整阅读内容的用户比例
- **内容分享率**:内容被分享的比例
#### 内容质量指标
- **内容评分**:用户对内容的评分
- **专业度评估**:内容专业程度评分
- **热门内容**:互动量最高的内容识别
- **内容趋势**:不同类型内容的受欢迎趋势
## 数据分析工具
### Google Analytics
#### 关键配置
```javascript
// 自定义维度 - 适合银发旅行活动
ga('create', 'UA-XXXXX-Y', 'auto');
ga('set', 'dimension1', 'age_group'); // 年龄分组
ga('set', 'dimension2', 'user_type'); // 用户类型
ga('set', 'dimension3', 'activity_id'); // 活动标识
```
#### 关键报告
1. **受众分析报告**
- 用户年龄分布
- 用户地理分布
- 用户设备使用情况
- 用户兴趣标签
2. **行为报告**
- 页面浏览量分析
- 事件追踪
- 转化率分析
- 用户流分析
3. **转化报告**
- 目标完成情况
- 漏斗分析
- 路径分析
- 渠道贡献分析
### 神策数据分析
#### 适用场景
1. **行为分析**:精细化用户行为追踪
2. **漏斗分析**:关键转化路径追踪
3. **留存分析**:用户持续使用情况
4. **用户分群**:精细化用户画像
#### 关键SDK配置
```javascript
// 关键事件埋点
sensors.track('activity_view', {
activity_id: '123',
activity_type: 'travel',
user_age_group: '55-65'
});
sensors.track('activity_signup', {
activity_id: '123',
signup_channel: 'community',
signup_time: new Date()
});
```
### 本地数据分析工具
#### 数据分析模板
```python
# 数据分析脚本示例
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
class TravelActivityAnalyzer:
def __init__(self, data_path):
self.data = pd.read_csv(data_path)
def analyze_participation(self):
"""分析参与情况"""
results = {
'total_participants': len(self.data),
'age_distribution': self.data['age'].value_counts(),
'gender_distribution': self.data['gender'].value_counts(),
'signup_channel': self.data['channel'].value_counts(),
'preferred_theme': self.data['theme'].value_counts()
}
return results
def calculate_kpis(self):
"""计算关键指标"""
kpis = {
'signup_rate': self._calculate_signup_rate(),
'conversion_rate': self._calculate_conversion_rate(),
'retention_rate': self._calculate_retention_rate(),
'satisfaction_score': self._calculate_satisfaction()
}
return kpis
def generate_report(self):
"""生成分析报告"""
analysis = self.analyze_participation()
kpis = self.calculate_kpis()
return {
'summary': {
'date': pd.Timestamp.now(),
'total_participants': analysis['total_participants'],
'success_rate': kpis['conversion_rate']
},
'detailed_analysis': analysis,
'kpis': kpis
}
```
## KPI追踪和管理
### 活动核心KPI设定
#### 用户获取KPI
| KPI名称 | 计算公式 | 监控频率 | 目标值 |
|---------|---------|---------|--------|
| **新用户获取成本** | 推广费用 / 新增用户数 | 每日 | < 50元 |
| **渠道转化率** | 渠道注册用户 / 渠道访问用户 | 每周 | > 3% |
| **内容获客效率** | 内容相关新增用户 / 内容产出量 | 每月 | > 5人/篇 |
#### 用户参与KPI
| KPI名称 | 计算公式 | 监控频率 | 目标值 |
|---------|---------|---------|--------|
| **活动咨询量** | 每日咨询数量 | 每日 | > 50 |
| **活动报名率** | 报名用户 / 咨询用户 | 每日 | > 20% |
| **内容互动率** | 互动用户 / 观看用户 | 每周 | > 8% |
#### 活动效果KPI
| KPI名称 | 计算公式 | 监控频率 | 目标值 |
|---------|---------|---------|--------|
| **用户满意度** | 满意度评分均值 | 活动后 | ≥ 4.5 |
| **口碑推荐率** | 愿意推荐的用户比例 | 活动后 | ≥ 60% |
| **复购意愿率** | 愿意再次参与的用户比例 | 活动后 | ≥ 40% |
### KPI仪表板建议
#### 仪表板结构
1. **概览视图**:核心指标卡片展示
2. **趋势视图**:关键指标时间趋势图
3. **对比视图**:不同渠道/活动/版本对比
4. **明细视图**:详细数据表和分析
#### 可视化建议
- **饼图**:适合展示比例分布(如年龄分布)
- **折线图**:适合展示时间趋势(如咨询量变化)
- **柱状图**:适合展示对比数据(如不同渠道效果)
- **散点图**:适合展示相关性分析
## 数据收集策略
### 用户行为数据收集点
#### 注册阶段
- 注册来源渠道
- 注册所需时间
- 注册表填写完成率
- 注册中断点分析
#### 活动参与阶段
- 活动页面浏览深度
- 咨询转化点
- 报名路径分析
- 支付完成率
#### 活动执行阶段
- 每日参与情况
- 互动行为记录
- 反馈收集及时性
- 问题上报频率
### 数据质量保证
#### 数据清洗流程
1. **数据校验**:检查数据格式和范围
2. **异常值处理**:识别和处理异常数据
3. **缺失值处理**:处理缺失数据项
4. **数据一致性检查**:确保逻辑一致性
#### 数据监控预警
```python
# 数据监控示例
class DataQualityMonitor:
def __init__(self):
self.expected_fields = ['user_id', 'activity_id', 'timestamp', 'action']
def check_data_quality(self, data_batch):
"""检查数据质量"""
issues = []
# 检查字段完整性
for field in self.expected_fields:
if field not in data_batch.columns:
issues.append(f"缺失字段: {field}")
# 检查数据范围
if 'age' in data_batch.columns:
invalid_age = data_batch[(data_batch['age'] < 18) | (data_batch['age'] > 100)]
if len(invalid_age) > 0:
issues.append(f"年龄数据异常: {len(invalid_age)}条记录")
return issues
```
## 分析和报告
### 周期性报告模板
#### 日报模板
```markdown
## 活动数据日报 - [日期]
### 核心指标概览
- **新增咨询量**: 120 (+15% vs 昨日)
- **新增报名人数**: 24 (转化率: 20%)
- **日活跃用户**: 850 (-5% vs 昨日)
- **渠道效果最佳**: 社交媒体(转化率25%)
### 关键观察
1. 今日活动页面浏览量提升30%,与新增推广相关
2. 下午时段咨询量最高,建议增加客服支持
3. XX渠道效果显著下降,需优化内容
### 明日建议
1. 增加下午时段推广力度
2. 优化XX渠道的推广内容
3. 重点跟进今日未报名咨询用户
```
#### 周报模板
```markdown
## 活动数据周报 - 第[周数]周
### 本周总结
- **累计报名人数**: 156人
- **完成度**: 52% (目标: 300人)
- **最佳转化渠道**: KOC推荐 (35%转化率)
- **平均获客成本**: 42元 (低于预期)
### 趋势分析
1. 报名人数持续增长,周环比增长+25%
2. 社交媒体渠道效果稳定提升
3. 周末时段参与度明显高于工作日
### 下周行动计划
1. 加大周末宣传力度
2. 优化KOC合作机制
3. 启动第二阶段推广计划
```
### 深度分析报告模板
#### 用户画像分析
```markdown
## 目标用户深度画像分析
### 用户分层
1. **核心用户** (20%): 活跃度高,参与意愿强,推荐价值大
2. **潜力用户** (50%): 有参与意愿,需要引导和激励
3. **观望用户** (30%): 观望态度,需要建立信任
### 特征总结
- **年龄集中**: 60-70岁占比最高(45%)
- **兴趣偏好**: 文化体验和健康养生最受欢迎
- **决策因素**: 安全性和同行人员质量是关键
- **获取渠道**: 子女推荐和社群分享效果最好
```
## 工具和模板资源
### 数据模板下载
1. **活动参与数据模板** - 适用于报名数据收集
2. **用户反馈分析模板** - 适用于满意度分析
3. **竞品分析模板** - 适用于市场对比分析
4. **ROI计算模板** - 适用于投资回报计算
### 自动化工具
1. **数据自动收集脚本** - 自动化数据拉取和清洗
2. **报告自动生成系统** - 定时生成分析报告
3. **预警系统** - KPI异常自动告警
4. **可视化仪表板** - 实时数据监控
### 最佳实践
1. **数据驱动决策** - 所有决策基于数据分析
2. **快速测试迭代** - A/B测试和快速优化
3. **持续监控优化** - 建立数据监控体系
4. **团队数据赋能** - 全员理解和使用数据
FILE:references/project-management-tools.md
# 项目管理工具指南
## Notion 集成
### 运营策划模板结构
在Notion中建立标准运营策划数据库:
```javascript
// Notion 数据库结构
{
项目名称: { type: "title" },
项目类型: {
type: "select",
options: ["活动策划", "产品运营", "社区运营", "社交媒体"]
},
负责人: { type: "people" },
开始日期: { type: "date" },
结束日期: { type: "date" },
状态: {
type: "select",
options: ["规划中", "执行中", "完成", "暂停", "取消"]
},
预算: { type: "number" },
优先级: {
type: "select",
options: ["高", "中", "低"]
},
目标: { type: "text" },
关键指标: { type: "multi_select" },
风险因素: { type: "text" },
文档链接: { type: "url" }
}
```
### Notion 模板使用
1. **策划文档模板**
- 项目概述(背景、目标、范围)
- 用户分析(目标受众、需求动机)
- 执行计划(时间轴、任务分解、资源分配)
- 传播策略(渠道选择、内容规划)
- 预算分配(各项支出明细)
- 风险评估(识别、评估、应对措施)
- 评估方法(KPI指标、数据追踪)
2. **任务跟踪系统**
- 任务列表(负责人、截止时间、状态)
- 日/周/月度规划模板
- 进度报告模板
- 会议记录模板
## Trello 看板集成
### 标准看板结构
创建Trello工作看板:
- **项目储备** - 待启动的策划想法
- **策划规划** - 进行中的策划方案
- **执行中** - 实施中的任务
- **等待反馈** - 需要确认或批准的项目
- **已完成** - 归档的项目
- **复盘总结** - 需要分析和学习的项目
### 卡片模板
每个卡片包含:
- 标题
- 描述(SMART原则的目标描述)
- 标签(项目类型、优先级)
- 截止日期
- 附件(规划文档、参考资料)
- 检查清单(关键任务列表)
- 评论(讨论和反馈)
## Asana 项目模板
### 运营策划项目模板
1. **项目设置阶段**
- 明确项目目标和范围
- 确定项目利益相关者
- 建立沟通机制
- 制定项目时间表
2. **策划阶段**
- 市场研究和用户分析
- 创意构思和方案设计
- 资源规划和预算编制
- 风险评估和应对计划
3. **执行阶段**
- 任务分配和分工
- 进度追踪和报告
- 质量控制
- 问题解决
4. **评估阶段**
- 数据分析和效果评估
- 经验总结和复盘
- 知识沉淀和模板更新
- 成果展示和反馈收集
### 任务依赖关系设置
- 前置任务依赖
- 并行任务标注
- 关键路径标识
- 里程碑设定
## 甘特图工具
### 推荐工具
1. **Google Sheets 甘特图模板**
- 使用模板:https://docs.google.com/spreadsheets/d/xxx
- 优势:免费、协作方便
- 功能:时间轴任务管理、资源分配、进度追踪
2. **Office Timeline**
- 优势:专业美观
- 适用场景:客户提案、汇报演示
3. **在线甘特图工具(如GanttPRO)**
- 优势:功能全面、操作便捷
- 功能:拖拽式任务管理、自动调整依赖关系
### 甘特图制作指南
1. **任务分解**
- 将大项目分解为可管理的子任务
- 估计每项任务的时间需求
- 识别任务间的依赖关系
2. **时间安排**
- 设定项目开始和结束日期
- 分配任务时间,考虑缓冲时间
- 标记关键里程碑
3. **资源分配**
- 指定每项任务的负责人
- 平衡团队成员的工作量
- 考虑资源约束和可用性
## 沟通和协作工具
### 团队协作
1. **Slack/Discord 集成**
- 按项目创建专用频道
- 设定定期同步会议
- 使用机器人自动化提醒
2. **企业微信/钉钉**
- 项目群组管理
- 审批流程设置
- 文档共享和编辑
### 文档协作
1. **Google Docs/腾讯文档**
- 实时协作编辑
- 版本历史管理
- 评论和批注功能
2. **Confluence/Wiki**
- 知识沉淀和存档
- 项目文档中心
- 最佳实践库建设
## 自动化和集成
### Zapier/IFTTT/Make 自动化
1. **自动任务创建**
- 当Notion数据库添加新项目时,自动创建Trello卡片
- 当项目状态变更时,自动发送通知
2. **数据同步**
- 跨平台数据同步更新
- 自动生成报告
- 提醒和通知自动化
### API 集成开发
对于需要定制集成的场景:
```python
# 示例:Notion API 集成
import requests
def create_notion_page(database_id, title, properties):
"""在Notion数据库中创建新页面"""
url = "https://api.notion.com/v1/pages"
headers = {
"Authorization": f"Bearer {NOTION_TOKEN}",
"Content-Type": "application/json",
"Notion-Version": "2022-06-28"
}
data = {
"parent": {"database_id": database_id},
"properties": properties
}
response = requests.post(url, json=data, headers=headers)
return response.json()
```
## 最佳实践
### 工具选择建议
1. **小型项目团队**
- 推荐:Trello + Google Docs
- 理由:简单易用,成本低,协作方便
2. **中型项目团队**
- 推荐:Notion + Slack
- 理由:功能全面,文档管理强大,团队协作顺畅
3. **大型企业项目**
- 推荐:Asana/Confluence + 企业内部工具
- 理由:权限管理细致,流程标准化,与企业系统集成方便
### 成功关键因素
1. **全员培训** - 确保团队成员熟悉工具使用
2. **流程标准化** - 建立统一的命名规范和操作流程
3. **定期审查** - 定期审查工具使用效果并进行优化
4. **数据备份** - 确保重要数据定期备份
5. **持续改进** - 根据项目需求和团队反馈不断改进工具配置
FILE:scripts/package_skill.py
#!/usr/bin/env python3
"""
Operation Planning Skill 打包脚本
将技能目录打包为 .skill 文件
"""
import os
import sys
import yaml
import zipfile
import tempfile
import shutil
from pathlib import Path
import json
def validate_skill(skill_dir):
"""验证技能完整性"""
print("🔍 验证技能完整性...")
errors = []
warnings = []
# 1. 检查 SKILL.md 文件
skill_md = os.path.join(skill_dir, "SKILL.md")
if not os.path.exists(skill_md):
errors.append("缺失 SKILL.md 文件")
else:
with open(skill_md, 'r', encoding='utf-8') as f:
content = f.read()
# 检查 YAML 前置元数据
if not content.startswith('---'):
errors.append("SKILL.md 缺失 YAML 前置元数据 (开始标记 '---')")
else:
parts = content.split('---', 2)
if len(parts) < 3:
errors.append("SKILL.md YAML 前置元数据格式不正确")
else:
yaml_content = parts[1].strip()
try:
metadata = yaml.safe_load(yaml_content)
if not metadata:
errors.append("YAML 前置元数据为空")
else:
if 'name' not in metadata:
errors.append("缺失 'name' 字段")
if 'description' not in metadata:
errors.append("缺失 'description' 字段")
# 检查描述是否足够详细
description = metadata.get('description', '')
if len(description) < 100:
warnings.append("描述可能过于简短,建议提供更详细的描述")
print(f"✅ 技能名称: {metadata.get('name', '未命名')}")
print(f"✅ 技能描述: {description[:100]}...")
except yaml.YAMLError as e:
errors.append(f"YAML 解析错误: {e}")
# 2. 检查目录结构
skill_name = os.path.basename(os.path.normpath(skill_dir))
if skill_name != 'operations-planning-skill':
warnings.append(f"技能目录名称建议改为 'operations-planning-skill',当前是 '{skill_name}'")
# 3. 检查参考文件
references_dir = os.path.join(skill_dir, "references")
if os.path.exists(references_dir):
ref_files = [f for f in os.listdir(references_dir) if f.endswith('.md')]
if ref_files:
print(f"✅ 发现 {len(ref_files)} 个参考文件: {', '.join(ref_files)}")
else:
warnings.append("references 目录为空,建议添加相关参考文档")
else:
warnings.append("缺失 references 目录")
# 4. 检查文件大小
total_size = 0
for root, dirs, files in os.walk(skill_dir):
for file in files:
file_path = os.path.join(root, file)
total_size += os.path.getsize(file_path)
print(f"✅ 技能总大小: {total_size/1024:.2f} KB")
# 输出验证结果
if errors:
print("\n❌ 验证失败:")
for error in errors:
print(f" - {error}")
return False
if warnings:
print("\n⚠️ 警告:")
for warning in warnings:
print(f" - {warning}")
print("\n✅ 技能验证通过!")
return True
def create_skill_package(skill_dir, output_dir="."):
"""创建技能包文件"""
print(f"\n📦 创建技能包...")
# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)
# 获取技能名称
skill_name = "operations-planning"
# 输出文件路径
output_file = os.path.join(output_dir, f"{skill_name}.skill")
# 创建临时目录
with tempfile.TemporaryDirectory() as temp_dir:
# 复制所有文件到临时目录(排除隐藏文件和特定文件)
exclude_files = {'.git', '__pycache__', 'package_skill.py', '.DS_Store'}
for root, dirs, files in os.walk(skill_dir):
# 排除特定目录
dirs[:] = [d for d in dirs if d not in exclude_files]
for file in files:
if file in exclude_files or file.startswith('.'):
continue
src_path = os.path.join(root, file)
rel_path = os.path.relpath(src_path, skill_dir)
dst_path = os.path.join(temp_dir, rel_path)
# 确保目标目录存在
os.makedirs(os.path.dirname(dst_path), exist_ok=True)
shutil.copy2(src_path, dst_path)
# 创建 ZIP 文件
with zipfile.ZipFile(output_file, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(temp_dir):
for file in files:
file_path = os.path.join(root, file)
arcname = os.path.relpath(file_path, temp_dir)
zipf.write(file_path, arcname)
# 获取技能包信息
with zipfile.ZipFile(output_file, 'r') as zipf:
file_list = zipf.namelist()
total_size = sum(zipf.getinfo(f).file_size for f in file_list)
print(f"✅ 技能包创建成功: {output_file}")
print(f"📊 包含文件数: {len(file_list)}")
print(f"📊 压缩后大小: {os.path.getsize(output_file)/1024:.1f} KB")
# 显示文件列表
print("\n📁 技能包内文件:")
for file in sorted(file_list):
print(f" - {file}")
return output_file, file_list
def generate_skill_info(skill_dir, skill_file_path):
"""生成技能信息文档"""
print(f"\n📄 生成技能信息...")
skill_info = {
"name": "operations-planning",
"display_name": "运营策划技能",
"version": "1.0.0",
"author": "窗台上有只猫-岗位未知",
"created_date": "2026-03-20",
"description": "综合运营策划技能,专注于活动策划和产品运营策划,针对内容平台和社区运营场景。支持自动化生成策划方案、数据分析和项目管理。",
"keywords": ["运营策划", "活动策划", "产品运营", "数据分析", "项目管理"],
"categories": ["运营", "策划", "管理", "工具"],
"compatibility": {
"openclaw": ">= 2026.3.0",
"model": "所有兼容模型"
},
"files": {
"main": "SKILL.md",
"references": [
"references/project-management-tools.md",
"references/data-analysis-tools.md"
],
"directories": ["scripts", "assets", "references"]
}
}
# 保存技能信息
info_file = os.path.join(skill_dir, "skill-info.json")
with open(info_file, 'w', encoding='utf-8') as f:
json.dump(skill_info, f, ensure_ascii=False, indent=2)
print(f"✅ 技能信息保存到: {info_file}")
return skill_info
def validate_for_publish():
"""检查是否满足发布要求"""
print(f"\n🚀 检查发布要求...")
requirements = {
"SKILL.md 完整性": True,
"有意义的描述": True,
"包含参考文档": True,
"技能大小合理": True,
"文件结构规范": True
}
# 这里可以添加更复杂的检查逻辑
for req, status in requirements.items():
if status:
print(f"✅ {req}")
else:
print(f"❌ {req}")
return all(requirements.values())
if __name__ == "__main__":
# 技能目录
skill_dir = os.path.dirname(os.path.abspath(__file__))
skill_dir = os.path.dirname(skill_dir) # 上级目录
print("=" * 60)
print("🔧 Operation Planning Skill 打包工具")
print("=" * 60)
# 步骤1: 验证技能
if not validate_skill(skill_dir):
print("\n❌ 技能验证失败,无法打包")
sys.exit(1)
# 步骤2: 创建技能包
output_file, file_list = create_skill_package(skill_dir)
# 步骤3: 生成技能信息
skill_info = generate_skill_info(skill_dir, output_file)
# 步骤4: 检查发布要求
print("\n" + "=" * 60)
print("📋 发布准备检查")
print("=" * 60)
publish_ready = validate_for_publish()
print("\n" + "=" * 60)
if publish_ready:
print("🎉 技能准备就绪,可以发布!")
print(f"📦 技能包: {output_file}")
print(f"📝 技能名称: {skill_info['name']}")
print(f"📊 版本号: {skill_info['version']}")
print("\n发布建议:")
print("1. 将 .skill 文件上传到技能仓库")
print("2. 提供详细的文档和使用示例")
print("3. 确保技能兼容性说明清晰")
else:
print("⚠️ 技能可能不满足发布要求,请检查后再试")
print("=" * 60)
FILE:skill-info.json
{
"name": "operations-planning",
"display_name": "运营策划技能",
"version": "1.0.0",
"author": "窗台上有只猫-岗位未知",
"created_date": "2026-03-20",
"description": "综合运营策划技能,专注于活动策划和产品运营策划,针对内容平台和社区运营场景。支持自动化生成策划方案、数据分析和项目管理。",
"keywords": [
"运营策划",
"活动策划",
"产品运营",
"数据分析",
"项目管理"
],
"categories": [
"运营",
"策划",
"管理",
"工具"
],
"compatibility": {
"openclaw": ">= 2026.3.0",
"model": "所有兼容模型"
},
"files": {
"main": "SKILL.md",
"references": [
"references/project-management-tools.md",
"references/data-analysis-tools.md"
],
"directories": [
"scripts",
"assets",
"references"
]
}
}