CLM - Coding-Academy Lecture Manager
Version: 1.29.0 | License: MIT | Python: 3.12, 3.13, 3.14
CLM is a course content processing system that converts educational materials (Jupyter notebooks, PlantUML diagrams, Draw.io diagrams) into multiple output formats.
Quick Start
Installation
# Install from PyPI
pip install coding-academy-lecture-manager
# Or with all optional dependencies (workers, TUI, web dashboard)
pip install "coding-academy-lecture-manager[all]"
For development, clone the repository and install in editable mode:
git clone https://github.com/hoelzl/clm.git
cd clm
pip install -e ".[all]"
Basic Usage
# Convert a course
clm build /path/to/course.xml
# Watch for changes and auto-rebuild
clm build /path/to/course.xml --watch
# Show help
clm --help
Features
- Multiple Output Formats: HTML slides, Jupyter notebooks, extracted code
- Multi-Language Notebooks: Python, C++, C#, Java, TypeScript, Markdown
- Diagram Support: PlantUML and Draw.io conversion
- Multiple Output Targets: Separate student/solution/instructor outputs
- Shared-Source Includes: Declare
<include source="…" as="…"/>on a<topic>or<section>to splice a canonical Python package (or any file/directory) into multiple topics at build time.clm course sync-includesmaterializes the same sources on disk so local notebook execution (VS Code, JupyterLab) finds them, with a.clm-includeledger for safe cleanup. - Output-Write Deduplication: When the same file is written to the same output path by multiple producers, CLM deduplicates the write and surfaces a
output_dedup_count/output_conflictssummary so you can spot accidental cross-topic collisions. - Watch Mode: Auto-rebuild on file changes
- Incremental Builds: Content-based caching
- LLM Summaries: Generate course summaries with
clm export summaryusing any OpenAI-compatible LLM API - Recording Management: Manage video recording workflows with pluggable backends — local ONNX pipeline, iZotope RX 11 external tool, or Auphonic cloud processing — plus assembly, job tracking, and per-course status (
clm recordings) - MCP Server: Model Context Protocol server for AI-assisted slide authoring (
clm mcp) with 16 tools for course navigation, validation, normalization, and bilingual editing - Slide Authoring Tools: Split-deck authoring sync (
clm slides sync— the funnel that keeps both halves of a.de/.enpair consistent), topic resolution (clm course resolve-topic), fuzzy search (clm slides search), spec/slide validation (clm validate), normalization (clm slides normalize), bilingual language view (clm slides language-view), voiceover extraction (clm voiceover extract), LLM-driven voiceover coverage check (clm slides coverage), bilingual ↔ per-language file conversion (clm slides split/clm slides unify), and structured JSON outlines (clm export outline --format json). Lower-level plumbing (clm slides assign-ids,clm slides suggest-sync) stays available by name for scripts and agents. - Video Narration Harvest: Recover spoken narration from recorded videos into slide decks (
clm harvest) — an agent-first report → task → accept loop over the deterministic transcribe/detect/match/align pipeline, with multi-part recordings, caching, and a legacy embedded-LLM one-shot (clm harvest autopilot) - LLM Polish: Clean up speaker notes with LLM-powered text polishing (
clm polish) - Git Integration: Manage output repos with
clm git init/sync/status, including--amendand--force-with-leasefor iterative workflows - Flexible Remote URLs: Configurable git remote URL templates for SSH, custom hosts, etc.
Documentation
For Users:
- User Guide - Complete usage guide
- Quick Start - Build your first course
- Spec File Reference - Course XML format
- Configuration - Configuration options
- Changelog - Version history
For Developers:
- Contributing Guide - How to contribute
- Developer Guide - Development documentation
- Architecture - System design
- AGENTS.md - AI assistant reference (imported by
CLAUDE.mdfor Claude Code)
Development Setup
# Install pre-commit hooks (recommended)
uv run pre-commit install
# This enables automatic linting (ruff) and type checking (mypy) on every commit
Testing
# Run unit tests
pytest
# Run all tests (unit, integration, e2e)
pytest -m ""
# Run with coverage
pytest --cov=src/clm
License
MIT License - see LICENSE for details.
Links
- Repository: https://github.com/hoelzl/clm/
- Issues: https://github.com/hoelzl/clm/issues
Release files for coding-academy-lecture-manager 1.29.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| coding_academy_lecture_manager-1.29.0.tar.gz | 3.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| coding_academy_lecture_manager-1.29.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 5.8 MB
Release files / coding_academy_lecture_manager-1.29.0.tar.gz
| Download URL | coding_academy_lecture_manager-1.29.0.tar.gz |
|---|---|
| Size | 3.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
522374a67ba4f48e85073ea9b7b3c620c4cb74925dc932fdd4f13fb0c867e2f7
|
|
BLAKE2b-256 checksum How to use checksums |
b4a302789bd48c5ec49f7bf32e21a8582d15ef91c7a9169832c509dc311e1a63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / coding_academy_lecture_manager-1.29.0-py3-none-any.whl
| Download URL | coding_academy_lecture_manager-1.29.0-py3-none-any.whl |
|---|---|
| Size | 2.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a2c309de679fb402ac4c8931efd1bde566d7e48d877ce5b167f1dd9f401917b1
|
|
BLAKE2b-256 checksum How to use checksums |
8a82e7d69beee2fb94eea97c0800dea329ad69ac295ae6e4a014cc3e77ec214f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|