发布于 更新于 约 24 分钟读完 · 8,922 字

本文目录 69 节
  1. 1. 这个 Skill 是什么
  2. 2. 可以做什么
  3. 2.1 日常课程预告
  4. 2.2 课表临时变更
  5. 2.3 文本模板管理
  6. 2.4 海报模板管理
  7. 2.5 教师人物形象管理
  8. 2.6 PSD 处理和交付保护
  9. 3. 适用场景
  10. 4. 安装方式
  11. 4.1 推荐:安装到课程项目中
  12. 4.2 可选:安装到用户级 Skill 目录
  13. 4.3 Skill 文件结构
  14. 4.4 安装后验证
  15. 5. 依赖条件
  16. 5.1 必需依赖
  17. 5.2 Word 渲染依赖
  18. 5.3 Photoshop 依赖
  19. 5.4 可选依赖
  20. 6. 第一次使用时,用户需要提供什么
  21. 7. 推荐项目目录
  22. 8. 如何调用
  23. 8.1 完整制作
  24. 8.2 只制作基础信息
  25. 8.3 确认后继续
  26. 8.4 修改一门课程
  27. 8.5 指定模板
  28. 8.6 修改默认模板
  29. 8.7 添加新模板
  30. 8.8 设置人物文件夹
  31. 8.9 更换教师形象
  32. 8.10 验收并清理本次运行残留
  33. 9. 完整运行流程
  34. Stage 0:配置和运行记录
  35. Stage A:基础课程信息
  36. 课程变更防误改
  37. Stage B:课程详情
  38. Stage C:海报和 PSD
  39. 10. 课程详情别名
  40. 11. 海报排版保护
  41. 11.1 标题保护
  42. 11.1.1 模板二自适应软件栏与时间栏
  43. 11.2 课程目标安全区
  44. 11.3 PSD 可编辑等级
  45. 12. Photoshop UTF-8 作业方式
  46. 13. 文本模板规则
  47. 14. 人物形象规则
  48. 15. 最终交付条件
  49. 16. 常见问题
  50. 课表看不清怎么办
  51. 为什么同一班当天只记录了一门课
  52. 如何区分直播和录播
  53. 用户只修改直播/录播,没有说时间怎么办
  54. 模糊课程详情每次都要问吗
  55. Word 出现第 7 页只有一行怎么办
  56. 为什么同一周出现多个课程预告 Word
  57. 同一周已有一个带 _FINAL 后缀的 Word 怎么办
  58. 海报课程目标碰到日期怎么办
  59. 海报课程目标没有超出画布,但被内框或底部装饰挡住怎么办
  60. 海报课程标题没有居中怎么办
  61. 海报被命名为 c.png、final.png 怎么办
  62. 只有历史 PNG 可以做吗
  63. Photoshop 报中文乱码怎么办
  64. PNG 已完成但缺少 PSD 怎么办
  65. 为什么制作完成后还有工作 PSD
  66. 同一个课程找到了两个 PSD 怎么办
  67. 同一课程改了教师、课程目标或海报模板怎么办
  68. 17. 数据安全与注意事项
  69. 18. 本次优化后的关键变化

Kecheng-Yugao-Skill 使用说明书

Skill 名称:Kecheng-Yugao-Skill(内部调用 ID:kecheng-yugao-skill)
当前适用项目:课程预告文本与课程海报批量制作

自动触发条件:用户输入中只要包含“课程预告”“课程预告文本”或“课程预告海报”中的任一短语,就应自动调用本 Skill。也可以使用 $kecheng-yugao-skill 显式调用。

更新时间:2026-08-11

1. 这个 Skill 是什么

Kecheng-Yugao-Skill 用于把“查看课表、整理 Word 预告、补充课程详情、 修改课程海报、保存 PSD、检查成品”组织成一个有审批停点和质量检查的重复生产 流程。

它不是后台定时任务,也不会在无人确认的情况下自动发布内容。它由用户在 Codex 中主动调用,每次处理一个明确日期。

2. 可以做什么

2.1 日常课程预告

  • 检查 课表/ 中全部课表的目标日期;
  • 跳过当天没有课程的班级;
  • 提取班级、课程、讲师、直播/录播和时间;
  • 生成基础信息 Word,交用户确认后停止;
  • 确认后追加工具、作业和课程目标;
  • 同一周只维护一个规范命名的正式 Word,不在正式目录堆积基础版、待确认版或 FINAL/new/v2 副本;
  • 生成每门课程的 PNG 海报;
  • 每次制作时临时保存工作 PSD;
  • 每个标准化课程名称只长期保留一个可复用课程 PSD;
  • 已有课程 PSD 时不重复保存,只有新课程才新增 PSD;
  • 用户确认 Word 和海报可用后,安全清理本次完整运行目录及本次新增的 Photoshop 暂存文件;
  • 在交付前检查每张海报是否映射到正确的课程 PSD。

2.2 课表临时变更

适用于:

  • 直播改为录播;
  • 录播改为直播;
  • 教师临时替换;
  • 上课时间变化;
  • 课程名称调整。

Skill 会按“标准化班级+标准化课程名称”定位课程,不按 Word 段落序号修改。 修改后会比较前后 manifest,并检查是否误改了其他课程。

直播/录播和时间会一起展示。例如:

原状态:直播 19:30
新状态:录播 12:00

用户只说“改为录播”但没有可靠新时间时,Skill 会询问时间,不会自行推断。

2.3 文本模板管理

  • 从用户提供的新 DOCX 提取文本模板二、模板三;
  • 保存原 DOCX、可执行模板、模板合同、示例和说明;
  • 展示原样式与示例渲染结果;
  • 用户确认后才启用;
  • 新模板不会自动成为默认模板;
  • 用户可以明确指定本次模板或修改默认文本模板。

2.4 海报模板管理

  • 注册模板一、模板二、模板三;
  • 给某个课程、班级或直播状态分配固定模板;
  • 没有明确规则时使用当前默认海报模板;
  • 修改默认模板必须得到用户明确指令;
  • 编辑具体 PSD 前检查真实图层结构、标题容量和所需字体;
  • 支持同一海报模板按老师保存多个 PSD 变体;缺少目标老师版本时,默认停止;若模板契约已记录用户批准的基准 PSD 派生规则,则可从该基准仅替换人物和姓名后生成并登记;
  • 对位置锁定模板,只允许修改契约字段;模板二只允许调整三行主标题字号。

2.5 教师人物形象管理

  • 使用用户指定的教师人物参考文件夹;
  • 通用海报模板从该文件夹搜索并置入对应讲师 PNG;
  • 已登记的教师专属 PSD 先按老师精确选择;只有用户明确更换形象,或已批准从固定基准 PSD 派生新老师版本时,才替换人物;
  • 一个教师有多张图片时列出完整文件名,让用户选择;
  • PNG 背景不透明时先抠图;
  • 展示棋盘格、白底和深色底预览;
  • 用户确认后备份原图,再沿用原文件名替换;
  • 只使用人物主体,不把原图片背景、矩形底色或场景带入海报;
  • 禁止用错误老师的 PSD 顶替缺失的教师专属版本。

2.6 PSD 处理和交付保护

  • 通过 Photoshop 原生接口打开 PSD;
  • 检查课程标题、日期、时间、状态、课程目标和人物图层;
  • 修改副本,不覆盖历史 PSD;
  • 检查标题是否越界;
  • 检查标题与下方内容至少保留模板要求的间距;
  • 检查课程目标是否侵入右侧日期/时间安全区域;
  • 打开标题智能对象,以完整标准化课程名精确识别课程 PSD;
  • 课程名称相同且已有一个 PSD 时直接复用,不保存新的日期版本;
  • 一个课程匹配多个 PSD 时停止,不按文件名或修改时间猜测;
  • 批量发布前检查课程名与 PSD 的唯一映射;
  • 用户验收前保留完整运行证据;验收后删除本次日期的整个运行目录,并保留目录外清理报告。
  • Photoshop 暂存文件按“运行前基线差异”清理,只处理本次新增的 Photoshop Temp* / ~PST*.tmp;不会清空整个系统临时目录。

3. 适用场景

推荐在以下场景使用:

  1. 每天或每周固定制作课程预告;
  2. 多个班级使用不同课表,需要统一整理某一天课程;
  3. 课程介绍分散在多份历史 Word 中;
  4. 海报需要沿用旧设计,只替换课程文字、日期和时间;
  5. 不同课程需要使用不同版本的海报模板;
  6. 教师人物形象会新增或替换;
  7. 需要保留可编辑 PSD,但希望每门课程只长期保存一份;
  8. 需要防止课表临时变更误修改其他课程;
  9. 需要对新 Word 样式或新海报样式进行版本管理。

不适合的场景:

  • 在没有课表证据的情况下自动编造课程;
  • 没有 Photoshop 却要求无损修改复杂 PSD;
  • 只有扁平 PNG,却要求任意修改课程标题、人物和目标;
  • 完全取消用户确认,直接批量发布;
  • 作为 Windows 后台定时服务长期无人值守运行。

4. 安装方式

4.1 推荐:安装到课程项目中

把完整 Skill 文件夹放到项目根目录:

<项目根目录>/.codex/skills/kecheng-yugao-skill/

项目根目录就是「海报制作」课程资料库所在的文件夹(各机器位置不同,旧机器在桌面下),安装后是:

<项目根目录>\.codex\skills\kecheng-yugao-skill\

工作区安装适合本项目,因为 Skill 中的目录约定、模板注册表和项目设置都与该 课程资料库绑定。

4.2 可选:安装到用户级 Skill 目录

如果多个项目都要调用,可复制到:

C:\Users\<用户名>\.codex\skills\kecheng-yugao-skill\

不要同时保留名称相同但内容不同的工作区版和用户级版,否则 AI 可能读取到不一致 的版本。需要跨项目复用时,建议保留一份 Skill,并为每个项目建立独立的模板注册表 和 project-settings.json。

4.3 Skill 文件结构

kecheng-yugao-skill/
├─ SKILL.md
├─ 使用说明书.md
├─ agents/
│  └─ openai.yaml
├─ references/
│  ├─ data-contract.md
│  ├─ decision-rules.md
│  ├─ template-registry.md
│  ├─ text-template-workflow.md
│  ├─ weekly-document.md
│  ├─ teacher-assets.md
│  └─ photoshop-posters.md
└─ scripts/
   ├─ course_preview.py
   ├─ workflow_guardrails.py
   ├─ manifest_semantic_diff.py
   ├─ course_aliases.py
   ├─ docx_layout_guard.py
   ├─ manifest_finalize.py
   ├─ delivery_check.py
   ├─ weekly_document.py
   ├─ photoshop_inspect.ps1
   ├─ photoshop_inspect_smartobject.ps1
   ├─ photoshop_edit_poster.ps1
   ├─ photoshop_run_job.ps1
   └─ photoshop_pixel_slot_transplant.ps1

4.4 安装后验证

在项目根目录运行:

python .codex/skills/kecheng-yugao-skill/scripts/course_preview.py --help
python .codex/skills/kecheng-yugao-skill/scripts/workflow_guardrails.py --help
python .codex/skills/kecheng-yugao-skill/scripts/manifest_semantic_diff.py --help
python .codex/skills/kecheng-yugao-skill/scripts/docx_layout_guard.py --help
python .codex/skills/kecheng-yugao-skill/scripts/delivery_check.py --help
python .codex/skills/kecheng-yugao-skill/scripts/weekly_document.py --help

Skill 结构校验:

python -X utf8 <skill-creator目录>/scripts/quick_validate.py `
  .codex/skills/kecheng-yugao-skill

如果 Codex 提供 bundled workspace Python,应优先使用该 Python,不需要用户另外 创建虚拟环境。

5. 依赖条件

5.1 必需依赖

依赖用途
Codex Desktop 或可访问本地文件的 Codex 环境调用 Skill、查看课表和管理文件
Python 3.10 或更高版本manifest、模板、Word 和交付校验
python-docx读取和生成 DOCX
PillowPNG 透明度和人物素材检查
pypdf 或 PyMuPDF读取渲染后的 PDF,执行分页守卫
Windows PowerShell 5.1 或兼容 PowerShell调用 Photoshop 自动化脚本

PyYAML 只在运行 skill-creator/scripts/quick_validate.py 检查 Skill 结构时 需要,不参与日常课程制作。

独立 Python 环境缺少库时可安装:

python -m pip install python-docx Pillow pypdf PyYAML

5.2 Word 渲染依赖

至少需要以下一种:

  • Microsoft Word:Windows 推荐,能最大限度保留现有 DOCX 效果;
  • LibreOffice:可作为跨平台渲染方案。

如果两者都没有,AI 可以修改 DOCX,但不能完成可靠的逐页视觉验收,因此不应把 文本阶段报告为正式完成。

5.3 Photoshop 依赖

制作可编辑 PSD 海报需要:

  • Windows 桌面版 Adobe Photoshop;
  • Photoshop COM 自动化接口可用;
  • 模板使用的字体已经安装;
  • PSD 内的链接智能对象没有丢失。

海报模板二“老师海报 3.0”还要求 Photoshop 可识别 4 个 AlibabaPuHuiTi 2.0 字重。原稿在缺字体时仍可能显示正常,但编辑文字后会被替换成 其他字体,因此必须先通过字体预检。当前电脑已从 阿里巴巴官方字体站安装模板二所需的 75、85、95、115 四个字重并通过 Photoshop 检查。更换电脑或 Windows 用户后需要重新安装、刷新字体并 重启 Photoshop。

没有 Photoshop 时,Skill 仍可完成课表和 Word,但复杂 PSD 海报阶段会停止。

5.4 可选依赖

  • 图像编辑或抠图能力:处理不透明教师人物图;
  • OCR:辅助读取课表,但最终仍需视觉核对颜色和图例;
  • 教师形象参考文件夹:通用人物替换或用户要求换形象时使用;当前项目使用“人物”;
  • 软件图标文件夹:当前项目使用“图标”,并用 图标来源.json 记录网络来源和哈希。

6. 第一次使用时,用户需要提供什么

第一次使用建议一次说明以下信息:

  1. 项目根目录;
  2. 课表文件夹;
  3. 历史课程预告 Word 文件夹;
  4. 历史 PSD 和历史 PNG 文件夹;
  5. 当前默认文本模板;
  6. 当前默认海报模板;
  7. 可复用课程 PSD 要保存到哪个文件夹;
  8. 哪个文件夹是人物参考文件夹;当前项目已指定为“人物”;
  9. 软件图标文件夹;当前项目已指定为“图标”;
  10. 如果海报模板按老师管理,提供每位老师对应的 PSD;
  11. 本次目标日期。

示例:

使用课程预告自动化 Skill。项目根目录是“海报制作”,课表在“课表”,历史课程 文本在“课程预告文本”,PSD 在“课程预告ps”,历史 PNG 在“课程预告海报”。 默认使用文本模板一和海报模板一,可复用课程 PSD 保存到“课程预告ps”。制作 8 月 4 日 的课程预告,先给我基础信息确认。

人物文件夹可以在 Word 阶段稍后指定。通用模板在人物制作前必须完成配置;教师专属 模板优先使用目标老师的已登记 PSD。若模板契约已记录用户批准的 Jelly 基准派生规则, 缺少老师版本时可从基准 PSD 生成,但只能改人物智能对象和姓名文字,并先通过锁区 QA。

7. 推荐项目目录

海报制作/
├─ 课表/
├─ 课程预告文本/                 # 每个周区间只保留一个规范命名的正式 Word
├─ 课程预告ps/
├─ 课程预告海报/
├─ 人物/                         # 教师透明 PNG
├─ 图标/                         # 软件透明图标与图标来源.json
├─ 卡通/                         # 可选,用户明确指定后才生效
├─ 模板库/
│  ├─ 文本模板/
│  │  └─ text-template-registry.json
│  ├─ 海报模板/
│  │  ├─ poster-template-registry.json
│  │  └─ poster-template-2/
│  │     └─ teacher-variants/<老师姓名>/
│  ├─ 课程别名/
│  │  └─ course-aliases.json
│  └─ 项目设置/
│     └─ project-settings.json
├─ _course_preview_runs/
└─ .codex/skills/kecheng-yugao-skill/

项目设置示例:

{
  "schema_version": 1,
  "revision": 5,
  "project_root": "<项目根目录的绝对路径,init 时自动写入>",
  "teacher_asset_folder": "人物",
  "software_icon_folder": "图标",
  "poster_psd_output_folder": "课程预告ps",
  "course_alias_registry": "模板库\\课程别名\\course-aliases.json"
}

8. 如何调用

当前项目默认模板为:

  • 文本:text-template-1(文本模板一);
  • 海报:poster-template-1(海报模板一);
  • 模板一课程 PSD:课程预告ps/。

文本模板一和海报模板一的可执行基准资产已经同步到 Skill 的 assets/。用户没有明确 指定模板时使用上述默认值;以后仍可通过明确指令更换默认模板。

8.1 完整制作

使用 $kecheng-yugao-skill 制作 2026 年 8 月 4 日课程预告文本和海报。 先完成基础信息并给我确认。

8.2 只制作基础信息

使用课程预告自动化 Skill,整理 8 月 4 日全部班级的基础课程信息,生成 Word 后 停止,不要追加详情和海报。

8.3 确认后继续

基础信息确认无误,继续追加课程详情并制作海报。

8.4 修改一门课程

将“21期 AIGC 灵机班(无基础)”的“留人率飙升!Seedream打造高级直播间”改为 录播,时间改为 12:00,其他课程不变。给我变更后的基础 Word 再确认。

8.5 指定模板

本次 Word 使用文本模板二;“影刀RPA监控并抓取网站数据”使用海报模板三,其他 海报使用默认模板。

8.6 修改默认模板

将文本模板二设为默认文本模板。

将海报模板三设为默认海报模板。

8.7 添加新模板

根据这个 DOCX 提取文本模板二,先生成示例和使用说明,不要自动设为默认。

将这个 PSD 注册为海报模板二,检查图层合同并生成测试海报,先不要设为默认。

将“老师海报3.0_Jelly老师.psd”登记为海报模板二的 Jelly 老师版本。所有图层位置 锁定;只允许三行主标题按内容调整字号,其他文字字号保持不变。其余老师 PSD 到齐 后按老师姓名继续登记。

8.8 设置人物文件夹

将“人物”文件夹设为教师人物形象参考文件夹。以后所有含人物位置的海报都使用 该文件夹中的透明人物主体。

8.9 更换教师形象

本次将卡卡老师换成参考文件夹中的新形象。如果有多张候选,列出完整文件名让我 选择。

8.10 验收并清理本次运行残留

Word 和全部海报确认可以使用。关闭 Photoshop,保留最终 PNG、正式 Word 和课程 PSD,清理本次完整运行目录和本次新增的 Photoshop 暂存文件,并给出清理报告。

9. 完整运行流程

Stage 0:配置和运行记录

  1. 读取用户指定日期;
  2. 解析当周 Word:不存在则准备创建,恰好一个则准备更新,两个及以上则停止;
  3. 确定唯一正式文件名 <起始M.D>-<结束M.D>课程预告.docx;
  4. 建立 schema-v2 manifest;
  5. 给每门课生成稳定 course_key;
  6. 解析文本模板和每门课海报模板;
  7. 读取 PSD 输出目录、课程别名表和人物文件夹配置;
  8. 在第一次调用 Photoshop 前保存 run-cleanup-baseline.json,用于最终只清理本次 新增的 Photoshop 暂存文件。
  9. 建立本次运行目录。

解析命令示例:

python .codex/skills/kecheng-yugao-skill/scripts/weekly_document.py resolve `
  --project-root . `
  --run-dir _course_preview_runs/2026-08-07 `
  --period-start 2026-08-03 `
  --period-end 2026-08-07 `
  --out _course_preview_runs/2026-08-07/weekly-document-plan.json

推荐运行目录:

_course_preview_runs/YYYY-MM-DD/
├─ drafts/
├─ schedule-evidence/
├─ inspections/
├─ measurements/
├─ failed-qa/
├─ working-psd/
├─ backups/weekly-document/
└─ qa/

Stage A:基础课程信息

  1. 打开全部课表;
  2. 先读取每张课表自己的直播/录播图例,再查找目标日期;不同课表不得共用颜色规则;
  3. 对目标日期完整单元格做两遍扫描:第一遍只统计色块总数,第二遍再从上到下逐条 抄录;尽可能把目标单元格截图保存进 schedule-evidence/。若有 N 个课程色块, 必须建立 N 条课程记录,分别写入第 1…N 块和总数 N;找到第一门课后仍要继续扫描;
  4. 跳过没有课程的班级;
  5. 为每个色块记录班级、课表原始课程名、标准课程名、色块颜色、图例原文、 直播/录播判定来源和证据;
  6. 直播/录播只允许来自当前课表图例、课表明确文字或用户确认。不得根据课程名中的 “直播”“直播间”“直播贴片”、教师、时间或历史 Word 推断;
  7. 运行清单校验,确保每班课程编号完整覆盖 1…N,缺少任何一门都停止;
  8. 从历史 Word 确认教师;
  9. 在 drafts/ 生成只有基础行的 Word;正式 课程预告文本/ 此时不新增 _基础信息 或 _待确认 文件;
  10. 同班多门课共用一次班级标题,但每门课保留独立课程行;
  11. 直播行按模板一显示为红色粗体;
  12. 渲染所有页面并检查;
  13. 给用户基础 Word、模板选择和不确定项;
  14. 停止等待确认。

用户确认的是运行目录中的基础 Word。它是审批材料,不是正式目录中的第二份周文档。

课程变更防误改

用户修改一门课程时:

  1. 修改 manifest 中对应 course_key;
  2. 不直接编辑 Word 的某个段落序号;
  3. 从 manifest 重新生成目标块;
  4. 运行 manifest_semantic_diff.py;
  5. 检查只发生了用户指定的变化;
  6. 重新生成审批哈希并等待确认。

Stage B:课程详情

  1. 校验 Stage A 审批哈希;
  2. 从历史 Word 建立课程目录;
  3. 优先使用精确标准化标题;
  4. 查询已经由用户确认的课程别名;
  5. 模糊候选仍然必须让用户确认;
  6. 分别记录工具、作业和目标的来源;
  7. 追加详细介绍;
  8. 导出 PDF;
  9. 运行分页守卫;
  10. 逐页视觉检查;
  11. 备份旧周文档,通过临时 DOCX 校验和原子替换发布规范文件名;
  12. 检查该周在正式目录中恰好只剩一个规范命名的有效 DOCX。

发布示例:

python .codex/skills/kecheng-yugao-skill/scripts/weekly_document.py publish `
  --plan _course_preview_runs/2026-08-07/weekly-document-plan.json `
  --source-docx _course_preview_runs/2026-08-07/drafts/8.3-8.7课程预告.docx `
  --out _course_preview_runs/2026-08-07/weekly-document-publication.json

同一天重新运行时,按稳定 course_key 替换该日期的课程块,不能在文末重复追加 一组 8.7 内容。

分页守卫会拒绝:

  • 最后一页只有极少量课程目标;
  • 新页面从“直播预告通知”或时间行开始;
  • 即使 PDF 抽取丢失了通知/时间行前面的 emoji,仍按文字语义识别课程块断裂;
  • 班级标题单独留在上一页;
  • 课程标题或目标缺失。

Stage C:海报和 PSD

  1. 搜索模板范围内的候选 PSD/PNG;
  2. 只读打开候选 PSD 的标题智能对象;
  3. 用完整标准化课程名称精确匹配内部标题,不用文件名或子串代替证据;
  4. 零个匹配准备新增课程 PSD,一个匹配直接复用,多个匹配停止;
  5. 若 PSD 含人物位置,强制从“人物”文件夹选择对应讲师 PNG,并检查透明背景;
  6. 建立 UTF-8 海报作业 JSON;
  7. 通过 photoshop_run_job.ps1 修改 PSD;
  8. 检查标题画布、水平视觉中心和标题下方间距;
  9. 检查课程目标与日期时间安全区域;
  10. 检查课程目标是否进入模板内框、页脚或底部装饰的不可用区域;
  11. 导出 PNG 和工作 PSD;
  12. 查看整张海报和修改区域裁切;
  13. 为 PSD 标记可编辑等级;
  14. 批量检查课程名称与 PSD 的唯一映射;
  15. 已有课程 PSD 时不发布;没有时只发布一个 <课程名称>.psd;
  16. 按 manifest 生成最终文件名并汇总最终 manifest;
  17. 执行完整交付检查并向用户展示 Word 和 PNG;
  18. 第一次调用 Photoshop 前保存暂存文件基线;
  19. 用户明确确认可以使用并关闭 Photoshop 后,删除本次日期的整个运行目录;
  20. 只删除基线之后新增的 Photoshop Temp* / ~PST*.tmp,不清空系统 Temp;
  21. 在 _course_preview_runs/_cleanup_reports/ 保存清理报告,并验证正式 Word、最终 PNG 和课程 PSD 的哈希未变化。

运行开始时记录基线:

python .codex/skills/kecheng-yugao-skill/scripts/workflow_guardrails.py `
  run-cleanup-baseline `
  --project-root . `
  --run-dir _course_preview_runs/2026-08-11 `
  --out _course_preview_runs/2026-08-11/run-cleanup-baseline.json

最终验收后清理:

python .codex/skills/kecheng-yugao-skill/scripts/workflow_guardrails.py `
  final-run-cleanup `
  --manifest _course_preview_runs/2026-08-11/manifest-final.json `
  --run-dir _course_preview_runs/2026-08-11 `
  --baseline _course_preview_runs/2026-08-11/run-cleanup-baseline.json `
  --out _course_preview_runs/_cleanup_reports/2026-08-11.json `
  --user-approved

10. 课程详情别名

当新课名与历史课名含义相同但不是精确匹配时,Skill 会停止。例如:

本次课程:影刀RPA监控并抓取网站数据
历史课程:全自动竞品数据抓取与监控

用户确认一次后,可写入:

模板库/课程别名/course-aliases.json

以后只有课程名和教师约束均匹配时才复用。出现教师冲突或一个别名对应多个标准 课程时仍会停止。

11. 海报排版保护

11.1 标题保护

  • 保留模板需要的换行;
  • 海报模板二先清洗标题标点:除 +、- 外的特殊符号不进入海报主标题;Word、文件名和 PSD 课程键保留原名;
  • 海报模板二所有可见标题行按各自纸条视觉中心对齐;
  • 清洗后的完整标题少于 8 个可见字符时只使用中间绿色纸条:隐藏第 1、3 行文字及对应纸条,把完整清洗标题作为一整行居中放入绿色纸条;所有字符不得互相接触,也不得与其他文字相连;
  • 新标题不能超过源标题已有的智能对象越界余量;
  • 标题段落对齐方式必须与模板合同一致;
  • 以实际渲染文字边界计算视觉中心,不能只看文字锚点;
  • 居中模板必须满足 |标题实际中心 - 模板目标中心| <= 最大允许偏差;
  • 标题与下方课程目标/状态区域默认至少保留 20px;
  • 候选 PSD 标题结构不匹配时,先换更合适的 PSD,而不是强行移动设计元素。

11.1.1 模板二自适应软件栏与时间栏

  • 软件图标与名称始终从左侧开始,按固定间距排列;4 个软件沿用原四槽;
  • 少于 4 个软件时隐藏未用槽位,并按实际软件数缩短软件栏,消除未使用区域的大块空白;
  • 软件栏右下角紫色贴纸属于模板标志,缩短栏目时必须随新右边缘保留,不能隐藏或拉变形;
  • 时间栏向左扩展与软件栏缩短相同的宽度;
  • 由于原模板纸张/边框与大底图合并,自动化必须新增分层的“软件栏压缩底板”和“时间栏延展底板”,不能只移动文字图标,也不能把最终 PSD 压成单层图片;
  • 重建底板采用左右边缘保形、中段纹理伸缩的切片方式,整体纸张、边框、胶带样式不变;
  • 日期、周几、时间保持独立文字图层和原字体格式:宽栏用横向单行,较窄栏用日期在上、周几与时间在下的紧凑两行;不得重叠或出现大面积空白。

模板一在本次 8 月 5 日运行中的标题智能对象宽度为 938px,目标中心为 469px,最大 允许偏差为 15px。其他模板必须在模板注册时单独记录,不能默认照搬模板一。

11.2 课程目标安全区

课程目标位于左下区域,日期和时间位于右下区域。Skill 会检查:

课程目标右边界 + 最小间距 <= 日期/时间区域左边界
课程目标下边界 <= 模板课程目标安全底线 <= 海报画布下边界

默认最小间距为 20px。模板课程目标安全底线应位于内框、页脚和底部装饰之上,不能只 使用原始画布下边界。失败时重新从未修改的源 PSD 开始,并通过语义换行缩短每行;若 完整文字因此增加一行,可只对课程目标文字层设置经过测量的 objective_translate_y_px,并同时设置 objective_bottom_limit_px。审计必须记录移动前后 边界。不能移动无关设计元素,也不能通过隐藏文字、缩小到不可读或跳过检查来通过。

11.3 PSD 可编辑等级

等级含义是否可交付
A标题、日期、时间、状态、目标和需要的人物保持可编辑可以
B完全同款历史底图+独立日期时间替换层,仅日期时间不同可以,但报告中必须说明
C单层扁平图或缺少必要可编辑结构不可以

12. Photoshop UTF-8 作业方式

不建议在命令行中直接传递长中文标题和中文引号。海报作业使用 JSON:

{
  "schema_version": 1,
  "source_psd": "源模板.psd",
  "out_psd": "working-psd/成品.psd",
  "out_png": "8.4/成品.png",
  "out_audit": "qa/成品-audit.json",
  "source_expected_title": "源课程标题",
  "target_title": "新课程标题\\n第二行",
  "target_title_justification": "center",
  "center_title_horizontally": true,
  "source_expected_date": "07/22",
  "target_date": "08/04",
  "source_expected_time": "19:30",
  "target_time": "12:00",
  "source_expected_status": "直播时间",
  "target_status": "录播时间",
  "source_expected_objective": "课程目标\\n源目标",
  "target_objective": "课程目标\\n新目标",
  "guards": {
    "title_center_target_x_px": 469,
    "maximum_title_center_delta_px": 15,
    "minimum_title_gap_px": 20,
    "minimum_objective_time_gap_px": 20
  }
}

运行:

powershell.exe -NoProfile -ExecutionPolicy Bypass -File `
  .codex/skills/kecheng-yugao-skill/scripts/photoshop_run_job.ps1 `
  -JobPath <作业JSON>

source_expected_* 是源 PSD 当前值,target_* 是要写入的新值。两者分开可防止把 “改后值”误当成“改前校验值”。

13. 文本模板规则

  • 一份周 Word 只使用一个文本模板;
  • 新模板先进入 pending;
  • 必须展示直播和录播样例;
  • 用户确认后变为 confirmed;
  • 新增模板不会自动改变默认值;
  • 修改默认值必须由用户明确提出;
  • 新模板也必须通过分页守卫和逐页视觉检查。

一个有效文本模板必须能区分:

  • 班级标题;
  • 日期、课程、教师;
  • 直播和录播;
  • 时间;
  • 工具;
  • 可选作业;
  • 非空课程目标;
  • 多课程重复和分页规则。

14. 人物形象规则

  1. 人物参考文件夹必须由用户指定;
  2. 只选择 PNG;
  3. 多张候选必须回复完整文件名;
  4. 相同文件名出现在不同子目录时必须先重命名;
  5. PNG 有 Alpha 通道不等于背景已经透明;
  6. 抠图预览必须经过用户确认;
  7. 替换前备份到 _原图备份/;
  8. 通用模板从权威文件夹重新置入人物;教师专属模板先精确选中老师变体,只有用户明确更换形象,或模板已批准从固定基准派生新老师版本时才置入新人物;
  9. 最终人物图层或智能对象只保留人物主体,不保留原图背景。

15. 最终交付条件

只有同时满足以下条件才能报告完成:

  • Stage A 已确认;
  • 课程详情有可靠来源;
  • Word 所有页面已渲染并检查;
  • 没有空白尾页和课程块断裂;
  • 同一周在 课程预告文本/ 中恰好只有一个正式 DOCX;
  • 正式 Word 使用 <起始M.D>-<结束M.D>课程预告.docx,没有 _基础信息、 _待确认、_DRAFT、_FINAL、_new、_v2 等后缀;
  • 每张海报已检查整图和修改区域;
  • 标题水平中心、标题下方间距和课程目标几何守卫通过;
  • 每张海报 PSD 等级为 A 或 B;
  • 发布前全批次没有目标冲突;
  • manifest 课程数量等于 PNG 数量;
  • 每张 PNG 都映射到一个内部标题精确匹配、非空的课程 PSD;
  • 同一标准化课程名称只映射一个 PSD;同一课程出现在多个班级时可共享该 PSD;
  • 不同课程名称不能共享同一个 PSD;
  • PNG 文件名包含对应班级、课程、教师、目标日期;直播课还包含“直播”;
  • 最终文件夹不存在 c.png、final.png 等临时别名或未登记图片;
  • 用户验收后已按授权清理本次完整运行目录和本次新增的 Photoshop 暂存文件;
  • 清理报告位于运行目录外,正式 Word、最终 PNG 和课程 PSD 哈希保持不变;
  • 历史源文档、PSD 和 PNG 没有被覆盖。

16. 常见问题

课表看不清怎么办

放大并截取目标区域;仍无法确认时报告具体文件和单元格,停止该班级,不猜测。

为什么同一班当天只记录了一门课

这是目标日期单元格没有完整扫描造成的。现在每班必须先统计课程色块总数 N,再为 每个色块写入 schedule_entry_index=1…N。校验器发现编号缺失、重复或总数不一致时, 不会生成基础 Word。

如何区分直播和录播

先读取当前课表自己的图例,再把课程色块颜色与该图例对应。不同班级课表的直播颜色 可能不同,不能建立全局固定颜色。课程名出现“直播”不代表直播课;历史 Word 只用于 教师和详情检索,不得覆盖当天课表的直播/录播判定。

用户只修改直播/录播,没有说时间怎么办

询问新的可靠时间。不会因为录播通常是 12:00 就自动填写。

模糊课程详情每次都要问吗

首次必须确认。确认后写入课程别名表,满足同一教师约束时可自动复用。

Word 出现第 7 页只有一行怎么办

不能交付。调整模板允许的空白段落和课程块绑定,再重新渲染并运行分页守卫。

为什么同一周出现多个课程预告 Word

旧流程把 Stage A 基础版、Stage B 完整版和修订版都发布到了正式目录,并用 _FINAL/new/v2 区分;候选选择又可能按修改时间或后缀静默挑选,因此副本会越积 越多。新流程把这些文件全部放进 _course_preview_runs/目标日期/,正式目录只发布 一个规范文件。

如果运行前已经检测到同一周有两个及以上 Word,Skill 会列出完整路径并停止,不会 猜哪一个最新。需要先由用户确认保留内容,再做一次可恢复的合并或整理。

同一周已有一个带 _FINAL 后缀的 Word 怎么办

可以把它作为唯一旧来源复制到运行目录编辑。正式发布前先备份旧文件,再原子发布为 规范名称;发布成功并复检后才移除旧后缀文件。备份位于本次运行目录的 backups/weekly-document/。

海报课程目标碰到日期怎么办

从未修改源 PSD 重新开始,对目标进行语义换行;安全区检查通过后才导出。

海报课程目标没有超出画布,但被内框或底部装饰挡住怎么办

这说明只检查“画布底边”不够。为该模板登记 objective_bottom_limit_px,重新从未修改 源 PSD 开始;若语义换行导致行数增加,只上移课程目标文字层并记录 objective_translate_y_px。最终同时检查整图和下半区 100% 局部图。

海报课程标题没有居中怎么办

不能只修改文字锚点。先检查标题智能对象中的段落对齐,再以实际文字边界计算视觉 中心;按模板记录的目标中心自动平移,重新保存、导出并运行水平中心守卫。

海报被命名为 c.png、final.png 怎么办

临时名称不能交付。最终名称必须由 manifest 中的班级、日期、课程、教师和直播状态 生成。PNG 不要求与长期保存的课程 PSD 同名。删除或备份临时别名后,重新运行 manifest、课程PSD映射和交付检查;早先通过的检查不能继续沿用。

只有历史 PNG 可以做吗

只有标题、教师、状态、目标完全相同,仅日期时间变化时,才能使用 B 级分层日期替换。 其他变化需要可编辑 PSD,或由用户明确接受近似重建,但近似重建不得冒充 A 级 PSD。

Photoshop 报中文乱码怎么办

使用 UTF-8 JSON 作业和 photoshop_run_job.ps1,不要把长中文内容直接放进 Windows PowerShell 命令行;读取 JSON 时显式使用 UTF-8。

PNG 已完成但缺少 PSD 怎么办

先检查 课程预告ps/ 中所有候选 PSD 的内部标题。如果存在唯一精确课程标题匹配, 将 PNG 映射到它,不再复制;如果没有,才从通过 QA 的工作 PSD 新增一个课程 PSD。 存在多个精确匹配时先整理重复项,不能猜测。

为什么制作完成后还有工作 PSD

工作 PSD、草稿、渲染图、检查数据、失败输出和运行备份都属于本次运行证据,必须保留到 用户确认 Word 和海报可以使用。验收后关闭 Photoshop,运行 final-run-cleanup --user-approved:它删除整个日期运行目录,并记录删除前的路径、大小 和哈希;同时只删除运行基线之后新增的 Photoshop 暂存文件。课程 PSD、PNG、正式 Word、 模板库、人物、图标、Skill 文件以及运行前已经存在的临时文件均不会被删除。

同一个课程找到了两个 PSD 怎么办

停止制作并列出两个 PSD 的完整路径与内部标题。用户需要决定保留哪一个并整理重复 文件。Skill 不会按文件名、日期或修改时间自动选择。

同一课程改了教师、课程目标或海报模板怎么办

日期、时间、直播/录播可以只改工作副本,不需要更新课程 PSD。教师、人物、课程目标 或海报模板属于课程 PSD 的稳定内容;发生变化时停止并让用户确认是否替换唯一课程 PSD。替换前必须备份旧 PSD,不能静默覆盖。

如果模板本身按老师分别提供 PSD,先精确选择目标老师变体。没有该老师版本时不能直接 套用其他老师版本;只有模板契约中已有用户批准的基准派生规则,才可从该基准生成新版本, 并且只能修改人物和姓名,锁定课程主标题、“90天成为AI全能人才”及其余区域。模板要求的 字体缺失时也必须停止;不能接受 Photoshop 自动替换字体后继续出图。

17. 数据安全与注意事项

  1. 用户指定日期优先于系统日期;
  2. 每个课表都要检查;
  3. 课表负责课程和授课方式证据,历史 Word 负责教师和详情;
  4. 用户确认的临时变更必须写入 override 证据;
  5. 课程修改以 manifest 为准,不按 Word 段落位置操作;
  6. 模糊匹配不能直接生成成品;
  7. 工具、作业、目标分别记录来源;
  8. 文本模板与海报模板分开管理;
  9. 历史 PSD、PNG 和原始资料不可覆盖;正式周 Word 只允许在运行目录备份后原子更新;
  10. Photoshop 失败后只允许从未修改源文件隔离重试一次;
  11. 失败输出保存在 failed-qa/,不得混入最终文件夹;
  12. 自动化减少重复劳动,但保留课程确认、模板确认、人物选择和抠图确认。
  13. 课程预告文本/ 可以保存不同周的正式文档,但同一周区间只能有一个;
  14. 最终运行清理必须在用户验收且 Photoshop 关闭后执行,只能作用于本次准确日期的 _course_preview_runs/YYYY-MM-DD/ 和基线之后新增的 Photoshop 暂存文件;
  15. 课程 PSD 以内部完整课程标题为准,文件名只用于帮助搜索。
  16. 教师专属模板必须精确匹配老师;位置锁定模板不得移动图层;
  17. 模板二只有三行主标题可调字号,其他文字字号锁定;
  18. 软件图标必须来自“图标”目录且有来源记录;
  19. 基础版、待确认版、QA 文件和备份只能保存在 _course_preview_runs/。

18. 本次优化后的关键变化

2026 年 8 月 4 日和 8 月 5 日试运行暴露的问题已转化为以下机制:

  • 课程稳定键和语义差异检查,防止把修改应用到错误课程;
  • 直播/录播与时间联合复核;
  • 用户确认课程别名持久化;
  • 工具、作业和目标的字段级来源;
  • Word 空白尾页、课程块断裂和孤立标题守卫;
  • 海报目标文字与日期时间区域的像素安全检查;
  • PSD 标题容量预判和候选拒绝理由;
  • 标题智能对象内部内容检查、显式段落对齐和视觉中心硬守卫;
  • manifest 驱动的文件名语义校验,拒绝临时别名;
  • UTF-8 JSON Photoshop 作业入口;
  • PSD A/B/C 可编辑等级;
  • PSD 全批次发布预检;
  • 通用 manifest 汇总和最终交付检查;
  • 交付检查后的不可变规则;任何后续文件变更都必须重跑检查;
  • 规范化的运行子目录。
  • 单周单正式 Word:固定规范文件名、草稿隔离、旧版备份和原子替换;
  • 同周多文档硬停止,不再按 FINAL、版本号或修改时间猜选;
  • 历史文本目录跳过带版本后缀的周文档,避免同一课程被重复索引;
  • 最终交付增加“同周数量为 1、名称规范、DOCX 有效、哈希一致”检查。

这些规则已写入 Skill 和脚本。新文本模板、新海报模板、新教师、多人物图和抠图 仍需要在真实素材首次出现时完成对应的实例验证。