本文へ移動
cccskills
無料GitHub で公開

slide-creator

SVG でスライドを設計し、Python スクリプト (svg2pptx.py) で編集可能な PPTX に変換するスキル。デザイントークン・カラーパレット・レイアウト原則を統一し、高品質なプレゼンスライドを生成する。

インストール方法を見る

含まれるファイル(1)

  • SKILL.md28.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

SVG スライド作成スキル

概要

SVG (960×540) でスライドを設計し、src/svg2pptx.py で PowerPoint ネイティブシェイプに変換する。テキスト編集・色変更・移動が可能な状態で出力する。

トリガーワード

以下のキーワードが含まれる場合にこのスキルを使用する:

  • 「PPT作成」「スライド作成」「PowerPoint」「PPTX」
  • 「SVGスライド」「SVGで作って」「編集可能なスライド」
  • 「プレゼン資料」「スライド」

使用しない場合

  • Markdown ドキュメント(提案書・報告書・議事録)の作成
  • README やコード内コメントの作成
  • Word ドキュメントの作成

作成ワークフロー

Step 1: 要件確認

スライド作成の前に必ず確認する:

確認項目質問
目的何のためのスライド?(提案、報告、教育、共有)
対象読者誰が見る?(経営層、技術者、顧客、社内)
ページ数何枚程度?
トーンフォーマル?カジュアル?

Step 2: アウトライン作成

必ず内容作成の前にアウトラインを提示し、承認を得る。

非対話モード(SDK 実行時): プロンプトに「SDK非対話実行」と含まれる場合、 アウトラインの提示・承認ステップをスキップし、直接 Step 3 に進む。 質問や確認を返さず、1回のレスポンスですべてのスライドファイルを生成すること。

## アウトライン案

1. 表紙(タイトルスライド)
2. エグゼクティブサマリー(1枚)
3. 背景・課題(1-2枚)
4. 提案内容(3-5枚)
5. 効果・メリット(1-2枚)
6. スケジュール・ロードマップ(1枚)
7. 次のステップ(1枚)

Step 3: SVG スライド生成

アウトライン承認後(非対話モードでは即座に)、スライドごとに SVG (960×540) を生成する。 本スキルの「SVG スライド設計ルール」「デザイントークン」「カラー使用原則」に従うこと。


PowerPoint スライド作成ルール

構造

各スライドは以下の形式で記述する:

---
### スライド [番号]: [タイトル]

**キーメッセージ:** [このスライドで伝えたい1文]

**内容:**
- ポイント1
- ポイント2
- ポイント3

**ビジュアル:** [図表・グラフ・画像の説明]

**スピーカーノート:**
[プレゼンで話す内容の補足]
---

デザインディレクション

目指す雰囲気: Microsoft モダンスライド品質

Microsoft の最新のプレゼン資料や Azure マーケティングスライドのような洗練さ。 微細なグラデーション、半透明の幾何学装飾、充分な余白、コントラストの効いた配色。 「高級コンサルのデリバラブル」であり、「社内勉強会のスライド」ではない。

美的キーワード(生成時に意識する)

  • モダン — テック企業のプレゼンのような洗練さ。平面的ではなく奥行きがある
  • リッチ — 安っぽいフラットではなく、微細な装飾とグラデーションで高級感を出す
  • レイヤード — 半透明の幾何学要素を重ねて深みを作る
  • コントラスト — ダーク背景ヘッダー × ライト背景コンテンツで視線を導く
  • タイポグラフィ重視 — フォントサイズの差(大タイトル vs 小本文)で階層を作る

装飾の使い方(重要)

微細な装飾で高級感を出す。「何も置かない」のではなく、さりげなく深みを加える。

  • ティール装飾円 — 大きなティール系の円(#1A3A4A, #2A7A8C)を opacity 0.6〜0.9 で重ね塗り。端がスライド外にはみ出すくらいがちょうどよい。深みと彩りを加える
  • ドットパターン / ネットワーク図形 — 小さな白い円と線でノードを描き、コーナーに配置(opacity 0.2〜0.4)
  • アクセントライン — 細いラインや区切り線にシアン(#00D4FF)を使って視線を引く
  • グロー効果 — 装飾円に radialGradient を使い、シアン(#00D4FF)を中心からフェードアウトさせると光の印象が出る

グラデーションの使い方(重要)

ベタ塗りの単色背景は平面的でつまらない。微細なグラデーションで奥行きと高級感を出す。

SVG では <defs> 内に <linearGradient> / <radialGradient> を定義し、fill="url(#id)" で参照する。 svg2pptx.py が自動的に PPTX ネイティブグラデーションに変換する。

推奨グラデーションパターン
用途タイプ開始色終了色方向
タイトルスライド背景linear#0D1B2A#1B2A4A上→下
ヘッダーバーlinear#1B2A4A#1A3A4A左→右
コンテンツ背景linear#F5F7FA#EEF1F5上→下
装飾円(ティール)solid#1A3A4A (opacity 0.7)——
装飾円(シアングロー)radial#00D4FF (opacity 0.12)透明中心→外
カード背景linear#FAFBFC#EEF1F5上→下
SVG グラデーションの書き方
<defs>
  <!-- 細かい縦グラデ: ダークネイビー → やや明るいネイビー -->
  <linearGradient id="bg-dark" x1="0" y1="0" x2="0" y2="1">
    <stop offset="0%" stop-color="#1B2A4A"/>
    <stop offset="100%" stop-color="#243660"/>
  </linearGradient>

  <!-- ヘッダー横グラデ: ダーク → ディープブルー -->
  <linearGradient id="header-grad" x1="0" y1="0" x2="1" y2="0">
    <stop offset="0%" stop-color="#1B2A4A"/>
    <stop offset="100%" stop-color="#2B5797"/>
  </linearGradient>

  <!-- ライト背景グラデ: ほぼ白 → 淡いグレー -->
  <linearGradient id="bg-light" x1="0" y1="0" x2="0" y2="1">
    <stop offset="0%" stop-color="#F5F7FA"/>
    <stop offset="100%" stop-color="#EEF1F5"/>
  </linearGradient>

  <!-- 装飾用放射グラデ: 中心からフェードアウト -->
  <radialGradient id="glow" cx="0.5" cy="0.5" r="0.5">
    <stop offset="0%" stop-color="#4A8BC2" stop-opacity="0.15"/>
    <stop offset="100%" stop-color="#4A8BC2" stop-opacity="0"/>
  </radialGradient>
</defs>

<!-- 使い方 -->
<rect width="960" height="540" fill="url(#bg-dark)"/>
<rect x="0" y="0" width="960" height="70" fill="url(#header-grad)"/>
<circle cx="800" cy="100" r="200" fill="url(#glow)"/>
グラデーション使用原則
  1. 深度グラデーション — Deep Navy → Navy Dark → Teal Dark の深度差で奥行きを出す。色相が大きく変わるグラデはしない
  2. 背景と装飾に使う — テキストボックスやカード内の小さな要素には不要
  3. 派手なレインボーグラデ禁止 — 複数の色相をまたぐグラデーションは NG
  4. 放射グラデは装飾専用 — シアングローやライトアクセントとして使う
  5. ストップは最大2つ — シンプルな2色グラデーションが基本

やってはいけないデザイン

  • 色のレインボー使い(安っぽくなる)
  • 要素の詰め込み(余白なし = 素人感)
  • 蛍光色・ビビッド色(#50E6FF, #FF8C00 等)
  • すべてのボックスに枠線(うるさくなる)
  • ベタ塗りの単色背景(平面的でつまらない → グラデーションを使う)
  • 装飾のないタイトルスライド(社内勉強会感が出る)
  • 派手なレインボーグラデーション(複数色相をまたぐグラデ = 2010年代感)

レイアウト原則

  • 1スライド1メッセージ — 詰め込まない
  • 箇条書きは最大5点 — 超える場合は分割
  • テキスト量は最小限 — 話す内容はスピーカーノートに
  • 図表を優先 — 文章 < 表 < 図 < Mermaid ダイアグラム
  • 数字は大きく — KPI やインパクトは視覚的に強調
  • 余白は全体の30%以上 — 左右マージン40px以上、要素間の間隔を十分に取る

対象読者別の調整

対象フォーカス避けるべきこと
経営層ビジネスインパクト、ROI、リスク技術詳細、専門用語
技術者アーキテクチャ、実装、選定理由曖昧な表現、マーケ用語
顧客課題解決、具体的なメリット自社都合の話


SVG → PPTX ワークフロー(編集可能なスライド生成)

概要

SVG (XML ベース) でスライドを設計し、Python スクリプトで PPTX のネイティブシェイプに変換する。 画像として貼るのではなく、PowerPoint 上でテキスト編集・色変更・移動が可能な状態で出力する。

なぜ SVG 経由なのか

比較項目Markdown → 手動転記SVG → PPTX 変換
デザイン自由度低(テキスト中心)高(座標・色・フォント指定可能)
出力の編集性—ネイティブシェイプで完全編集可能
Copilot との相性◎(テキスト生成)◎(SVG もテキスト/XML)
見た目の品質手動次第プログラム的に統一

ワークフロー

Step 1: Copilot が SVG を生成(スライドごとに1つの SVG)
Step 2: Python スクリプト (svg2pptx.py) で PPTX に変換
Step 3: PowerPoint で微調整(テキスト修正、色変更など)

Step 1: SVG スライド設計ルール

Copilot が SVG を生成するときのルール:

スライドサイズ

幅: 960px(= 25.4cm、標準 16:9)
高さ: 540px

使用する SVG 要素と PPTX マッピング

SVG 要素PPTX でのマッピング用途
<rect>AutoShape (Rectangle)背景、ボックス、カード
<rect rx="...">AutoShape (Rounded Rectangle)角丸ボックス
<text>TextBoxタイトル、本文、ラベル
<circle> / <ellipse>AutoShape (Oval)アイコン背景、装飾
<line>Connector区切り線、接続線
<polygon>Freeform Shape矢印、カスタム図形
<g>Group Shape要素のグループ化
<defs>(定義用)グラデーション等の定義置き場
<linearGradient>GradientFill (linear)線形グラデーション
<radialGradient>GradientFill (path)放射グラデーション

SVG テンプレート構造

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 540">
  <defs>
    <!-- コンテンツ背景グラデ -->
    <linearGradient id="bg-light" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#F5F7FA"/>
      <stop offset="100%" stop-color="#EEF1F5"/>
    </linearGradient>
    <!-- ヘッダー横グラデ: ネイビー → ティール -->
    <linearGradient id="header-grad" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0%" stop-color="#1B2A4A"/>
      <stop offset="100%" stop-color="#1A3A4A"/>
    </linearGradient>
  </defs>

  <!-- 背景(微細グラデーション) -->
  <rect width="960" height="540" fill="url(#bg-light)"/>

  <!-- タイトルバー(横グラデーション) -->
  <rect x="0" y="0" width="960" height="80" fill="url(#header-grad)"/>
  <text x="40" y="52" font-size="28" font-weight="bold"
        fill="#FFFFFF" font-family="Segoe UI">スライドタイトル</text>

  <!-- コンテンツエリア -->
  <text x="40" y="140" font-size="18" fill="#1E2328"
        font-family="Segoe UI">• ポイント1</text>
  <text x="40" y="175" font-size="18" fill="#1E2328"
        font-family="Segoe UI">• ポイント2</text>

  <!-- カード型レイアウト例 -->
  <rect x="40" y="220" width="260" height="160" rx="8"
        fill="#EEF1F5" stroke="#C8CED6"/>
  <text x="60" y="260" font-size="16" font-weight="bold"
        fill="#1E2328" font-family="Segoe UI">カード1</text>
  <text x="60" y="290" font-size="14"
        fill="#4A5568" font-family="Segoe UI">説明テキスト</text>
</svg>

デザイントークン(カラーパレット)

メインパレット(深海ネイビー × シアンアクセント)
Deep Navy:    #0D1B2A (最深ネイビー — タイトルスライド全面背景)
Navy Dark:    #1B2A4A (ダークネイビー — ヘッダー・セクション背景)
Teal Dark:    #1A3A4A (ダークティール — 装飾円・オーバーレイ)
Teal:         #2A7A8C (ティール — 装飾グラデーション・中間色)
Cyan:         #00D4FF (ブライトシアン — アクセント見出し・強調線)
Cyan Pale:    #E0F7FA (ペイルシアン — ライト背景のアクセント帯)
ニュートラル(テキスト・背景・ボーダー)
Background:   #FAFBFC (メイン背景 — ほぼ白)
Surface:      #EEF1F5 (カード・セクション背景)
Border:       #C8CED6 (ボーダー・区切り線)
Text Dark:    #1E2328 (タイトル・見出し)
Text Body:    #4A5568 (本文テキスト)
Text Muted:   #8B939E (補足・注釈)
White:        #FFFFFF (テキストon暗背景)
Text Light:   #B0C4D8 (暗背景上のサブテキスト・説明文)
アクセント(控えめに使用 — 1スライドに最大1色)
Warm:         #8B6914 (少量の注意喚起ポイント用)
ステータス色(凡例・アイコン専用 — 本文では使わない)
Success:      #2D6A4F (落ち着いた緑)
Warning:      #B8860B (渋いゴールド)
Error:        #9B2C2C (深い赤)

カラー使用原則

  1. 1スライド最大4色 — Navy系 + シアン + ニュートラル + (任意で) アクセント1色
  2. 深度で差をつける — Deep Navy → Navy Dark → Teal Dark の深度グラデーションで奥行きを出す
  3. シアンはアクセント専用 — 見出し・強調線・サブタイトルなど目を引く要素に使う。面積15%以下
  4. 暗背景にティール装飾 — 大きなティール円を重ねて深みと彩りを加える
  5. レインボー禁止 — 凡例やカテゴリ分けも同系色の濃淡で表現する
  6. ダーク背景ヘッダー + ライト背景本文 — コントラストで高級感を出す
  7. 文字は背景と明度差を確保 — コントラスト比 4.5:1 以上。薄色文字はダーク背景のみ

Step 2: 変換スクリプト実行

# 変換実行(フォルダ名から自動命名)
python src/svg2pptx.py output/slides/2026-03-03_143052_テーマ名/
# → 2026-03-03_テーマ名.pptx が同フォルダに生成される

# 出力ファイル名を明示する場合
python src/svg2pptx.py slides/ -o custom_name.pptx

変換スクリプトの実体は src/svg2pptx.py(リポジトリルート)。

Step 3: PowerPoint での微調整

変換後の PPTX は以下が編集可能:

  • テキストの直接編集
  • シェイプの色・サイズ変更
  • 要素の移動・追加・削除
  • アニメーションの追加
  • スピーカーノートの編集

SVG スライドパターン集

パターン1: タイトルスライド

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 540">
  <defs>
    <!-- タイトル背景: 最深ネイビー → ダークネイビー -->
    <linearGradient id="bg-dark" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#0D1B2A"/>
      <stop offset="100%" stop-color="#1B2A4A"/>
    </linearGradient>
    <!-- シアングロー: 中心から半透明フェードアウト -->
    <radialGradient id="glow-cyan" cx="0.5" cy="0.5" r="0.5">
      <stop offset="0%" stop-color="#00D4FF" stop-opacity="0.12"/>
      <stop offset="100%" stop-color="#00D4FF" stop-opacity="0"/>
    </radialGradient>
  </defs>

  <!-- 背景: 深度グラデーションで奥行き -->
  <rect width="960" height="540" fill="url(#bg-dark)"/>

  <!-- ティール装飾円: 大きく重ねて深みを出す -->
  <circle cx="650" cy="480" r="300" fill="#1A3A4A" opacity="0.7"/>
  <circle cx="850" cy="400" r="220" fill="#2A7A8C" opacity="0.5"/>

  <!-- シアングロー(右上) -->
  <circle cx="800" cy="100" r="200" fill="url(#glow-cyan)"/>

  <!-- ネットワーク図形(コーナー装飾) -->
  <circle cx="800" cy="80" r="3" fill="#FFFFFF" opacity="0.4"/>
  <circle cx="840" cy="60" r="3" fill="#FFFFFF" opacity="0.4"/>
  <circle cx="870" cy="100" r="3" fill="#FFFFFF" opacity="0.4"/>
  <circle cx="830" cy="120" r="3" fill="#FFFFFF" opacity="0.4"/>
  <circle cx="860" cy="140" r="3" fill="#FFFFFF" opacity="0.3"/>
  <line x1="800" y1="80" x2="840" y2="60" stroke="#FFFFFF" stroke-width="1" opacity="0.2"/>
  <line x1="840" y1="60" x2="870" y2="100" stroke="#FFFFFF" stroke-width="1" opacity="0.2"/>
  <line x1="870" y1="100" x2="830" y2="120" stroke="#FFFFFF" stroke-width="1" opacity="0.2"/>
  <line x1="830" y1="120" x2="800" y2="80" stroke="#FFFFFF" stroke-width="1" opacity="0.2"/>

  <!-- タイトル -->
  <text x="80" y="220" font-size="36" font-weight="bold"
        fill="#FFFFFF" font-family="Segoe UI">プレゼンテーションタイトル</text>

  <!-- サブタイトル(ブライトシアン) -->
  <text x="80" y="270" font-size="22"
        fill="#00D4FF" font-family="Segoe UI">サブタイトル</text>

  <!-- アクセントライン(シアン) -->
  <line x1="80" y1="290" x2="280" y2="290"
        stroke="#00D4FF" stroke-width="3"/>

  <!-- 補足情報 -->
  <text x="80" y="330" font-size="14"
        fill="#B0C4D8" font-family="Segoe UI">補足説明テキストをここに</text>
  <text x="80" y="355" font-size="14"
        fill="#B0C4D8" font-family="Segoe UI">2行目の補足テキスト</text>

  <!-- 日付 -->
  <text x="80" y="490" font-size="14"
        fill="#8B939E" font-family="Segoe UI">2026年3月</text>

  <!-- フッター -->
  <text x="880" y="520" font-size="12"
        fill="#8B939E" font-family="Segoe UI"
        text-anchor="end">Microsoft Azure</text>
</svg>

パターン2: 3カラムカード

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 540">
  <defs>
    <linearGradient id="bg-light" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#F5F7FA"/>
      <stop offset="100%" stop-color="#EEF1F5"/>
    </linearGradient>
    <linearGradient id="header-grad" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0%" stop-color="#1B2A4A"/>
      <stop offset="100%" stop-color="#1A3A4A"/>
    </linearGradient>
  </defs>

  <rect width="960" height="540" fill="url(#bg-light)"/>
  <rect x="0" y="0" width="960" height="70" fill="url(#header-grad)"/>
  <text x="40" y="46" font-size="24" font-weight="bold"
        fill="#FFFFFF" font-family="Segoe UI">3つのポイント</text>

  <!-- カード1(ダークネイビー) -->
  <rect x="40" y="100" width="270" height="380" rx="8"
        fill="#EEF1F5" stroke="#C8CED6"/>
  <circle cx="175" cy="170" r="35" fill="#1B2A4A"/>
  <text x="175" y="178" font-size="24" fill="#FFFFFF"
        font-family="Segoe UI" text-anchor="middle">1</text>
  <text x="175" y="240" font-size="18" font-weight="bold"
        fill="#1E2328" font-family="Segoe UI"
        text-anchor="middle">ポイント1</text>
  <text x="60" y="280" font-size="14"
        fill="#4A5568" font-family="Segoe UI">説明テキストを</text>
  <text x="60" y="300" font-size="14"
        fill="#4A5568" font-family="Segoe UI">ここに記載する</text>

  <!-- カード2(ダークティール) -->
  <rect x="345" y="100" width="270" height="380" rx="8"
        fill="#EEF1F5" stroke="#C8CED6"/>
  <circle cx="480" cy="170" r="35" fill="#1A3A4A"/>
  <text x="480" y="178" font-size="24" fill="#FFFFFF"
        font-family="Segoe UI" text-anchor="middle">2</text>
  <text x="480" y="240" font-size="18" font-weight="bold"
        fill="#1E2328" font-family="Segoe UI"
        text-anchor="middle">ポイント2</text>

  <!-- カード3(シアンアクセント) -->
  <rect x="650" y="100" width="270" height="380" rx="8"
        fill="#EEF1F5" stroke="#C8CED6"/>
  <circle cx="785" cy="170" r="35" fill="#2A7A8C"/>
  <text x="785" y="178" font-size="24" fill="#FFFFFF"
        font-family="Segoe UI" text-anchor="middle">3</text>
  <text x="785" y="240" font-size="18" font-weight="bold"
        fill="#1E2328" font-family="Segoe UI"
        text-anchor="middle">ポイント3</text>
</svg>

パターン3: 比較表

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 540">
  <defs>
    <linearGradient id="bg-light" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#F5F7FA"/>
      <stop offset="100%" stop-color="#EEF1F5"/>
    </linearGradient>
    <linearGradient id="header-grad" x1="0" y1="0" x2="1" y2="0">
      <stop offset="0%" stop-color="#1B2A4A"/>
      <stop offset="100%" stop-color="#1A3A4A"/>
    </linearGradient>
    <linearGradient id="col-left" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#1B2A4A"/>
      <stop offset="100%" stop-color="#1A3A4A"/>
    </linearGradient>
    <linearGradient id="col-right" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0%" stop-color="#1A3A4A"/>
      <stop offset="100%" stop-color="#2A7A8C"/>
    </linearGradient>
  </defs>

  <rect width="960" height="540" fill="url(#bg-light)"/>
  <rect x="0" y="0" width="960" height="70" fill="url(#header-grad)"/>
  <text x="40" y="46" font-size="24" font-weight="bold"
        fill="#FFFFFF" font-family="Segoe UI">比較: A vs B</text>

  <!-- 左カラム(ネイビー → ティールグラデ) -->
  <rect x="40" y="100" width="420" height="50" rx="4"
        fill="url(#col-left)"/>
  <text x="250" y="132" font-size="18" font-weight="bold"
        fill="#FFFFFF" font-family="Segoe UI"
        text-anchor="middle">プランA</text>
  <rect x="40" y="155" width="420" height="40"
        fill="#EEF1F5" stroke="#C8CED6"/>
  <text x="60" y="180" font-size="14"
        fill="#1E2328" font-family="Segoe UI">特徴1の説明</text>

  <!-- 右カラム(ティールグラデ — 同系色で対比) -->
  <rect x="500" y="100" width="420" height="50" rx="4"
        fill="url(#col-right)"/>
  <text x="710" y="132" font-size="18" font-weight="bold"
        fill="#FFFFFF" font-family="Segoe UI"
        text-anchor="middle">プランB</text>
  <rect x="500" y="155" width="420" height="40"
        fill="#EEF1F5" stroke="#C8CED6"/>
  <text x="520" y="180" font-size="14"
        fill="#1E2328" font-family="Segoe UI">特徴1の説明</text>
</svg>

出力ルール

保存先

成果物の種類保存先
SVG スライドoutput/slides/YYYY-MM-DD_HHmmss_スライド名/slide01.svg 〜
変換後 PPTXoutput/slides/YYYY-MM-DD_HHmmss_スライド名/YYYY-MM-DD_スライド名.pptx(自動命名)

重複回避

フォルダ名に時分秒(HHmmss)を含めることで自然に一意になる。 同日・同テーマでも実行時刻が異なれば別フォルダになるため、サフィックス管理は不要。

output/slides/2026-03-03_143052_ACA-ネットワーク/   ← 1回目(14:30:52)
output/slides/2026-03-03_153210_ACA-ネットワーク/   ← 2回目(15:32:10)
  • 既存ファイルは絶対に上書き・削除しない

品質基準

  • 日本語で作成する
  • そのまま使える品質を目指す
  • 具体的な数字・事実を優先する(「多くの」ではなく「80%の」)
  • 各セクションの分量バランスを意識する
  • ドキュメントの最後に情報源一覧を入れる

SVG 出力時の追加ルール

  • スライドサイズ 960x540 を厳守する
  • デザイントークンのカラーパレットに従う(メインパレット + ニュートラルが基本)
  • カラー使用原則を必ず守る — 1スライド最大4色、深度で差をつける、シアンはアクセント専用
  • グラデーション必須 — 背景やヘッダーはベタ塗りでなく <defs> にグラデーションを定義して fill="url(#id)" で参照する
  • <defs> を SVG の先頭に置く — グラデーション定義はすべて <defs>...</defs> 内にまとめる
  • ティール装飾円 — ダーク背景のタイトルスライドには大きなティール円(#1A3A4A, #2A7A8C)を重ねて深みを出す
  • アクセント色(Warm)は明確な意図がある場合のみ使用する
  • ファイル名は slide01.svg, slide02.svg, ... の連番
  • ハイパーリンク — 情報源の URL を <a> タグで埋め込む(PPTX でクリック可能になる)

🚫 禁止カラー(絶対に使わない)

以下の Azure ブランドカラーは絶対に使用禁止。トレーニングデータの影響で出力されがちだが、カスタムパレットのみを使うこと。

色名Hex代わりに使う色
Azure Blue#0078D4#1B2A4A(Deep Navy)または #00D4FF(Cyan)
Azure Light Blue#50E6FF#00D4FF(Bright Cyan)
Azure Dark Blue#005A9E#0D1B2A(Deep Navy Dark)
Azure Pale Blue#B4D6F5#E0F7FA(Light Cyan)
Azure Green#107C10使用しない
Azure Yellow#FFB900#F4A261(Warm Accent Orange、必要時のみ)
Azure Red#E81123#E76F51(Warm Accent Coral、必要時のみ)
Azure Purple#8764B8使用しない

判定基準: #0078D4 や #50E6FF が SVG に含まれていたら間違い。必ず上記カスタムパレットの色に置き換える。

🚫 SVG 構造の制約

PPTX 変換の互換性と品質を保つため、以下のルールを厳守する。

座標の直接指定(必須):

  • 各要素(<rect>, <text>, <circle> 等)の座標は x, y, cx, cy 等の属性で直接指定する
  • <g transform="translate(x, y)"> による間接オフセットは避ける(svg2pptx.py は対応しているが、デバッグしづらくなるため非推奨)

スタイル属性の直書き(推奨):

  • style="fill: #0D1B2A; stroke: none" ではなく、fill="#0D1B2A" stroke="none" のように属性として直接記述する
  • グラデーションの <stop> も stop-color="#0D1B2A" を属性で書く(style="stop-color:..." は避ける)

OK な例:

<rect x="100" y="50" width="200" height="80" fill="url(#grad1)" rx="8"/>
<text x="120" y="90" font-size="16" fill="#E0F7FA">テキスト</text>

NG な例(避ける):

<!-- ❌ translate でオフセット -->
<g transform="translate(100, 50)">
  <rect x="0" y="0" width="200" height="80" fill="#0078D4"/>
</g>
<!-- ❌ style 属性に CSS を詰め込む -->
<rect x="100" y="50" style="fill: #0078D4; width: 200px"/>
<!-- ❌ Azure ブランドカラー -->
<rect x="0" y="0" width="960" height="80" fill="#0078D4"/>

ハイパーリンクの記法

各スライドに情報源(MS Learn 等)へのリンクを入れる場合、SVG の <a> タグを使う:

<!-- パターン A: テキスト全体がリンク -->
<a href="https://learn.microsoft.com/ja-jp/azure/...">
  <text x="30" y="520" font-size="10" fill="#00D4FF">📖 詳細: MS Learn →</text>
</a>

<!-- パターン B: テキストの一部がリンク(<text> 内に <a> を入れる) -->
<text x="30" y="520" font-size="10" fill="#B0C4D8">
  出典:
  <a href="https://learn.microsoft.com/ja-jp/azure/...">
    <tspan fill="#00D4FF">MS Learn — Azure Container Apps</tspan>
  </a>
</text>

ルール:

  • リンクテキストの fill は #00D4FF(Cyan)で統一する
  • フッター付近(y="510"〜520")に配置する
  • 調査スライドには必ず情報源リンクを入れる

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

customer-research

無料日本語概要

顧客企業の情報、業界動向、導入事例を調査し、提案・プリセールス活動に役立つインサイトを構造的にまとめるスキル。

kanazawazawa/copilot-agent-workspace52026年6月2日 更新

document-writer

無料日本語概要

Markdown で提案書・報告書・議事録などのビジネスドキュメントを構造的に作成するスキル。対象読者に応じた表現で、そのまま使える品質を目指す。

kanazawazawa/copilot-agent-workspace52026年6月2日 更新

ms-learn-research

無料日本語概要

Microsoft Learn の公式ドキュメントを調査し、正確で最新の情報を構造的にまとめるスキル。Azure サービスの仕様確認、機能比較、ベストプラクティスの調査に使用する。

kanazawazawa/copilot-agent-workspace52026年6月2日 更新

kanazawazawa のスキルをすべて見る

このスキルの問題を報告する