wy51ai
edulab
开源项目 wy51ai/edulab 的站内资料。
Documentation snapshot
README 快照
翻译暂时拿不到。
机器翻译的项目简介,仅供参考。原文在下方,也可以直接用浏览器自带的整页翻译 (Chrome / Edge 点地址栏右侧的翻译图标,或用右键菜单里的「翻译成中文」)。
下面正文是项目自己的英文 README。想读全文就用浏览器自带的整页翻译: Chrome / Edge 点地址栏右侧的翻译图标,或用右键菜单里的「翻译成中文」; 手机浏览器一般在菜单里。
本页保存的是公开项目资料快照,阅读过程不需要连接 GitHub。
edulab
简体中文 · English
A collection of education skills that turn academic problems into interactive lesson web pages and narrated explainer videos.
Install
Recommended — install with skills in one command:
npx skills add wy51ai/edulab
To update to the latest version later:
npx skills update
Note:
npx skills updateonly refreshes skills you’ve already installed — it does not pull in skills newly added to the repo. When this repo gains a new skill (e.g. a newedu-*), runnpx skills add wy51ai/edulabagain to install it.
Or use it as a Claude Code plugin marketplace:
/plugin marketplace add wy51ai/edulab
/plugin install edulab
Once installed, the skills activate on their trigger words, and can also be invoked manually.
Skill: edu-solid-geometry
图片:edu-solid-geometry demo
Solves one solid geometry problem into a self-contained interactive lesson page. Three entry points:
| Entry point | What it does |
|---|---|
| Text problem | Extracts the statement and solves directly |
| Image upload | Reads the problem from the image via vision, echoes it back for confirmation, then solves |
| Random problem | Solves with random parameters; re-rolls if the answer isn’t clean |
Problem types covered: line-plane angle, dihedral angle, angle between skew lines, point-to-plane distance, volume, and more — on cubes / cuboids, pyramids / prisms, cylinders / cones. All solved uniformly via the “coordinate system + vector method.”
Trigger words: solid geometry, line-plane angle, dihedral angle, angle between skew lines, distance to plane, interactive geometry solution page; 立体几何、线面角、二面角、异面直线、点到平面距离、正四棱锥、解这道几何题、随机出一道立体几何题、这张图里的立体几何题, etc.
Dependency
The compute core lib/geometry_kernel.py depends on sympy. Use any python3 that can import sympy:
python3 -m pip install sympy # if sympy is missing
Generate from the command line (without Claude)
cd skills/edu-solid-geometry
python3 scripts/generate.py cube ./cube.html # cube · line-plane angle
python3 scripts/generate.py box ./box.html # cuboid · volume
python3 scripts/generate.py random 7 ./random.html # random problem (seed=7)
python3 lib/geometry_kernel.py # kernel built-in self-check
If you don’t pass an output path, it writes to the current working directory (cwd).
Skill: edu-analytic-geometry
图片:edu-analytic-geometry demo
Solves one analytic geometry (conic sections) problem into a self-contained interactive lesson page. Same three entry points as above (text / image / random). Built on a 2D Canvas board + KaTeX with a generic, data-driven interactive engine: a parameter slider drives derived constructions (line∩conic, point-on-conic, central reflection, tangent…) and live readouts, with a theoretical-range bar or a fixed-value indicator.
Problem types covered: standard equation, chord length, dot-product range / fixed value, triangle-area extremum, fixed point, fixed value (slope product), locus, tangent, eccentricity — on ellipses / hyperbolas / parabolas / circles. All solved uniformly via “parametrized line x = my + c + system + Vieta’s formulas + substitution.”
A correctness note baked into the kernel: open/closed interval endpoints are decided by whether a real line attains them, so the boxed answer always matches what the interactive tool shows (e.g. the ellipse
MA·MBrange is the closed[-3, 7/4]— slide θ to 0° and you read exactly −3).
Trigger words: analytic geometry, conic sections, ellipse, hyperbola, parabola, chord length, dot product range, fixed point, fixed value, locus, eccentricity, interactive analytic geometry solution page; 解析几何、圆锥曲线、椭圆、双曲线、抛物线、焦点弦、向量数量积取值范围、定点问题、定值问题、斜率之积、三角形面积最值、轨迹方程、离心率, etc.
Dependency
The compute core lib/analytic_kernel.py depends on sympy (same as above).
Generate from the command line (without Claude)
cd skills/edu-analytic-geometry
python3 scripts/generate.py list # list registered problem types
python3 scripts/generate.py ellipse_dot_range ./sol.html # ellipse · MA·MB range [-3, 7/4]
python3 scripts/generate.py parabola_dot_const ./sol.html # parabola focal chord · OA·OB ≡ -3
python3 scripts/generate.py all ./out_dir # all registered types
python3 lib/analytic_kernel.py # kernel built-in self-check
Like above, no output path → writes to the current working directory (cwd).
Skill: edu-chem-reaction
图片:edu-chem-reaction demo
Turns one chemical reaction into a self-contained microscopic 3D demonstration page: an interactive Three.js molecular animation (drag the slider to watch bonds break / form and atoms recombine, with step highlighting) next to the KaTeX equation, step-by-step narration, an atom-conservation counter, and an optional energy–reaction-coordinate curve. Same three entry points (text / image / random).
Two engines, auto-selected — one renderer with two per-frame position resolvers, sharing the bond-diff drawing, labels, overlays and UI:
| Engine | For | Emphasizes |
|---|---|---|
| morph | combustion, combination / decomposition / displacement, redox | atoms fly to new partners — atom conservation & recombination |
| mechanism | organic mechanisms (esterification…) with catalyst · transition state · leaving groups | rigid fragments move through keyframes — the mechanism |
sympy-driven correctness: auto-balances the equation (integer coefficients from the matrix null space), validates the atom map (a bijection between reactant and product atoms) and conservation, and derives which bonds break / form from the before↔after difference — equation, geometry and counters all share one source.
Hybrid geometry: a built-in VSEPR molecule library by default; if RDKit is installed it can build conformers from SMILES (never installs it automatically).
Reactions covered: methane / hydrogen combustion, water electrolysis, Na + Cl₂ redox (with an electron-transfer overlay), glucose aerobic oxidation, and the esterification mechanism — spanning junior-high basics, senior inorganic redox, and organic mechanisms.
Trigger words: chemistry reaction, microscopic / molecular animation, combustion, electrolysis, redox electron transfer, esterification mechanism, bond breaking and forming, atom conservation, balance equation, interactive chemistry reaction page; 化学反应、微观演示、分子动画、燃烧、电解水、氧化还原、电子转移、酯化反应、断键成键、原子守恒、化学方程式配平 etc.
Dependency
The compute core lib/reaction_kernel.py depends on sympy (same as above). RDKit is optional — used only if already installed, never installed automatically.
Generate from the command line (without Claude)
cd skills/edu-chem-reaction
python3 scripts/generate.py list # list registered reactions
python3 scripts/generate.py combustion_ch4 ./reaction.html # methane combustion (morph · flame)
python3 scripts/generate.py esterification ./reaction.html # esterification (mechanism · catalyst)
python3 scripts/generate.py random 7 ./random.html # random reaction (seed=7)
python3 lib/reaction_kernel.py # kernel built-in self-check
Like above, no output path → writes to the current working directory (cwd).
Skill: edu-math-video
图片:edu-math-video demo
Turns one math problem (geometry, algebra, functions, motion problems…) into a 16:9 1920×1080 explainer MP4: Chinese voice-over (Zhipu GLM-TTS), bilingual zh + en subtitles (.srt too), and hand-drawn notebook-style canvas animation driven by the narration timeline. Input is a problem screenshot or plain text.
The picture explains the step: every narration line gets a “point → move → keep” action on the figure (equal segments slide onto each other, congruent triangles overlay, the 3D camera tweens to a top view, a cone unrolls into a sector…) — timed by S.at(k, f) (a fraction into line k), never by hard-coded seconds. A motion check rejects static lines.
Pipeline (one folder per video, created in the user’s current directory):
script.json ──build_audio.py──► timeline.json + mix.wav + .srt (GLM-TTS + synthesized music)
anim.js + engine.js ──node render.mjs video──► .mp4 (Playwright + ffmpeg, 30 fps)
Guard rails: the first scene shows the original problem with each condition boxed as it is read; tts text must be speakable Chinese (no digits / math symbols); polyphones are pinned (长[cháng], shared pron.json lexicon) and --check must report 0 before any paid TTS call; a free --preview + contact-sheet review comes before real audio; --asr transcribes the audio back to catch misread letters.
Trigger words: math explainer video, walkthrough video, problem-solving video, micro-lesson; 讲解视频、解题视频、例题精讲、微课 etc.
Dependency
- Python 3 with
numpy requests pypinyin pillow; Node.js 18+ withplaywright+ffmpeg-static(installed once in the workspace —scripts/new_video.shwrites thepackage.json); Google Chrome or Playwright Chromium. - A Zhipu
GLM_API_KEYprovided by you, in~/.config/math-problem-video/.env(seereference/glm-tts-setup.md).
Run the pipeline by hand (without Claude)
bash skills/edu-math-video/scripts/new_video.sh "$PWD" my_problem # scaffold from template/
bash skills/edu-math-video/scripts/setup_check.sh my_problem # must print ALL OK
cd my_problem
python3 build_audio.py --check # script + pronunciation lint (free)
python3 build_audio.py --preview && node render.mjs motion && node render.mjs stills auto
python3 build_audio.py && node render.mjs video 6 # real TTS, then render (6 = parallel pages)
How it works
- Get a problem spec — normalize all three entry points into a structured description (body type and dimensions, given conditions, the quantity asked, language).
- Exact kernel computation — sympy computes exact coordinates, key vectors, normals, the final answer, and every intermediate value (as LaTeX strings). Never by hand.
- Assemble and inject the template — feed the
lesson/steps/modeldata into the data-driven templatetemplate/lesson.html; 3D vertex coordinates come fromkernel.to_three(...), sharing the same source as the solution. - Self-check — kernel answer == answer card == final value shown in the last step; a local static server + preview check confirms no console errors and correct formula/highlight rendering.
- Deliver — the finished page is written to the user’s current working directory, named like
solution-.html.
Project structure
edulab/
├── .claude-plugin/
│ ├── plugin.json # plugin metadata
│ └── marketplace.json # marketplace manifest
├── index.html # finished sample (quad pyramid · line-plane angle)
└── skills/
├── edu-solid-geometry/ # solid geometry — 3D (Three.js) + MathJax
│ ├── SKILL.md
│ ├── template/lesson.html # data-driven template (generic 3D renderer + data island)
│ ├── lib/
│ │ ├── geometry_kernel.py # sympy exact-computation core
│ │ └── bodies.py # edge-topology library for solids
│ ├── scripts/generate.py
│ ├── output/
│ └── references/ # problem-schema.md · conventions.md
├── edu-analytic-geometry/ # analytic geometry / conics — 2D (Canvas) + KaTeX
│ ├── SKILL.md
│ ├── template/board.html # data-driven template (generic 2D renderer + param engine)
│ ├── lib/
│ │ ├── analytic_kernel.py # sympy exact-solver core (system · Vieta · range · fixed value)
│ │ └── conics.py # conic-section definition library
│ ├── scripts/generate.py
│ ├── output/
│ └── references/ # problem-schema.md · conventions.md
├── edu-chem-reaction/ # chemistry reactions — 3D (Three.js) + KaTeX
│ ├── SKILL.md
│ ├── template/reaction.html # data-driven template (unified renderer + dual engine + data island)
│ ├── lib/
│ │ ├── reaction_kernel.py # sympy balancing + conservation/atom-map check + bond-diff + assembly
│ │ └── molecules.py # VSEPR molecule-geometry library
│ ├── scripts/generate.py
│ ├── output/
│ └── references/ # problem-schema.md · conventions.md
└── edu-math-video/ # math explainer videos — GLM-TTS + canvas animation → MP4
├── SKILL.md
├── template/ # runnable sample project (engine.js · anim.js · build_audio.py · render.mjs)
├── shared/ # pron.py + pron.json — shared pronunciation lexicon
├── scripts/ # new_video.sh · setup_check.sh · problem image & contact-sheet tools
├── examples/cone-parallel/ # solid-geometry example (camera tween · cone unrolling)
└── reference/ # TTS setup · script writing · pronunciation · visual design · animation API
Extending
edu-solid-geometry
- Add a problem type: add a solver function in
geometry_kernel.py(see the recipe table inreferences/conventions.md), then add abuild_*ingenerate.py. - Add a solid: add a coordinate-construction function in
geometry_kernel.py, then add its edge topology inbodies.py.
edu-analytic-geometry
- Add a problem type: add a target-quantity function in
analytic_kernel.pyand reuserange_over_m/is_constant_in_m, then add abuild_*ingenerate.py(pick an interaction: range bar / fixed value / fixed point / locus trace). - Add a curve: ellipse / hyperbola / parabola / circle are built in; new curves go in
conics.pyand theboard.htmlengine.
edu-chem-reaction
- Add a reaction: add a
build_*ingenerate.py(high-levelspecies + atom_map, or low-levelatoms + fragmentsfor mechanisms) and register it inREGISTRY. - Add a molecule / ion: add an entry in
lib/molecules.py(VSEPR geometry + display metadata + internal bonds).
edu-math-video
- New problem: never edit
engine.js; write the per-problemscript.json/storyboard.md/anim.js, and add new figure helpers insideanim.js. - Fix a reading: add the word to
shared/pron.json(words/ok) — one lexicon shared by every video.
License
Apache-2.0
Author
WY · @akokoi1
Star History
Official distribution
获取与安装
暂未发现可确认的官方软件包地址
当前 README 快照没有出现 npm、PyPI、Crates.io、pub.dev 等官方包页链接。本站不会根据仓库名称猜测下载地址。
本站不托管项目文件;需要安装时,请以项目维护者发布的官方文档为准。
Before installing
使用前核验
本站保存公开资料用于阅读,不代表安全审计或功能背书。安装前请核对许可证、依赖来源和发布签名,不要直接运行来源不明的二进制文件或高权限脚本。