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. 适用场景
推荐在以下场景使用:
- 每天或每周固定制作课程预告;
- 多个班级使用不同课表,需要统一整理某一天课程;
- 课程介绍分散在多份历史 Word 中;
- 海报需要沿用旧设计,只替换课程文字、日期和时间;
- 不同课程需要使用不同版本的海报模板;
- 教师人物形象会新增或替换;
- 需要保留可编辑 PSD,但希望每门课程只长期保存一份;
- 需要防止课表临时变更误修改其他课程;
- 需要对新 Word 样式或新海报样式进行版本管理。
不适合的场景:
- 在没有课表证据的情况下自动编造课程;
- 没有 Photoshop 却要求无损修改复杂 PSD;
- 只有扁平 PNG,却要求任意修改课程标题、人物和目标;
- 完全取消用户确认,直接批量发布;
- 作为 Windows 后台定时服务长期无人值守运行。
4. 安装方式
4.1 推荐:安装到课程项目中
把完整 Skill 文件夹放到项目根目录:
<项目根目录>/.codex/skills/kecheng-yugao-skill/
当前项目位置为:
C:\Users\1\Desktop\海报制作\.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 |
| Pillow | PNG 透明度和人物素材检查 |
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. 第一次使用时,用户需要提供什么
第一次使用建议一次说明以下信息:
- 项目根目录;
- 课表文件夹;
- 历史课程预告 Word 文件夹;
- 历史 PSD 和历史 PNG 文件夹;
- 当前默认文本模板;
- 当前默认海报模板;
- 可复用课程 PSD 要保存到哪个文件夹;
- 哪个文件夹是人物参考文件夹;当前项目已指定为“人物”;
- 软件图标文件夹;当前项目已指定为“图标”;
- 如果海报模板按老师管理,提供每位老师对应的 PSD;
- 本次目标日期。
示例:
使用课程预告自动化 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": "C:\\Users\\1\\Desktop\\海报制作",
"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:配置和运行记录
- 读取用户指定日期;
- 解析当周 Word:不存在则准备创建,恰好一个则准备更新,两个及以上则停止;
- 确定唯一正式文件名
<起始M.D>-<结束M.D>课程预告.docx; - 建立 schema-v2 manifest;
- 给每门课生成稳定
course_key; - 解析文本模板和每门课海报模板;
- 读取 PSD 输出目录、课程别名表和人物文件夹配置;
- 在第一次调用 Photoshop 前保存
run-cleanup-baseline.json,用于最终只清理本次 新增的 Photoshop 暂存文件。 - 建立本次运行目录。
解析命令示例:
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:基础课程信息
- 打开全部课表;
- 先读取每张课表自己的直播/录播图例,再查找目标日期;不同课表不得共用颜色规则;
- 对目标日期完整单元格做两遍扫描:第一遍只统计色块总数,第二遍再从上到下逐条
抄录;尽可能把目标单元格截图保存进
schedule-evidence/。若有 N 个课程色块, 必须建立 N 条课程记录,分别写入第1…N块和总数 N;找到第一门课后仍要继续扫描; - 跳过没有课程的班级;
- 为每个色块记录班级、课表原始课程名、标准课程名、色块颜色、图例原文、 直播/录播判定来源和证据;
- 直播/录播只允许来自当前课表图例、课表明确文字或用户确认。不得根据课程名中的 “直播”“直播间”“直播贴片”、教师、时间或历史 Word 推断;
- 运行清单校验,确保每班课程编号完整覆盖
1…N,缺少任何一门都停止; - 从历史 Word 确认教师;
- 在
drafts/生成只有基础行的 Word;正式课程预告文本/此时不新增_基础信息或_待确认文件; - 同班多门课共用一次班级标题,但每门课保留独立课程行;
- 直播行按模板一显示为红色粗体;
- 渲染所有页面并检查;
- 给用户基础 Word、模板选择和不确定项;
- 停止等待确认。
用户确认的是运行目录中的基础 Word。它是审批材料,不是正式目录中的第二份周文档。
课程变更防误改
用户修改一门课程时:
- 修改 manifest 中对应
course_key; - 不直接编辑 Word 的某个段落序号;
- 从 manifest 重新生成目标块;
- 运行
manifest_semantic_diff.py; - 检查只发生了用户指定的变化;
- 重新生成审批哈希并等待确认。
Stage B:课程详情
- 校验 Stage A 审批哈希;
- 从历史 Word 建立课程目录;
- 优先使用精确标准化标题;
- 查询已经由用户确认的课程别名;
- 模糊候选仍然必须让用户确认;
- 分别记录工具、作业和目标的来源;
- 追加详细介绍;
- 导出 PDF;
- 运行分页守卫;
- 逐页视觉检查;
- 备份旧周文档,通过临时 DOCX 校验和原子替换发布规范文件名;
- 检查该周在正式目录中恰好只剩一个规范命名的有效 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
- 搜索模板范围内的候选 PSD/PNG;
- 只读打开候选 PSD 的标题智能对象;
- 用完整标准化课程名称精确匹配内部标题,不用文件名或子串代替证据;
- 零个匹配准备新增课程 PSD,一个匹配直接复用,多个匹配停止;
- 若 PSD 含人物位置,强制从“人物”文件夹选择对应讲师 PNG,并检查透明背景;
- 建立 UTF-8 海报作业 JSON;
- 通过
photoshop_run_job.ps1修改 PSD; - 检查标题画布、水平视觉中心和标题下方间距;
- 检查课程目标与日期时间安全区域;
- 检查课程目标是否进入模板内框、页脚或底部装饰的不可用区域;
- 导出 PNG 和工作 PSD;
- 查看整张海报和修改区域裁切;
- 为 PSD 标记可编辑等级;
- 批量检查课程名称与 PSD 的唯一映射;
- 已有课程 PSD 时不发布;没有时只发布一个
<课程名称>.psd; - 按 manifest 生成最终文件名并汇总最终 manifest;
- 执行完整交付检查并向用户展示 Word 和 PNG;
- 第一次调用 Photoshop 前保存暂存文件基线;
- 用户明确确认可以使用并关闭 Photoshop 后,删除本次日期的整个运行目录;
- 只删除基线之后新增的
Photoshop Temp*/~PST*.tmp,不清空系统 Temp; - 在
_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. 人物形象规则
- 人物参考文件夹必须由用户指定;
- 只选择 PNG;
- 多张候选必须回复完整文件名;
- 相同文件名出现在不同子目录时必须先重命名;
- PNG 有 Alpha 通道不等于背景已经透明;
- 抠图预览必须经过用户确认;
- 替换前备份到
_原图备份/; - 通用模板从权威文件夹重新置入人物;教师专属模板先精确选中老师变体,只有用户明确更换形象,或模板已批准从固定基准派生新老师版本时才置入新人物;
- 最终人物图层或智能对象只保留人物主体,不保留原图背景。
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. 数据安全与注意事项
- 用户指定日期优先于系统日期;
- 每个课表都要检查;
- 课表负责课程和授课方式证据,历史 Word 负责教师和详情;
- 用户确认的临时变更必须写入 override 证据;
- 课程修改以 manifest 为准,不按 Word 段落位置操作;
- 模糊匹配不能直接生成成品;
- 工具、作业、目标分别记录来源;
- 文本模板与海报模板分开管理;
- 历史 PSD、PNG 和原始资料不可覆盖;正式周 Word 只允许在运行目录备份后原子更新;
- Photoshop 失败后只允许从未修改源文件隔离重试一次;
- 失败输出保存在
failed-qa/,不得混入最终文件夹; - 自动化减少重复劳动,但保留课程确认、模板确认、人物选择和抠图确认。
课程预告文本/可以保存不同周的正式文档,但同一周区间只能有一个;- 最终运行清理必须在用户验收且 Photoshop 关闭后执行,只能作用于本次准确日期的
_course_preview_runs/YYYY-MM-DD/和基线之后新增的 Photoshop 暂存文件; - 课程 PSD 以内部完整课程标题为准,文件名只用于帮助搜索。
- 教师专属模板必须精确匹配老师;位置锁定模板不得移动图层;
- 模板二只有三行主标题可调字号,其他文字字号锁定;
- 软件图标必须来自“图标”目录且有来源记录;
- 基础版、待确认版、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 和脚本。新文本模板、新海报模板、新教师、多人物图和抠图 仍需要在真实素材首次出现时完成对应的实例验证。