@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 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 --depth 1 --filter=blob:none --sparse https://github.com/rookiestar/Skills.git temp-skills
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 --depth 1 --filter=blob:none --sparse https://github.com/rookiestar/Skills.git temp-skills
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rookiestar/eng-lang-tutor",
3
- "version": "1.1.8",
3
+ "version": "1.2.0",
4
4
  "description": "English language tutor skill for OpenClaw - Learn authentic American English expressions with gamification",
5
5
  "keywords": [
6
6
  "english",
@@ -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. Parse user's `keypoint_time` and `quiz_time` from state.json schedule
338
- 2. Execute the bash command to register each cron job
339
- 3. Log the event using `state_manager.py append_event`
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": 6,
22
+ "maximum": 7,
23
23
  "default": 0,
24
- "description": "Current onboarding step (0=not started, 6=complete)"
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"],