SSkilltecabyclaudinhocode
Enviar skill
← Voltar para o catálogo

tekion-slide-generator-v4

Documentos

TEKION Slide Generator v4 — プレゼンスライド生成(OpenAI GPT-image-2 デフォルト / Gemini 3.1 Flash 両対応)。「スライドを作って」「プレゼン資料」で発動。Markdown/テキスト→デザインガイドライン→並列画像生成→PPTX/PDF。日本語テキスト精度重視の営業資料・提案書はOpenAI、大量生成や実在ブランド/人物はGemini。Visual/Balanced 2スタイル、ロゴ/参考画像、グラウンディング、Thinking制御対応。

3estrelas
Ver no GitHub ↗Autor: rsensui2Licença: MIT

TEKION Slide Generator v4

実行モード

mode: auto  # Pre-flight〜Phase 5を承認なしで連続実行
pause_only_on: [route_ambiguous, api_key_missing]
chain_commands: true  # bashは && で連結

定数

SKILL_DIR="<path-to-this-skill>"
PYTHON="python3"

前提条件

  • Python 3.10+
  • Gemini API Key.env.local または GEMINI_API_KEY 環境変数) — --provider gemini
  • OpenAI API Key.env.local または OPENAI_API_KEY 環境変数) — --provider openai
  • SubAgent定義(ルートB使用時): ~/.claude/agents/nanobanana-prompt-generator-subagent.mdsetup.sh${SKILL_DIR}/agents/ から自動インストール)

初回セットアップ:

bash ${SKILL_DIR}/scripts/setup.sh

言語ルール

display_language: "ターゲット聴衆に合わせる(素材の言語ではない)"
target_fields: [title, subtitle, key_message, content]
english_allowed: "固有名詞のみ (Cursor, MCP等)"
content_suffix: "※スライド上の全テキストは{lang}で表示すること。"

スタイル選択

Phase 3 のプロンプト生成で --style フラグを指定、またはスライド毎に JSON で _style を付与することで、 スライドの雰囲気(文字量・ビジュアル比率・余白)を切り替えられます。

判断基準スタイルテンプレート
「登壇」「ピッチ」「Keynote風」「ビジュアル重視」「写真主役」visualprompt_template_visual.j2
「営業資料」「提案書」「バランス」「図解と文字の両立」(デフォルト)balancedprompt_template_balanced.j2

visual スタイル(ピッチデッキ風)

  • Apple Keynote / TED Talk の余白美学、Less is more
  • タイトル15文字 + キーメッセージ1文(最大2行)
  • 画面の**60-80%**を1つの大胆なビジュアル(全面写真・巨大数字・大きなシンボル)
  • 複数カード・網羅リストは禁止、大胆な余白
  • 用途: 登壇・ピッチ・表紙・中扉・感情に訴える1枚

balanced スタイル(営業資料・提案書風/デフォルト)

  • Pitch.com / MorningBrew / Figma Slides の洗練
  • 見出し + 3-5項目の簡潔な箇条書き / 2-3ブロックの図解
  • テキスト40-60% / ビジュアル40-60%のバランス
  • 情報網羅は求めず、要点を絞る
  • 用途: 営業資料・提案書・プラン比較・実績紹介(今回のVibeCoder Bootcamp資料相当)

スライド毎のオーバーライド(_style

slides_plan.json で個別指定可能:

{
  "source_file": "00_cover",
  "_style": "visual",    ← 表紙だけ visual にする
  "title": "...",
  "content": "..."
}

_style が未指定なら --style のデフォルトを継承。

ユースケース別レコメンド

用途推奨備考
登壇用ピッチ資料visual表紙・章扉・キーメッセージを visual で
営業資料・提案書balanced今回の VibeCoder Bootcamp 相当
表紙+本編の混在--style balanced + 表紙だけ _style: visual最も良く使うパターン

ルート選択

判断基準ルート
「サクッと」「一括で」「まとめてスライドにして」B(高速)
「いい感じに」「ちゃんと」「プレゼン用に」A(高品質)
迷ったら聞く: 「丁寧に作る?サクッと作る?」
  • ルートA: 10-15枚、見た目重視。JSON手動作成5-10分 + 生成2-3分
  • ルートB: 20枚以上、速度重視。SubAgent並列JSON自動生成、全自動2-3分

Provider選択

デフォルトは OpenAI (gpt-image-2)。特段の理由がない限り OpenAI を使う。

判断基準Provider
指定なし(デフォルト)openai
「OpenAIで」「GPTで」「gpt-image-2で」openai
「Geminiで」「nano bananaで」「3.1 Flashで」gemini
日本語テキスト精度・営業資料・提案書openai
Google検索グラウンディング必要gemini
20枚以上の大量生成でコスト抑えたいgemini(並列度20・無料枠)
透明背景 / 参考画像多数(最大16枚)openai

比較したい場合: compare_providers.py で同じプロンプトで両方生成(後述)。

レート制限の目安(OpenAI)

TierIPM推奨--max-parallel
153
2208
35010
415020
525020+

Pre-flight

  1. .env.local から GEMINI_API_KEY を確認(プロジェクトルート → ~/.claude/.env.local の順)
  2. 未設定 → STOP(APIキー取得案内: https://aistudio.google.com/apikey)
  3. 依存チェック:
python3 -c "import PIL, pptx, requests, jinja2; print('OK')" 2>/dev/null || bash ${SKILL_DIR}/scripts/setup.sh

Phase 0: セッション準備

TIMESTAMP=$(date +%Y-%m-%d_%H%M) && OUTPUT_DIR="[指定された出力先]" && SESSION_DIR="${OUTPUT_DIR}/slides_output/${TIMESTAMP}" && mkdir -p ${SESSION_DIR}/{json,prompts,images}

Phase 1: デザインガイドライン作成

テンプレート: ${SKILL_DIR}/references/design_guidelines_template.md

プリセット使用時:

design-setup スキルでブランドを設定済みなら references/presets/.active_preset にプリセット名が記録されている。それを優先し、無ければ example-preset.md にフォールバックする。

ACTIVE_PRESET_FILE="${SKILL_DIR}/references/presets/.active_preset"
if [ -f "${ACTIVE_PRESET_FILE}" ]; then
  PRESET_NAME=$(cat "${ACTIVE_PRESET_FILE}")
  PRESET_PATH="${SKILL_DIR}/references/presets/${PRESET_NAME}"
  [ -f "${PRESET_PATH}" ] || PRESET_PATH="${SKILL_DIR}/references/presets/example-preset.md"
else
  PRESET_PATH="${SKILL_DIR}/references/presets/example-preset.md"
fi
cp "${PRESET_PATH}" "${SESSION_DIR}/design_guidelines.md"
echo "Using preset: $(basename "${PRESET_PATH}")"

カスタム作成時 — テンプレート参照し以下を決定:

  1. カラーパレット(テーマに合った色)
  2. 写真スタイル(ターゲット層の年代・性別・シーン)
  3. トーン(1-2文で方向性)
  4. フォントサイズ(ターゲットに応じて調整)
cat > ${SESSION_DIR}/design_guidelines.md << 'EOF'
[カスタマイズした内容]
EOF

Phase 2: slides_plan.json 作成(最重要)

route_a: 手動作成

入力を読み、各スライドの content を丁寧に書く。

content に含める項目:

  • <!-- Pattern X: 説明 --> — レイアウトヒント
  • 表示テキスト全文(タイトル、箇条書き、数値データ)
  • 背景写真指示(被写体、構図、雰囲気)
  • 図解・アイコン・グラフの内容
  • カラー使い分け(アクセント色の配置)
  • 言語強制: ※スライド上の全テキストは{lang}で表示すること。

構成目安: 表紙(G) → 課題提起(C/D) → ソリューション(B/C) → 市場(J) → ビジネスモデル(E) → 差別化(H/A) → ロードマップ(I) → まとめ(D) → CTA(G)

route_b: SubAgent並列

  1. MDファイルを Glob で検出
  2. 3-5個ずつチャンク分割
  3. 各チャンクに nanobanana-prompt-generator-subagent を並列起動(同一メッセージ内で複数Task呼び出し)
  4. 統合:
${PYTHON} ${SKILL_DIR}/scripts/merge_chunks.py \
  --input-dir ${SESSION_DIR}/json \
  --output ${SESSION_DIR}/json/slides_plan.json

グラウンディング制御

_grounding条件
true実在する製品・都市・ブランド・市場データ
false(デフォルト)抽象図解・テキスト中心・表紙/中扉・オリジナルイラスト

JSONスキーマ

{
  "slides": [
    {
      "slide_number": 0,
      "source_file": "00_cover",
      "title": "タイトル",
      "subtitle": "サブタイトル",
      "content": "<!-- Pattern G --> ...",
      "key_message": "核心メッセージ1文",
      "_grounding": false
    }
  ],
  "total_slides": 12
}

フィールド:

  • 必須: slide_number(数値), source_file(文字列), title, subtitle, content
  • オプション: key_message(文字列), _grounding(真偽値)
  • 禁止: slide_type, layout, visual_description(デザイン判断はGeminiが行う)

命名規則: 表紙 "00_cover" / 本編 "01_xxx""97_xxx" / まとめ "98_summary" / CTA "99_cta"

バリデーション

cat > ${SESSION_DIR}/json/slides_plan.json << 'JSONEOF'
{作成したJSON}
JSONEOF
${PYTHON} ${SKILL_DIR}/scripts/validate_slides_json.py --file ${SESSION_DIR}/json/slides_plan.json

Phase 3: プロンプト生成 + グラウンディングマップ

.active_style ファイル(design-setup が書き出す)があればその値を --style に渡す。無ければ balanced

ACTIVE_STYLE_FILE="${SKILL_DIR}/references/presets/.active_style"
if [ -f "${ACTIVE_STYLE_FILE}" ]; then
  STYLE=$(cat "${ACTIVE_STYLE_FILE}")
  [ -z "${STYLE}" ] && STYLE=balanced
else
  STYLE=balanced
fi

${PYTHON} ${SKILL_DIR}/scripts/generate_prompts_from_json.py \
  --session-dir ${SESSION_DIR} \
  --json-file json/slides_plan.json \
  --output-dir prompts \
  --design-guidelines ${SESSION_DIR}/design_guidelines.md \
  --style "${STYLE}" \
  --image-size 2K

スタイル切替:

  • --style balanced (デフォルト) — 営業資料・提案書風
  • --style visual — ピッチデッキ風(文字極少、ビジュアル主役)
  • JSON で個別指定 — 各スライドに "_style": "visual" を書けば、そのスライドだけ Visual に

JSONでの混在例:

{"source_file": "00_cover", "_style": "visual", "title": "...", "content": "..."},
{"source_file": "01_body", "title": "...", "content": "..."}

→ 表紙だけ Visual、本編は --style のデフォルト(balanced)を継承。

Phase 3.5: プロンプト検証(任意)

${PYTHON} ${SKILL_DIR}/scripts/render_test.py \
  --session-dir ${SESSION_DIR} \
  --design-guidelines ${SESSION_DIR}/design_guidelines.md

Phase 3.7: リファレンス画像マップ作成(任意)

特定のスライドに参照画像(キャラクター・ロゴ・写真等)をGeminiに渡したい場合、リファレンス画像マップを作成する。

cat > ${SESSION_DIR}/reference_image_map.json << 'JSONEOF'
{
  "Ryoko": "/path/to/ryoko_avatar.jpeg",
  "5-1.1_オープニング_07": "/path/to/specific_image.png"
}
JSONEOF

マッチングルール:

  • キーがスライドのベース名に部分一致すれば適用される
  • 例: "Ryoko"5-3.6_総合ケーススタディ_Ryoko_01.png にマッチ
  • 完全一致キーが優先される

ユーザーが画像を添付した場合、${SESSION_DIR}/images/ にコピーしてマップに登録する。

Phase 4: スライド画像生成

OpenAI GPT-image-2(デフォルト)

if [ -f .env.local ]; then source .env.local; elif [ -f ~/.claude/.env.local ]; then source ~/.claude/.env.local; fi && \
${PYTHON} ${SKILL_DIR}/scripts/generate_slides_parallel.py \
  --prompts-dir ${SESSION_DIR}/prompts \
  --output-dir ${SESSION_DIR}/images \
  --api-key "${OPENAI_API_KEY}" \
  --max-parallel 10 --max-retries 3 \
  --image-size 2K \
  --logo ${SKILL_DIR}/assets/

Como adicionar

/plugin marketplace add rsensui2/tekion-slide-generator

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Comentários · Nenhum comentário

Entre para comentar. Entrar

  • Ainda não há comentários. Seja o primeiro.