@rookiestar/eng-lang-tutor 1.1.8 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @rookiestar/eng-lang-tutor might be problematic. Click here for more details.
- package/README.md +1 -28
- package/README_EN.md +1 -28
- package/SKILL.md +3 -5
- package/package.json +1 -1
- package/templates/prompts/initialization.md +23 -6
- package/templates/state_schema.json +48 -2
package/README.md
CHANGED
|
@@ -22,16 +22,6 @@
|
|
|
22
22
|
- ffmpeg(用于音频合成)
|
|
23
23
|
- Discord Bot(或其他 IM 通道)
|
|
24
24
|
|
|
25
|
-
**系统依赖:**
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# macOS
|
|
29
|
-
brew install ffmpeg python3
|
|
30
|
-
|
|
31
|
-
# Ubuntu/Debian
|
|
32
|
-
sudo apt-get install ffmpeg python3 python3-venv
|
|
33
|
-
```
|
|
34
|
-
|
|
35
25
|
### 安装步骤
|
|
36
26
|
|
|
37
27
|
**方式一:npm 安装(推荐)**
|
|
@@ -46,25 +36,10 @@ npm install -g @rookiestar/eng-lang-tutor
|
|
|
46
36
|
|
|
47
37
|
```bash
|
|
48
38
|
cd ~/.openclaw/skills/
|
|
49
|
-
git clone
|
|
50
|
-
cd temp-skills
|
|
51
|
-
git sparse-checkout set eng-lang-tutor
|
|
52
|
-
mv eng-lang-tutor ../eng-lang-tutor
|
|
53
|
-
cd .. && rm -rf temp-skills
|
|
39
|
+
git clone https://github.com/rookiestar/eng-lang-tutor.git
|
|
54
40
|
pip install -r eng-lang-tutor/requirements.txt
|
|
55
41
|
```
|
|
56
42
|
|
|
57
|
-
**手动安装依赖(如需要):**
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
# 创建 Python 虚拟环境
|
|
61
|
-
python3 -m venv ~/.venvs/eng-lang-tutor
|
|
62
|
-
source ~/.venvs/eng-lang-tutor/bin/activate # Linux/macOS
|
|
63
|
-
|
|
64
|
-
# 安装依赖
|
|
65
|
-
pip install -r ~/.openclaw/skills/eng-lang-tutor/requirements.txt
|
|
66
|
-
```
|
|
67
|
-
|
|
68
43
|
**验证安装:**
|
|
69
44
|
|
|
70
45
|
```bash
|
|
@@ -158,8 +133,6 @@ export XUNFEI_API_SECRET=xxx
|
|
|
158
133
|
|
|
159
134
|
### 语速选项
|
|
160
135
|
|
|
161
|
-
在引导流程中可选择语速:
|
|
162
|
-
|
|
163
136
|
| 语速 | 值 | 适用场景 |
|
|
164
137
|
|------|-----|----------|
|
|
165
138
|
| 非常慢 | 0.5 | 初学者跟读 |
|
package/README_EN.md
CHANGED
|
@@ -22,16 +22,6 @@
|
|
|
22
22
|
- ffmpeg (for audio synthesis)
|
|
23
23
|
- Discord Bot (or other IM channel)
|
|
24
24
|
|
|
25
|
-
**System Dependencies:**
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# macOS
|
|
29
|
-
brew install ffmpeg python3
|
|
30
|
-
|
|
31
|
-
# Ubuntu/Debian
|
|
32
|
-
sudo apt-get install ffmpeg python3 python3-venv
|
|
33
|
-
```
|
|
34
|
-
|
|
35
25
|
### Installation
|
|
36
26
|
|
|
37
27
|
**Option 1: npm (Recommended)**
|
|
@@ -46,25 +36,10 @@ Installation runs automatically, skill will be installed to `~/.openclaw/skills/
|
|
|
46
36
|
|
|
47
37
|
```bash
|
|
48
38
|
cd ~/.openclaw/skills/
|
|
49
|
-
git clone
|
|
50
|
-
cd temp-skills
|
|
51
|
-
git sparse-checkout set eng-lang-tutor
|
|
52
|
-
mv eng-lang-tutor ../eng-lang-tutor
|
|
53
|
-
cd .. && rm -rf temp-skills
|
|
39
|
+
git clone https://github.com/rookiestar/eng-lang-tutor.git
|
|
54
40
|
pip install -r eng-lang-tutor/requirements.txt
|
|
55
41
|
```
|
|
56
42
|
|
|
57
|
-
**Manual Dependency Installation (if needed):**
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
# Create Python virtual environment
|
|
61
|
-
python3 -m venv ~/.venvs/eng-lang-tutor
|
|
62
|
-
source ~/.venvs/eng-lang-tutor/bin/activate # Linux/macOS
|
|
63
|
-
|
|
64
|
-
# Install dependencies
|
|
65
|
-
pip install -r ~/.openclaw/skills/eng-lang-tutor/requirements.txt
|
|
66
|
-
```
|
|
67
|
-
|
|
68
43
|
**Verify Installation:**
|
|
69
44
|
|
|
70
45
|
```bash
|
|
@@ -158,8 +133,6 @@ export XUNFEI_API_SECRET=xxx
|
|
|
158
133
|
|
|
159
134
|
### Speed Options
|
|
160
135
|
|
|
161
|
-
During onboarding, you can choose speech speed:
|
|
162
|
-
|
|
163
136
|
| Speed | Value | Use Case |
|
|
164
137
|
|-------|-------|----------|
|
|
165
138
|
| Very Slow | 0.5 | Beginner shadowing |
|
package/SKILL.md
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: eng-lang-tutor
|
|
3
|
-
description:
|
|
4
|
-
地道美式英语导师 - 提供每日知识点、Quiz测验等学习内容。
|
|
5
|
-
支持游戏化学习(XP/连胜/等级/徽章)。
|
|
6
|
-
触发场景:学习英语、英语知识点、Quiz、错题本、学习进度。
|
|
7
|
-
被 cron job 调用以实现定期内容推送。
|
|
3
|
+
description: "地道美式英语导师 - 提供每日知识点、Quiz测验等学习内容。支持游戏化学习(XP/连胜/等级/徽章)。触发场景:学习英语、英语知识点、Quiz、错题本、学习进度。被 cron job 调用以实现定期内容推送。【⛔重要:引导流程固定7步,显示为 Step 1/7 到 Step 7/7,绝不可显示 Step X/6】"
|
|
8
4
|
---
|
|
9
5
|
|
|
10
6
|
# American English Tutor
|
|
11
7
|
|
|
8
|
+
> **⛔ ONBOARDING = 7 STEPS** (Step 1/7 through Step 7/7). NEVER display "Step X/6"!
|
|
9
|
+
|
|
12
10
|
## Overview
|
|
13
11
|
|
|
14
12
|
Teaches authentic American English expressions, avoiding Chinglish patterns.
|
package/package.json
CHANGED
|
@@ -314,10 +314,13 @@
|
|
|
314
314
|
|
|
315
315
|
After user confirms with "yes" or "1", MUST execute the following bash commands to create cron jobs:
|
|
316
316
|
|
|
317
|
+
**CRITICAL: Capture the current channel ID from the message context and include it in the cron job command.**
|
|
318
|
+
|
|
317
319
|
```bash
|
|
318
320
|
# Parse times from schedule
|
|
319
321
|
KEYPOINT_TIME="06:45" # Default, replace with user's keypoint_time
|
|
320
322
|
QUIZ_TIME="22:45" # Default, replace with user's quiz_time
|
|
323
|
+
CHANNEL_ID="<current_channel_id>" # Get from message context (e.g., Discord channel ID)
|
|
321
324
|
|
|
322
325
|
# Extract hour and minute
|
|
323
326
|
KEYPOINT_HOUR=$(echo $KEYPOINT_TIME | cut -d: -f1)
|
|
@@ -325,15 +328,29 @@ KEYPOINT_MIN=$(echo $KEYPOINT_TIME | cut -d: -f2)
|
|
|
325
328
|
QUIZ_HOUR=$(echo $QUIZ_TIME | cut -d: -f1)
|
|
326
329
|
QUIZ_MIN=$(echo $QUIZ_TIME | cut -d: -f2)
|
|
327
330
|
|
|
328
|
-
# Create cron jobs using openclaw
|
|
331
|
+
# Create cron jobs using openclaw with channel parameter
|
|
329
332
|
# Keypoint job
|
|
330
|
-
${KEYPOINT_MIN} ${KEYPOINT_HOUR} * * * openclaw system event --text "Use eng-lang-tutor skill. Push today's keypoint." --mode now
|
|
333
|
+
${KEYPOINT_MIN} ${KEYPOINT_HOUR} * * * openclaw system event --text "Use eng-lang-tutor skill. Push today's keypoint." --mode now --channel ${CHANNEL_ID}
|
|
331
334
|
|
|
332
335
|
# Quiz job
|
|
333
|
-
${QUIZ_MIN} ${QUIZ_HOUR} * * * openclaw system event --text "Use eng-lang-tutor skill. Push today's quiz invitation." --mode now
|
|
336
|
+
${QUIZ_MIN} ${QUIZ_HOUR} * * * openclaw system event --text "Use eng-lang-tutor skill. Push today's quiz invitation." --mode now --channel ${CHANNEL_ID}
|
|
334
337
|
```
|
|
335
338
|
|
|
336
339
|
**IMPORTANT:** The cron job creation requires:
|
|
337
|
-
1.
|
|
338
|
-
2.
|
|
339
|
-
3.
|
|
340
|
+
1. Capture `channel_id` from the current message context (where user is doing onboarding)
|
|
341
|
+
2. Save `channel_id` to `state.json schedule.channel_id`
|
|
342
|
+
3. Parse user's `keypoint_time` and `quiz_time` from state.json schedule
|
|
343
|
+
4. Execute the bash command to register each cron job with `--channel` parameter
|
|
344
|
+
5. Log the event using `state_manager.py append_event`
|
|
345
|
+
|
|
346
|
+
**State Update:**
|
|
347
|
+
```json
|
|
348
|
+
{
|
|
349
|
+
"schedule": {
|
|
350
|
+
"keypoint_time": "06:45",
|
|
351
|
+
"quiz_time": "22:45",
|
|
352
|
+
"timezone": "Asia/Shanghai",
|
|
353
|
+
"channel_id": "123456789012345678"
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
```
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"onboarding_step": {
|
|
20
20
|
"type": "integer",
|
|
21
21
|
"minimum": 0,
|
|
22
|
-
"maximum":
|
|
22
|
+
"maximum": 7,
|
|
23
23
|
"default": 0,
|
|
24
|
-
"description": "Current onboarding step (0=not started,
|
|
24
|
+
"description": "Current onboarding step (0=not started, 7=complete)"
|
|
25
25
|
},
|
|
26
26
|
"completion_status": {
|
|
27
27
|
"type": "object",
|
|
@@ -64,6 +64,11 @@
|
|
|
64
64
|
"type": "string",
|
|
65
65
|
"default": "Asia/Shanghai",
|
|
66
66
|
"description": "Timezone for schedule"
|
|
67
|
+
},
|
|
68
|
+
"channel_id": {
|
|
69
|
+
"type": ["string", "null"],
|
|
70
|
+
"default": null,
|
|
71
|
+
"description": "Channel ID for scheduled pushes (captured during onboarding)"
|
|
67
72
|
}
|
|
68
73
|
},
|
|
69
74
|
"description": "User's preferred schedule for content delivery"
|
|
@@ -153,6 +158,47 @@
|
|
|
153
158
|
}
|
|
154
159
|
}
|
|
155
160
|
},
|
|
161
|
+
"tts_settings": {
|
|
162
|
+
"type": "object",
|
|
163
|
+
"description": "TTS voice and speed configuration",
|
|
164
|
+
"properties": {
|
|
165
|
+
"enabled": {
|
|
166
|
+
"type": "boolean",
|
|
167
|
+
"default": true,
|
|
168
|
+
"description": "Whether voice teaching is enabled"
|
|
169
|
+
},
|
|
170
|
+
"provider": {
|
|
171
|
+
"type": "string",
|
|
172
|
+
"enum": ["edge-tts", "xunfei"],
|
|
173
|
+
"default": "edge-tts",
|
|
174
|
+
"description": "TTS provider to use"
|
|
175
|
+
},
|
|
176
|
+
"speed": {
|
|
177
|
+
"type": "number",
|
|
178
|
+
"enum": [0.5, 0.7, 0.9, 1.3, 1.7],
|
|
179
|
+
"default": 0.9,
|
|
180
|
+
"description": "Speech speed: 0.5=very slow, 0.7=slow, 0.9=normal(recommended), 1.3=fast, 1.7=very fast"
|
|
181
|
+
},
|
|
182
|
+
"voices": {
|
|
183
|
+
"type": "object",
|
|
184
|
+
"description": "Voice mappings for different roles",
|
|
185
|
+
"properties": {
|
|
186
|
+
"narrator": {
|
|
187
|
+
"type": "string",
|
|
188
|
+
"description": "Narrator voice (female by default)"
|
|
189
|
+
},
|
|
190
|
+
"dialogue_a": {
|
|
191
|
+
"type": "string",
|
|
192
|
+
"description": "Dialogue A voice (male by default)"
|
|
193
|
+
},
|
|
194
|
+
"dialogue_b": {
|
|
195
|
+
"type": "string",
|
|
196
|
+
"description": "Dialogue B voice (female by default)"
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
},
|
|
156
202
|
"progress": {
|
|
157
203
|
"type": "object",
|
|
158
204
|
"required": ["total_quizzes", "correct_rate", "last_study_date"],
|