Skip to content
gevicoPublic

About

Create and record lessons from Markdown.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Coach:用 Markdown 编写板书,按照节奏展开讲解

快速开始 · CNB Workspace · 编写内容 · 演讲与录制 · 命令文档

Markdown 编写   /   逐步展示   /   同步口播   /   PDF · SVG 导出

Coach 画布:分栏内容、重点标记、代码和表格

Coach 将文字、图片、代码和表格排布在同一张画布上。栏目从左向右排列,内容从上向下展开;使用方向键控制进度,摄像头自动跟随当前内容。

工具栏的调色板提供默认板书、现代排版、暗色光点、纸色演播室、深色演示和墨绿黑板主题。主题包含配色、标题排版与入场效果,也可以单独选择五种入场效果。内容插件支持原生 Mermaid、KaTeX、HTML / GSAP / WebGL 场景和视频片段。动态图示与场景自动循环,视频提供播放与进度控制。查看展示语法,或运行 coach samples/classroom-effects.md --presenter。

代码镜像:CNB 仓库。GitHub Actions 在推送后同步分支和标签,也可以手动运行 Sync to CNB。同步使用仓库 Secret GIT_PASSWORD 保存 CNB 访问令牌,HTTPS 用户名为 cnb;目标仓库按 GitHub 分支内容强制更新。

快速开始

需要 Node.js ≥ 22.12 和 npm。

git clone https://github.com/gevico/coach.git
cd coach
npm ci
npm run build
npm link

保存下方示例为项目根目录中的 lesson.md,然后打开:

coach lesson.md
coach lesson.md --presenter

命令会启动本地服务并打开浏览器。使用 Ctrl+C 停止服务;也可以通过 npm start -- lesson.md 启动。

开场默认显示板书大标题与前言,按右方向键进入正文。

通过 Makefile 安装环境并生成独立可执行文件:

make setup
make binary
make run FILE=samples/getting-started.md
make test
make check

build/coach 包含 CLI 与网页资源。环境安装、媒体工具安装和运行参数见命令文档。samples/ 提供文字、表格、代码、SVG 与 GIF 示例。

在 CNB Workspace 中使用

打开 CNB 仓库,启动云原生开发环境并进入 WebIDE。在终端中进入包含 package.json 的项目根目录,安装依赖并注册命令:

npm install
npm run build
npm link

使用 CNB 已有的 Node.js(≥22.12)和 npm。npm link 注册 coach 命令,可在工作空间的任意目录指定课程文件。

启动示例板书:

coach samples/getting-started.md --host 0.0.0.0 --port 4173 --presenter --no-open

保持该终端运行,按 Ctrl+C 停止服务。

在 WebIDE 中打开页面:

  1. 打开底部的 PORTS(端口) 面板。
  2. 添加端口 4173 的映射。
  3. 打开面板生成的访问地址。
  4. 在地址后添加 ?presenter=1,显示画布与同步口播。

CNB 端口预览要求服务监听 0.0.0.0,因此启动命令需要填写 --host 0.0.0.0。浏览器使用 PORTS 面板生成的地址;终端显示的 127.0.0.1 地址供工作空间内部访问。端口映射方式见 CNB 业务端口预览文档。

展示自己的课程时,把 Markdown 和相对路径引用的图片放入工作空间,然后指定文件路径:

coach "public/examples/我的课程.md" --host 0.0.0.0 --port 4173 --presenter --no-open

CNB 中可以逐步展示板书、阅读口播,并导出 PDF、SVG 和 Markdown。Mac 录制功能需要在 macOS 本地运行。

开发网页界面时启动 Vite:

npm run dev -- --host 0.0.0.0 --port 4173

开发页面通过界面的“导入”按钮选择 Markdown。使用 coach <file.md> 可以直接读取指定课程文件。

编写内容

根据资料生成课程时,可以使用 course-generation Skill。提供信息源、目标人群、学习效果和课程时长,生成板书、同步口播及本地素材,并检查展示步骤与讲述节奏。

一份 Markdown 同时保存板书和口播注释:

展开完整 Markdown 示例
# 从 Markdown 到画布
<!-- speaker: 今天演示怎样编写内容、逐步展示,并配合口播进行讲解。 -->

## 编写内容
<!-- speaker: 首先把需要展示的内容写进 Markdown。 -->

### 一份文件组织讲解
<!-- speaker: 标题决定栏目和板块,正文安排每一步要展示的内容。 -->

:highlight[文字、代码和表格]都可以放在画布上。
<!-- speaker: 内容保留在同一张画布上,讲解时逐项展开。 -->

- 使用 **粗体** 突出重点。
  <!-- speaker: 粗体使用 Markdown 的标准语法。 -->
- 使用 :circle[圈线] 标记关键词。
  <!-- speaker: 圈线在内容首次出现时绘制,完成后保持显示。 -->

## 逐步展示
<!-- speaker: 内容准备好以后,按照自己的节奏推进。 -->

### 让内容跟随讲解
<!-- speaker: 使用方向键切换,摄像头自动跟随当前内容。 -->

| 操作 | 效果 |
| --- | --- |
| → / ← | 展示下一步或返回 |
| 全部显示 | 查看完整画布 |
| 焦点缩放 | 放大当前关注的位置 |
<!-- speaker: 可以逐步讲解,也可以展开全貌。鼠标和触摸板控制平移与缩放。 -->

:shade[标准跟踪默认开启],新内容自动进入视野。
<!-- speaker: 新的标题靠近视口上方显示,并保留适当间距。 -->

## 配合口播
<!-- speaker: 演讲模式把板书和当前口播放在同一个窗口中。 -->

### 打开演讲模式
<!-- speaker: 添加 presenter 参数即可打开演讲布局。 -->

![Coach](./assets/readme/cover.svg)
<!-- speaker: 图片使用标准 Markdown 语法,可以填写本地路径或网络链接。 -->

```bash
coach lesson.md --presenter
```
<!-- speaker:
这条命令打开演讲模式。左上方是十六比九画布,右侧显示当前口播,下方预览下一步。

每按一次右方向键,新内容会出现在画布上,对应的口播也会同步切换。讲完当前部分,再继续展示下一步。

口播注释保存在同一个文件中。调整板书时,可以一起修改相关讲解内容。
-->

导出 **PDF、SVG 或 Markdown**,保存完整内容。
<!-- speaker: 讲解结束以后,可以导出完整画布,也可以保留 Markdown 继续编辑。 -->

# 设置板书大标题,## 创建栏目,### 创建板块。一级标题后的 preface: 注释设置前言正文,支持 Markdown 粗体和列表;未填写时显示开场口播。段落、顶层列表项、图片、代码块和表格分别构成展示步骤。

在独立的一行写入 <!-- pagebreak --> 开始下一张画布,沿用课程大标题;新的一级标题可以创建具有独立标题的画布。工具栏的左右按钮按 1 / 2 这样的页码切换画布,方向键控制内容步骤。完整示例见 multiple-canvases.md。

speaker: 注释显示在演讲模式的口播区域;注释附在对应内容之后,列表内按所属项目缩进。重点标记支持 :highlight[高亮]、:circle[圈线] 和 :shade[底部阴影]。

演讲与录制

Coach 演讲模式:16:9 画布、当前口播和下一步预览

演讲模式在左上方显示 16:9 画布,右侧显示当前口播,下方预览下一步。口播默认 16px,可以调整字号。

快捷键或手势 操作
→ / ← 下一步 / 上一步
P 切换演讲模式
F / Esc 进入禅模式 / 退出当前模式
鼠标拖动、触摸板滚动 平移画布
触摸板捏合、Ctrl / Meta + 滚动 围绕指针缩放

在 macOS 的演讲模式中,点击 Mac 录制,准备五秒后开始讲解。麦克风默认开启,保存时自动移除准备期间的画面与音频;默认保存到 ~/Movies/Coach,可以在界面或通过 --record-dir 指定目录。

首次录制需要 Apple Command Line Tools,以及终端的辅助功能、屏幕录制和麦克风权限。保存设置、独立口播文件与完整参数见 命令文档。

导出与开发

工具栏支持导出 PDF、SVG 和 Markdown。PDF、SVG 包含当前画布的全部内容;Markdown 保留板书内容和口播注释。网络图片导出需要图片服务器允许跨域读取。

npm run dev
npm run build
npm test

项目采用 MIT 许可证。中文字体采用 SIL Open Font License。

About

Create and record lessons from Markdown.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages