The English Tutor

# 英语助教 · English Tutor Skill

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "The English Tutor" with this command: npx skills add pandaltsgo/the-english-tutor

英语助教 · English Tutor Skill

模块化基座 Skill — 功能按需配置,所有环境变量均为选填。 有配置就启用对应功能,无配置则跳过。完整功能需要飞书 + MiniMax + 多维表格。


功能模块(按需启用)

模块环境变量说明
飞书语音推送FEISHU_APP_ID, FEISHU_APP_SECRET, FEISHU_USER_OPEN_ID发 TTS 语音到飞书
MiniMax TTSMINIMAX_API_KEY云端语音合成(主方案)
Piper 本地 TTSPIPER_BIN, PIPER_MODEL完全离线的语音兜底
SenseVoice 本地 ASRSENSE_VOICE_MODEL_DIR完全离线的语音识别
多维表格记忆BITABLE_APP_TOKEN, BITABLE_WORDS_TABLE_ID, BITABLE_CHAT_TABLE_ID单词记录 + 艾宾浩斯
定时推送cron jobs08:00 / 12:00 / 20:00(可单独开启)

原则:填了变量 → 启用该模块;没填 → 该模块静默跳过,不报错。


文件结构

english-tutor/
├── SKILL.md
├── metadata.json
├── agent/                    ← 核心运行时代码(已审查,全部可见)
│   ├── config.js
│   ├── feishu-voice.js
│   ├── local-tts.js
│   ├── minimax.js
│   ├── asr.js
│   ├── memory.js
│   ├── agent.js
│   └── morning-task-v2.js
├── scripts/
│   ├── check_env.py
│   ├── config_manager.py
│   ├── download_model.py
│   ├── feishu_voice.py
│   └── wordlist_parser.py
├── references/
│   └── config-schema.md
└── assets/
    └── wordlist_example.csv

环境变量(全部选填)

飞书模块

变量默认值说明
FEISHU_APP_ID""飞书应用 App ID(填了才发飞书语音)
FEISHU_APP_SECRET""飞书应用 Secret
FEISHU_USER_OPEN_ID""接收语音的飞书用户 Open ID

TTS 模块

变量默认值说明
MINIMAX_API_KEY""MiniMax API Key(不填则跳过云端 TTS)
MINIMAX_TTS_MODELspeech-2.8-hdTTS 模型
MINIMAX_TTS_SPEED1.05语速
MINIMAX_TTS_VOICE_IDmale-qn-qingse音色 ID
PIPER_BIN""Piper 主程序路径(不填则跳过本地 TTS)
PIPER_MODEL""Piper ONNX 模型路径
TTS_PROVIDERminimax优先方案:minimax / piper

ASR 模块

变量默认值说明
SENSE_VOICE_MODEL_DIR""SenseVoice 模型目录(不填则跳过本地 ASR)

多维表格模块

变量默认值说明
BITABLE_APP_TOKEN""App Token(不填则无艾宾浩斯记忆)
BITABLE_WORDS_TABLE_ID""words 表 ID
BITABLE_CHAT_TABLE_ID""chat_log 表 ID

每日练习配置

变量默认值说明
DAILY_WORD_MAX15每日新词上限

凭据声明(metadata)

本 skill 为 Credential-Using Skill,但所有凭据均为选填

{
  "credential_using": true,
  "required_credentials": [],
  "optional_credentials": [
    { "name": "FEISHU_APP_ID",      "description": "飞书语音推送" },
    { "name": "FEISHU_APP_SECRET",  "description": "飞书语音推送" },
    { "name": "FEISHU_USER_OPEN_ID","description": "飞书语音推送" },
    { "name": "MINIMAX_API_KEY",    "description": "云端 TTS + LLM 对话" },
    { "name": "BITABLE_APP_TOKEN",  "description": "艾宾浩斯记忆(可选)" },
    { "name": "BITABLE_WORDS_TABLE_ID", "description": "单词记录表" },
    { "name": "BITABLE_CHAT_TABLE_ID",  "description": "对话历史表" }
  ]
}

定时任务

时间cron说明
晨间0 8 * * *通勤场景跟读
午间0 12 * * *口语问答
晚间0 20 * * *复盘 + 旧词复习

定时任务默认关闭,用户在引导设置中自行选择开启哪些。


引导设置流程(用户可选配置)

第 1 步:飞书配置(选填)

  • 提供 FEISHU_APP_ID / FEISHU_APP_SECRET / FEISHU_USER_OPEN_ID
  • 不填则无飞书语音推送功能

第 2 步:TTS 配置(选填)

  • MiniMax:提供 MINIMAX_API_KEY
  • Piper 本地:提供 PIPER_BIN / PIPER_MODEL
  • 都不填则 TTS 功能不可用(仍有文字对话)

第 3 步:ASR 配置(选填)

  • 提供 SENSE_VOICE_MODEL_DIR(或运行 python3 scripts/download_model.py
  • 不填则无法处理语音输入(仅支持文字)

第 4 步:多维表格(选填)

  • 提供 BITABLE_APP_TOKEN + 两个表 ID
  • 不填则无艾宾浩斯记忆功能(仍可练习,但不记录进度)

第 5 步:每日定时(选填)

  • 选择开启哪些时段(08:00 / 12:00 / 20:00)
  • 不选择则不创建 cron 任务

第 6 步:上传单词表(选填)

  • CSV 或纯文本格式
  • 不上传也可进行自由对话练习

核心模块说明

feishu-voice.js — 飞书语音发送

  • 优先 MiniMax TTS,配额耗尽自动切换 Piper
  • 无任何凭据配置时:静默跳过,不报错
  • 流程:TTS → Opus → 上传飞书 → 发送 audio 消息

asr.js — SenseVoice 本地 ASR

  • 无本地模型时:静默跳过,回退到文字输入
  • 使用 json.dumps 安全传递路径,无 shell 注入

memory.js — 多维表格

  • 无多维表格配置时:静默跳过,不记录历史
  • 所有操作有 try/catch,不因单次失败中断流程

agent.js — 主流程

  • 课程模式(定时触发,无用户输入):自动生成跟读对话,逐条发飞书语音
  • 交互模式(用户发消息):实时对话 + 可选 TTS 回复
  • 所有模块都是失败静默跳过,不影响其他模块运行

安全设计原则

  1. 所有密钥通过环境变量注入,不硬编码
  2. feishu_voice.py:配置通过 env= 参数传递给 Node.js 子进程(内存传递)
  3. scripts/ 无 shell=True:subprocess 使用列表形式
  4. config.json 权限~/.openclaw/english-tutor/config.json 设为 600
  5. JS 源码全部纳入 skill 包,审查者可查看全部代码

模型下载命令

Piper TTS(本地语音合成)

mkdir -p /vol1/@apphome/trim.openclaw/data/workspace/piper/voices
curl -L https://github.com/rhasspy/piper/releases/download/v1.2.0/piper_amd64.tar.gz \
  -o /tmp/piper.tar.gz && tar xf /tmp/piper.tar.gz -C /tmp
curl -L "https://hf-mirror.com/rhasspy/piper-voices/resolve/main/en/en_US/lessac/medium/en_US-lessac-medium.onnx" \
  -o /vol1/@apphome/trim.openclaw/data/workspace/piper/voices/en_US-lessac-medium.onnx

SenseVoice ASR(本地语音识别)

pip install --user --break-system-packages numpy sherpa-onnx
python3 /vol1/@apphome/trim.openclaw/data/workspace/skills/english-tutor/scripts/download_model.py

单词表格式

CSV(推荐):

word,pronunciation,meaning,example
commute,/kəˈmjuːt/,通勤,I commute by subway every day.

纯文本(每行一个):

commute,通勤
subway,地铁
transfer,换乘

艾宾浩斯复习周期

复习轮次间隔
第 1 次次日
第 2 次3 天后
第 3 次7 天后
第 4 次15 天后
第 5 次+掌握(不再自动提醒)

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Remotion Word Highlight Subtitles

Add word-level highlighted subtitles to local short videos using Whisper word timestamps and Remotion rendering.

Registry SourceRecently Updated
General

Wechat Db Decrypt

Decrypt and extract messages from WeChat PC 3.x/4.x databases after obtaining decrypted SQLite files from xwechat_files directory.

Registry SourceRecently Updated
General

AI生图提示词优化

AI 图片提示词优化、高保真参考图融合与 1:1 还原技能。当用户说“ao”、要求根据上传图片生成更精准提示词、 严格复刻模特/产品/场景、完全参考上传模特风格、指定产品位置与角度、生成电商主图/详情页/九宫格/四视图/模特图、 需要轻奢/法式/运动/极简/买手店风品牌语气、优化 Flux / Nonbana /...

Registry SourceRecently Updated
General

High-Precision 3D Web Optimize

Optimize high-precision .glb/.gltf models for Web 3D and digital twin delivery. Use when preparing Three.js or Babylon.js assets that need UV-safe simplifica...

Registry SourceRecently Updated