upload-chapter-slides

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Upload Chapter Slides

上传章节幻灯片

Upload PDF teaching slides to CDN and update chapter README with proper metadata.
将PDF教学幻灯片上传至CDN,并使用正确的元数据更新章节README。

Usage

使用方法

/upload-chapter-slides <pdf-path> <chapter-number> [--title "Custom Title"] [--name custom-filename]
/upload-chapter-slides <pdf-path> <chapter-number> [--title "自定义标题"] [--name 自定义文件名]

Examples

示例

bash
undefined
bash
undefined

Basic usage - chapter number only

基础用法 - 仅指定章节号

/upload-chapter-slides /path/to/slides.pdf 4
/upload-chapter-slides /path/to/slides.pdf 4

With custom title

使用自定义标题

/upload-chapter-slides /path/to/slides.pdf 3 --title "Agentic AI - The Digital FTE"
/upload-chapter-slides /path/to/slides.pdf 3 --title "Agentic AI - 数字全职员工"

With custom filename (for CDN URL)

使用自定义文件名(用于CDN URL)

/upload-chapter-slides /path/to/slides.pdf 4 --name context-engineering-blueprint
undefined
/upload-chapter-slides /path/to/slides.pdf 4 --name context-engineering-blueprint
undefined

Workflow

工作流程

Step 1: Parse Arguments

步骤1:解析参数

Extract from user input:
  • pdf_path
    : Absolute path to PDF file (required)
  • chapter_num
    : Chapter number (required)
  • title
    : Optional custom title for slides
  • name
    : Optional custom filename for CDN
从用户输入中提取以下信息:
  • pdf_path
    : PDF文件的绝对路径(必填)
  • chapter_num
    : 章节号(必填)
  • title
    : 可选的幻灯片自定义标题
  • name
    : 可选的CDN自定义文件名

Step 2: Resolve Chapter Path

步骤2:解析章节路径

bash
undefined
bash
undefined

Find chapter folder by number

通过章节号查找章节文件夹

ls -d apps/learn-app/docs//[0-9][0-9]-/ | grep "/${CHAPTER_NUM}-|/${CHAPTER_NUM}[0-9]-"

Extract from path:
- Part number: First segment number (e.g., `01` from `01-General-Agents-Foundations`)
- Chapter folder: Full path to chapter directory

**Pattern**: `apps/learn-app/docs/{NN}-{PartName}/{NN}-{ChapterName}/`
ls -d apps/learn-app/docs//[0-9][0-9]-/ | grep "/${CHAPTER_NUM}-|/${CHAPTER_NUM}[0-9]-"

从路径中提取:
- 部分编号:路径的第一段编号(例如,从`01-General-Agents-Foundations`中提取`01`)
- 章节文件夹:章节目录的完整路径

**路径格式**:`apps/learn-app/docs/{NN}-{PartName}/{NN}-{ChapterName}/`

Step 3: Upload PDF

步骤3:上传PDF

Run from project root:
bash
cd apps/panaversity-fs-py && uv run python scripts/upload_asset.py \
  --file "{pdf_path}" \
  --type slides \
  --part {part_num} \
  --chapter {chapter_num} \
  --name {name_or_default}
Capture the CDN URL from output (format:
https://pub-*.r2.dev/books/ai-native-dev/static/slides/part-{N}/chapter-{NN}/{filename}.pdf
)
从项目根目录执行以下命令:
bash
cd apps/panaversity-fs-py && uv run python scripts/upload_asset.py \
  --file "{pdf_path}" \
  --type slides \
  --part {part_num} \
  --chapter {chapter_num} \
  --name {name_or_default}
捕获输出中的CDN URL(格式为:
https://pub-*.r2.dev/books/ai-native-dev/static/slides/part-{N}/chapter-{NN}/{filename}.pdf

Step 4: Update README Frontmatter

步骤4:更新README前置元数据

Read
{chapter_path}/README.md
and update YAML frontmatter:
If
slides:
exists
: Replace the entire slides block If
slides:
missing
: Add after
title:
line
yaml
slides:
  source: "{cdn_url}"
  title: "{title_or_chapter_title}"
  height: 700
读取
{chapter_path}/README.md
并更新YAML前置元数据:
slides:
已存在
:替换整个slides块
slides:
不存在
:添加在
title:
行之后
yaml
slides:
  source: "{cdn_url}"
  title: "{title_or_chapter_title}"
  height: 700

Step 5: Ensure Teaching Aid Heading

步骤5:确保教学辅助标题存在

Check if
## 📚 Teaching Aid
exists in README.
If missing: Add before
## What You'll Learn
(or first
##
heading if no What You'll Learn):
markdown
undefined
检查README中是否存在
## 📚 Teaching Aid
标题。
若不存在:添加在
## What You'll Learn
(如果没有该标题,则添加在第一个
##
标题之前):
markdown
undefined

📚 Teaching Aid

📚 Teaching Aid

What You'll Learn

What You'll Learn


**If exists**: No change needed.

**若已存在**:无需修改。

Step 6: Report Success

步骤6:反馈成功信息

✅ Chapter {N} slides uploaded

CDN URL: {cdn_url}
README:  {chapter_path}/README.md
Title:   {slides_title}
✅ 章节{N}幻灯片上传完成

CDN URL: {cdn_url}
README:  {chapter_path}/README.md
标题:   {slides_title}

Error Handling

错误处理

ErrorResolution
PDF file not foundVerify path exists
Chapter not foundRun
ls -d apps/learn-app/docs/*/
to list valid chapters
Upload failedCheck
apps/panaversity-fs-py/.env
configuration
README missingChapter may not be initialized
错误解决方法
PDF文件未找到验证路径是否存在
章节未找到运行
ls -d apps/learn-app/docs/*/
查看有效章节
上传失败检查
apps/panaversity-fs-py/.env
配置
README缺失章节可能未初始化

Path Constants

路径常量

PROJECT_ROOT: /Users/mjs/Documents/code/panaversity-official/tutorsgpt/agentfactory
DOCS_PATH:    apps/learn-app/docs
UPLOAD_SCRIPT: apps/panaversity-fs-py/scripts/upload_asset.py
PROJECT_ROOT: /Users/mjs/Documents/code/panaversity-official/tutorsgpt/agentfactory
DOCS_PATH:    apps/learn-app/docs
UPLOAD_SCRIPT: apps/panaversity-fs-py/scripts/upload_asset.py

README Structure Reference

README结构参考

Correct structure after skill runs:
yaml
---
sidebar_position: N
title: "Chapter N: Title"
slides:
  source: "https://pub-*.r2.dev/books/ai-native-dev/static/slides/part-N/chapter-NN/filename.pdf"
  title: "Slide Title"
  height: 700
---
技能执行后的正确结构如下:
yaml
---
sidebar_position: N
title: "Chapter N: Title"
slides:
  source: "https://pub-*.r2.dev/books/ai-native-dev/static/slides/part-N/chapter-NN/filename.pdf"
  title: "幻灯片标题"
  height: 700
---

Chapter N: Title

Chapter N: Title

[intro paragraphs]
[介绍段落]

📚 Teaching Aid

📚 Teaching Aid

What You'll Learn

What You'll Learn

[content]
undefined
[内容]
undefined