1仕組みと動作原理
分析 → 強制確認 → アウトライン → プロンプト → 画像生成 → PPTX/PDF 結合という段階的パイプラインです。各段階の成果物はディスクに保存され、--outline-only / --prompts-only / --images-only などのフラグによる中断・再開に対応します。
- [ ] Step 7: Generate images
画像生成バックエンドはこのリポジトリ内には実装されておらず、次の優先度で解決されます:現在のリクエストでの指定 > EXTEND.md の設定 > ランタイムのネイティブツール(Codex imagegen / Cursor GenerateImage / Hermes image_generate)> 唯一インストールされている非ネイティブバックエンド(baoyu-image-gen)> ユーザーへの確認。
If a skill named `imagegen` is listed, you are running inside Codex and MUST use it
codex-imagegen 分岐をたどる際は、ラッパーを直接呼び出すのではなく、同一リポジトリ内の baoyu-image-gen スキルスクリプト経由を優先します。
route through `baoyu-image-gen --provider codex-cli` (preferred)
プロンプトファイルは厳格な再現性の記録となります。バックエンドを呼び出す前に、各スライドの完全な最終プロンプトを必ず prompts/NN-slide-[slug].md に保存する必要があります。
**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/`
結合処理はこのリポジトリ内で唯一の実行可能コードであり、完全にローカルで動作します:merge-to-pdf.ts は pdf-lib を用いて画像を1ページずつ埋め込み、merge-to-pptx.ts は pptxgenjs を用いて 16:9 で出力し、base-prompt と各ページのプロンプトを発表者ノートに記録します。
pptx.layout = "LAYOUT_16x9";
確認は厳格なゲートです。ユーザーがそのターンで「直接生成して/確認不要」と明示しない限り、Step 2 が完了する前に Step 3 以降に進むことは禁止されています。
Do **not** start Step 3 or later until the user completes Step 2.
スタイルシステム = 17 種類のプリセット × 4 つの次元(texture/mood/typography/density)の自由な組み合わせです。コンテンツのシグナルがキーワードテーブルに一致すれば自動選定され、一致しない場合は blueprint にフォールバックします。
17 presets covering technical / educational / lifestyle / editorial use cases.
一括画像生成には明確な優先順位があります:バックエンドのネイティブバッチ > ランタイムの並列ツール呼び出し(デフォルト 4、--batch-size で変更可能)> シーケンシャル。また、「すべてのプロンプトファイルがディスクに保存される」まで最初のバッチの開始は許可されません。
- Never start the first batch until all selected slide prompt files exist on disk.
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| api | 运行时图像生成后端(Codex imagegen Skill / Cursor GenerateImage / Hermes image_generate)——用户内容与提示词由此出网 |
| cli | codex CLI(无原生 imagegen 时的 codex exec 后端,需 codex login) |
| cli | baoyu-image-gen 技能脚本(--provider codex-cli,首选路径) |
| cli | bun / npx -y bun(跑合并脚本与包装器) |
| package | pdf-lib ^1.17.1(PDF 合并) |
| package | pptxgenjs ^4.0.1(PPTX 合并,声明于仓库根 package.json) |
| package | sharp ^0.34.5(根依赖,两个合并脚本均未 import) |
| network | homepage 元数据 URL(静态 frontmatter,任何步骤都不抓取) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: ${BUN_X} {baseDir}/scripts/merge-to-pptx.ts <slide-deck-dir>(bun または npx -y b
- 网络端点: 外部ネットワークアクセスの宣言: スキル自体のスクリプトはネットワーク呼び出しを一切行わない(2つの結合スクリプトは fs/path + pdf-lib / pptxgenjs のみをインポート)
- 本地工作目录: ファイルの読み書きと成果物出力: slide-deck/{topic-slug}/source-*.{ext} および analysis.md
5二重目の独立検証
- [ok] 两个合并脚本无网络、无 env、无 spawn — merge-to-pdf.ts 只 import fs/path + pdf-lib,merge-to-pptx.ts 只 import fs/path + pptxgenjs;全目录 grep process.env/fetch/http/child_process 零命中。
- [ok] 出图后端解析阶梯与 SKILL.md 一致 — 阶梯为 当前请求 > EXTEND.md preferred_image_backend > 运行时原生(imagegen/GenerateImage/image_generate)> 唯一非原生后端 > 问用户;codex-imagegen 分支的调用契约在 references/codex-imagegen.md。
- [ok] 不读 API key(认证走用户订阅) — codex-imagegen.md 明写 'no `OPENAI_API_KEY` is read or sent';脚本零 env 读取,唯一的 env 覆盖是 $BAOYU_CODEX_IMAGEGEN_BIN(后端可执行文件路径)。
- [ok] prompt 文件先行是硬要求 — SKILL.md 标注 (hard),且合并脚本把 base-prompt + 每页 prompt 写进 PPTX 备注,形成可复现双通道。
- [ok] 依赖与声明一致性 — pdf-lib/pptxgenjs 由仓库根 package.json 提供(skill 内无 package.json);根依赖 sharp 未被这两个脚本 import(属未使用依赖)。
- [ok] EXTEND.md 路径文档不一致(轻微) — SKILL.md 列三条路径(含 XDG),references/config/preferences-schema.md 只列项目与家目录两条;另 slide-deck 的首次设置明确不阻塞(与 translate/xhs-images 相反),已在正文引用中如实标注。
- [ok] base-prompt.md 的模型定向指令 — 文件结尾确有 'Please use nano banana pro to generate the slide image based on the content provided above.' 与 'DO NOT refuse to generate' 类措辞;因它把用户文本与模型指令混在同一通道,已写入 injection_surface 与 risks。
- [ok] 档位复核(批4 终裁) — 按 Main『生成後端類先例=orange』与点名后端+素材出网的判法落 orange;自身脚本仅有本地 pdf/pptx 合并与写盘,不升红。
6結論
9867805610b81b26…