CLM - Coding-Academy Lecture Manager
Version: 1.35.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
Metadata
Release files for coding-academy-lecture-manager 1.35.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 | Provenance | Actions |
|---|---|---|---|---|
| coding_academy_lecture_manager-1.35.0.tar.gz | 3.8 MB | Without provenance | Details for coding_academy_lecture_manager-1.35.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| coding_academy_lecture_manager-1.35.0-py3-none-any.whl | Python 3 | none | any | Details for coding_academy_lecture_manager-1.35.0-py3-none-any.whl |
Total release size: 6.3 MB
Release files / coding_academy_lecture_manager-1.35.0.tar.gz
| Download URL | coding_academy_lecture_manager-1.35.0.tar.gz |
|---|---|
| Size | 3.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
851ff26b7d9640b7af3a2cb650bf7e2f60b24a7bd22d617dfd3b9907cce4e668
|
|
BLAKE2b-256 checksum How to use checksums |
b594bf8e0736fe605173de215dd7c5cbdb1c7aab7bb1279be2310b35d05c2305
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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.35.0-py3-none-any.whl
| Download URL | coding_academy_lecture_manager-1.35.0-py3-none-any.whl |
|---|---|
| Size | 2.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
abbd5f35be8f40a1d4afd85c8e42f107d1f7a5fcee389f1833780e79bfb8af08
|
|
BLAKE2b-256 checksum How to use checksums |
97ab9b099ab14bba4fa29a6b8550ceeea7b9f398306312a21cc6c5cc769ee2bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","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}
|
Security for coding-academy-lecture-manager 1.35.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.