infographic について
入力テキストを印刷品質のインフォグラフィック PNG にするスキルです。内容に応じてレイアウトを選び、名前付きのスタイルと独立して選べるカラーパレットを備えています。
主な機能
- 01テキストからインフォグラフィック PNG を生成
- 02内容に基づくレイアウト判定
- 039 種類の名前付きビジュアルスタイル
- 04スタイルとカラーパレットの組み合わせ
- 05幅 2000px の PNG を出力
活用シーン
- 01記事の要約を統計ブロック図にする
- 02選択肢を並列インフォグラフィックで比較
- 03順位のある数値を棒グラフで可視化
- 04番号付きステップでプロセスを表現
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cerico/ macfair --skill infographicインストール後、Claude Code で/infographicを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
palettes/desert.mdearth.mdforest.mdnordic.mdocean.mdstyles/c82.mdeuclid.mdnico.mdolive.mdparks.mdpreston.mdtimber.mdtransit.mdwerner.md詳細
インフォグラフィック生成ツール
あらゆるテキストを印刷品質のインフォグラフィック PNG に変換します。
使用方法
/infographic
/infographic nico
/infographic olive
/infographic werner
/infographic transit
/infographic parks
/infographic euclid
/infographic timber
/infographic preston
プロンプトが表示されたら、コンテンツを貼り付けるか説明してください。
または、テキストを直接指定します:
/infographic "Your article or content here..."
/infographic olive "When should I use X vs Y?"
/infographic werner "List the primary colors with examples"
/infographic transit "Rank the tallest buildings in NYC"
/infographic parks "Compare 3 national parks with stats"
/infographic euclid "Overview of geometry concepts"
/infographic timber "History of JavaScript frameworks"
/infographic preston "How to deploy a Next.js app"
パレット
パレットはスタイルとは独立して色を設定します。任意のスタイルと任意のパレットを組み合わせられます。
使用方法
# Style with default palette
/infographic olive "..."
# Style with specific palette
/infographic olive:nordic "..."
/infographic olive --palette nordic "..."
使用できるパレット
| パレット | キャンバス | 説明 |
|---|---|---|
| earth | 明るい | 温かみのあるクリーム色にセージのアクセント(デフォルト) |
| nordic | 暗い | 涼しげなブルーグレーに霜のアクセント |
| desert | 明るい | 砂色を基調にテラコッタのアクセント |
| ocean | 明るい | 淡いブルーグレーにティールのアクセント |
| forest | 暗い | 深い緑に苔色のアクセント |
デフォルトのパレット割り当て
| スタイル | デフォルトのパレット |
|---|---|
| olive | earth |
| c82 | earth |
| nico | earth |
| werner | earth |
| transit | earth |
| parks | forest |
| euclid | earth |
| timber | earth |
| preston | earth |
互換性
スタイルにはキャンバスの推奨設定(light、dark、any)が定義されています。スタイルの推奨設定とパレットのキャンバスタイプが競合する場合:
- 警告が表示されます
- 読みやすさを確保するため、テキストの色が
text.onDark/text.onLightに切り替わります
トークンのリファレンス
スタイルでは次のトークンを使用します(有効なパレットから解決されます)。
| トークン | SVG プレースホルダー | 用途 |
|---|---|---|
{canvas} | {canvasColor} | 背景の塗りつぶし |
{text.primary} | {textColor} | メインの見出し/本文 |
{text.secondary} | {secondaryColor} | 補足テキスト |
{text.muted} | {mutedColor} | 控えめなラベル |
{text.onDark} | {textOnDark} | 暗いカード上のテキスト |
{text.onLight} | {textOnLight} | 明るいカード上のテキスト |
{accents[0-3]} | {accentColor} | アクセントカラー(配列内で順に使用) |
{cards.primary} | {primaryCard} | メインカードの塗りつぶし |
{cards.secondary} | {secondaryCard} | サブカードの塗りつぶし |
{rules} | {ruleColor} | 区切り線 |
スタイルの解決
最初の引数(引用符で囲まれたテキストでない場合)は、スタイル名として扱われます。デフォルトは c82 です。
読み込み順序:
- このスキルディレクトリから
styles/<name>.mdを読み込みます - スタイルに
inherits: design:<name>が宣言されている場合は、スキルディレクトリからdesign/<name>/SKILL.mdも読み込みます - デザインシステムを土台とし、インフォグラフィックスタイルで上書きします
使用できるスタイル:
- c82(デフォルト)— 古典的なタイポグラフィ、温かみのあるクリーム色のキャンバス、彩度を抑えた自然主義のパレット。統計ブロックに最適です。
- nico — 暗い森林風の美観、明るく輝くテキスト、彩度を抑えたアクセント。統計ブロックに最適です。
- olive — 柔らかなアースカラー、角丸カード、影。決定木や比較に最適です。
- werner — 色見本と複数列を使った古典的なカタログ/表レイアウト。カタログや参照チャートに最適です。
- transit — 目盛り付きの縦棒グラフ、順位付けされたデータ。数量による比較に最適です。
- parks — 色付きタイルのグリッドとアイコン+値を備えた暗いダッシュボード。複数の統計情報の比較に最適です。
- euclid — 幾何学的なイラストを使ったバウハウスカラーのギャラリーグリッド。アイテムを視覚的に並べるギャラリーに最適です。
- timber — 背骨となる軸と、交互に配置されたイベントカードを備えた縦型タイムライン。時系列の歴史に最適です。
- preston — 番号付きの手順と接続矢印を備えたプロセスフローチャート。操作ガイドに最適です。
処理手順
- スタイルの解決 — 引数からスタイルを判断し、スタイルファイルを読み込みます
- レイアウトの検出 — コンテンツを分析して最適なレイアウトタイプを判断します
- 構造の抽出 — 検出したレイアウトに合う構造化データを抽出します
- SVG の生成 — 読み込んだスタイルガイドに沿って SVG を記述します
- PNG のエクスポート — 高解像度の PNG(幅 2000px)に変換します
- 表示 — 結果を表示して確認します
出力先
ファイルの保存先:~/Downloads/infographic-{timestamp}.png
レイアウト検出
入力コンテンツを分析し、適切なレイアウトを選択します。
| コンテンツのパターン | レイアウト | 最適なスタイル |
|---|---|---|
| 「XならY」、「使用する場面」、はい/いいえの質問、二者択一 | decision-tree | olive |
| 「A対B」、選択肢の比較、長所/短所、代替案 | comparison | olive |
| 統計、重要な調査結果、セクション、要約 | stat-block | c82, nico |
| 複数の属性を持つリスト、カラーパレット、仕様 | catalog | werner |
| 比較する順位付きの数量、長さ、高さ、件数 | bars | transit |
| アイテムごとに複数の数値統計を示すもの、ダッシュボード | tiles | parks |
| イラスト/アイコンとキャプションを含む視覚的なアイテム | gallery | euclid |
| 時系列の出来事、歴史、進化、マイルストーン | timeline | timber |
| 順を追った手順、ハウツーガイド、ワークフロー、プロセス | process | preston |
検出ルール:
- コンテンツが、明確に異なる2つの回答経路を持つ質問をしている場合 →
decision-tree - コンテンツが、明確に異なる2~4つの選択肢/アプローチを比較している場合 →
comparison - コンテンツが、アイテムごとに複数の属性(色、仕様など)を持つリストを示している場合 →
catalog - コンテンツが、単一の数量(高さ、長さ、件数)でアイテムを順位付けしている場合 →
bars - コンテンツが、アイテムごとに複数の数値統計を示している場合(ダッシュボード形式) →
tiles - コンテンツが、ラベル/説明付きの視覚的なアイテムを示している場合 →
gallery - コンテンツが、日付/年を含む時系列の出来事を示している場合 →
timeline - コンテンツが、順を追った手順やプロセスを説明している場合 →
process - それ以外の場合 →
stat-block(デフォルト)
スタイルとレイアウトの親和性:
oliveスタイルは、デフォルトでdecision-treeとcomparisonのどちらかを自動検出しますwernerスタイルは、デフォルトでcatalogレイアウトを使用しますtransitスタイルは、デフォルトでbarsレイアウトを使用しますparksスタイルは、デフォルトでtilesレイアウトを使用しますeuclidスタイルは、デフォルトでgalleryレイアウトを使用しますtimberスタイルは、デフォルトでtimelineレイアウトを使用しますprestonスタイルは、デフォルトでprocessレイアウトを使用しますc82およびnicoスタイルは、デフォルトでstat-blockレイアウトを使用します
レイアウト:stat-block(デフォルト)
セクション、統計、重要な要点を含む古典的なインフォグラフィックです。
抽出スキーマ
{
layout: "stat-block"
title: string // Main title, 3-10 words
subtitle?: string // Optional tagline
sections: [{ // 2-4 sections
heading: string // Section heading, 3-8 words
content: string // 1-2 sentences max
stats?: [{ // Up to 3 stats per section
value: string // e.g. "85%", "1.2M"
label: string // What it represents
}]
}]
keyTakeaway: string // Single most important insight
}
SVG テンプレートの構造
<svg width="800" height="1100" xmlns="http://www.w3.org/2000/svg">
<rect width="800" height="1100" fill="{canvasColor}"/>
<rect x="{inset}" y="{inset}" width="{w-2*inset}" height="{h-2*inset}" fill="none" stroke="{ruleColor}" stroke-width="1"/>
<text x="400" y="100" text-anchor="middle" fill="{textColor}" font-size="36" font-weight="bold" font-family="{headingFont}">{title}</text>
<text x="400" y="132" text-anchor="middle" fill="{mutedColor}" font-size="16" font-style="italic" font-family="{headingFont}">{subtitle}</text>
<line x1="200" y1="160" x2="600" y2="160" stroke="{ruleColor}" stroke-width="0.5"/>
<text x="{margin}" y="210" fill="{accentColor}" font-size="13" font-family="{labelFont}" letter-spacing="2">{SECTION HEADING}</text>
<text x="{margin}" y="236" fill="{textColor}" font-size="15" font-family="{bodyFont}" line-height="1.6">
<tspan x="{margin}" dy="0">{contentLine1}</tspan>
<tspan x="{margin}" dy="22">{contentLine2}</tspan>
</text>
<text x="{statX}" y="300" text-anchor="middle" fill="{textColor}" font-size="48" font-family="{headingFont}">{statValue}</text>
<line x1="{ruleX1}" y1="308" x2="{ruleX2}" y2="308" stroke="{ruleColor}" stroke-width="0.5"/>
<text x="{statX}" y="324" text-anchor="middle" fill="{mutedColor}" font-size="11" font-family="{labelFont}" letter-spacing="2">{STAT LABEL}</text>
<line x1="{margin}" y1="360" x2="{margin+contentWidth}" y2="360" stroke="{ruleColor}" stroke-width="0.5"/>
<line x1="200" y1="980" x2="600" y2="980" stroke="{ruleColor}" stroke-width="0.5"/>
<line x1="200" y1="983" x2="600" y2="983" stroke="{ruleColor}" stroke-width="0.5"/>
<text x="400" y="1020" text-anchor="middle" fill="{mutedColor}" font-size="14" font-style="italic" font-family="{headingFont}">{keyTakeaway}</text>
</svg>
レイアウト:decision-tree
質問の吹き出しと2つの分岐カードを含む二者択一のフローチャートです。
抽出スキーマ
{
layout: "decision-tree"
question: string // The decision point (displayed in bubble)
branches: [{
label: string // "YES" / "NO" or custom labels
title: string // Branch heading (e.g., "Use Perplexity")
description: string // Supporting explanation (1-2 sentences)
bullets?: string[] // Optional 2-4 bullet points
icon?: string // Icon hint: search, document, data, draft, etc.
}, {
// Second branch (same structure)
}]
}
SVG テンプレート(olive スタイル)
<svg width="800" height="620" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
<feDropShadow dx="0" dy="4" stdDeviation="8" flood-opacity="0.1"/>
</filter>
</defs>
<rect width="800" height="620" fill="#F5F0E6"/>
<rect x="140" y="30" width="520" height="70" rx="35" fill="#FAFAF8" filter="url(#shadow)" stroke="#2C2C2C" stroke-width="1"/>
<text x="400" y="72" text-anchor="middle" fill="#2C2C2C" font-size="18" font-weight="500" font-family="system-ui">{question}</text>
<path d="M280,100 Q280,140 200,180" fill="none" stroke="#2C2C2C" stroke-width="1.5"/>
<path d="M520,100 Q520,140 600,180" fill="none" stroke="#2C2C2C" stroke-width="1.5"/>
<polygon points="195,175 205,185 210,172" fill="#2C2C2C"/>
<polygon points="605,175 595,185 590,172" fill="#2C2C2C"/>
<text x="220" y="145" text-anchor="middle" fill="#7D8B6E" font-size="14" font-weight="bold" font-family="system-ui">{branch1.label}</text>
<text x="580" y="145" text-anchor="middle" fill="#7D8B6E" font-size="14" font-weight="bold" font-family="system-ui">{branch2.label}</text>
<rect x="30" y="190" width="360" height="400" rx="16" fill="#7D8B6E" filter="url(#shadow)"/>
<circle cx="80" cy="240" r="24" fill="#FAFAF8"/>
<text x="120" y="248" fill="#FAFAF8" font-size="20" font-weight="bold" font-family="system-ui">{branch1.title}</text>
<text x="50" y="290" fill="#FAFAF8" font-size="14" font-family="system-ui">
<tspan x="50" dy="0">{description line 1}</tspan>
<tspan x="50" dy="22">{description line 2}</tspan>
</text>
<text x="50" y="360" fill="#FAFAF8" font-size="14" font-family="system-ui">
<tspan x="50" dy="0">• {bullet1}</tspan>
<tspan x="50" dy="24">• {bullet2}</tspan>
<tspan x="50" dy="24">• {bullet3}</tspan>
</text>
<rect x="410" y="190" width="360" height="400" rx="16" fill="#E8E2D4" filter="url(#shadow)"/>
<circle cx="460" cy="240" r="24" fill="#FAFAF8"/>
<text x="500" y="248" fill="#2C2C2C" font-size="20" font-weight="bold" font-family="system-ui">{branch2.title}</text>
</svg>
レイアウト:comparison
2~4つの選択肢を並べて比較するカードです。
抽出スキーマ
{
layout: "comparison"
title?: string // Optional main title above cards
items: [{
heading: string // Option name (e.g., "React", "Vue")
description: string // Brief description (1-2 sentences)
bullets?: string[] // Optional 2-4 key points
color: "primary" | "secondary" // Card color alternation
icon?: string // Icon hint
}]
}
SVG テンプレート(olive スタイル、2項目)
<svg width="800" height="520" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
<feDropShadow dx="0" dy="4" stdDeviation="8" flood-opacity="0.1"/>
</filter>
</defs>
<rect width="800" height="520" fill="#F5F0E6"/>
<text x="400" y="50" text-anchor="middle" fill="#2C2C2C" font-size="24" font-weight="500" font-family="system-ui">{title}</text>
<rect x="30" y="80" width="360" height="410" rx="16" fill="#7D8B6E" filter="url(#shadow)"/>
<circle cx="80" cy="130" r="24" fill="#FAFAF8"/>
<text x="120" y="138" fill="#FAFAF8" font-size="20" font-weight="bold" font-family="system-ui">{item1.heading}</text>
<text x="50" y="180" fill="#FAFAF8" font-size="14" font-family="system-ui">
<tspan x="50" dy="0">{description}</tspan>
</text>
<text x="50" y="240" fill="#FAFAF8" font-size="14" font-family="system-ui">
<tspan x="50" dy="0">• {bullet1}</tspan>
<tspan x="50" dy="24">• {bullet2}</tspan>
</text>
<rect x="410" y="80" width="360" height="410" rx="16" fill="#E8E2D4" filter="url(#shadow)"/>
<circle cx="460" cy="130" r="24" fill="#FAFAF8"/>
<text x="500" y="138" fill="#2C2C2C" font-size="20" font-weight="bold" font-family="system-ui">{item2.heading}</text>
</svg>
複数項目のサイズ
- 2項目:800x520、カード幅360px
- 3項目:1000x520、カード幅300px
- 4項目:1200x520、カード幅270px
レイアウト:catalog
色見本、複数列、古典的なタイポグラフィを用いた表/カタログ形式です。Werner の『Nomenclature of Colours』に着想を得ています。
抽出スキーマ
{
layout: "catalog"
title?: string // Optional title above table (uppercase, letter-spaced)
columns: string[] // Column headers
rows: [{
swatch?: string // Hex color for swatch column (optional)
values: string[] // Data for each column
parts?: string[] // Hex colors for palette dots (optional)
}]
}
SVG テンプレート(werner スタイル)
<svg width="900" height="{dynamicHeight}" xmlns="http://www.w3.org/2000/svg">
<rect width="900" height="{height}" fill="#F5F0E6"/>
<text x="450" y="45" text-anchor="middle" fill="#2C2C2C" font-size="18" font-family="Georgia, serif" letter-spacing="4">{TITLE}</text>
<text x="60" y="90" fill="#2C2C2C" font-size="12" font-family="Georgia, serif" text-decoration="underline">Color</text>
<text x="130" y="90" fill="#2C2C2C" font-size="12" font-family="Georgia, serif" text-decoration="underline">Name</text>
<text x="280" y="90" fill="#2C2C2C" font-size="12" font-family="Georgia, serif" text-decoration="underline">Animal</text>
<text x="450" y="90" fill="#2C2C2C" font-size="12" font-family="Georgia, serif" text-decoration="underline">Vegetable</text>
<text x="620" y="90" fill="#2C2C2C" font-size="12" font-family="Georgia, serif" text-decoration="underline">Mineral</text>
<text x="790" y="90" fill="#2C2C2C" font-size="12" font-family="Georgia, serif" text-decoration="underline">Parts</text>
<rect x="60" y="110" width="50" height="60" fill="{swatchColor}" stroke="#C4B8A8" stroke-width="0.5"/>
<text x="130" y="145" fill="#2C2C2C" font-size="14" font-family="Georgia, serif">24. Scotch Blue</text>
<text x="280" y="145" fill="#2C2C2C" font-size="13" font-style="italic" font-family="Georgia, serif">Throat of Blue Titmouse.</text>
<text x="450" y="145" fill="#2C2C2C" font-size="13" font-style="italic" font-family="Georgia, serif">Stamina of Single Purple Anemone.</text>
<text x="620" y="145" fill="#2C2C2C" font-size="13" font-style="italic" font-family="Georgia, serif">Blue Copper Ore.</text>
<circle cx="795" cy="140" r="12" fill="#1a1a1a"/>
<circle cx="823" cy="140" r="12" fill="#4a7089"/>
<circle cx="851" cy="140" r="12" fill="#c4a5a0"/>
</svg>
レイアウトに関する注意
- 行の高さ:80~90px(色見本と折り返されたテキストを収められます)
- 色見本のサイズ:50x60px または 60x70px
- パーツのドット:直径20~24px、間隔4px、またはわずかに重ねます
- 説明/自然参照の列にはイタリック体を使用します
- 順序付きの項目を表示する場合は、名前に番号を付けます(例:「24. Scotch Blue」)
- 控えめな行区切り線(0.5px)を追加するか、余白(24px)を使用します
- 高さは動的です:
110 + (rowCount × 90)ピクセル
レイアウト:bars
高さに基づいてアイテムを順位付けする縦棒グラフです。各バー上のデータポイントに目盛りを付けます。
抽出スキーマ
{
layout: "bars"
title: string // Main title
subtitle?: string // Byline or source
description?: string // Explanatory text
bars: [{
label: string // Bar name (shown at bottom)
value: number // Determines bar height
color?: string // Override color
ticks?: [{ // Horizontal tick marks
position: number // 0-100 percentage up the bar
label: string // Tick label
}]
}]
sortOrder?: "asc" | "desc" // Default: "asc"
}
SVG テンプレート(transit スタイル)
<svg width="800" height="1200" xmlns="http://www.w3.org/2000/svg">
<rect width="800" height="1200" fill="#E8DFD0"/>
<text x="60" y="80" fill="#2C2C2C" font-size="14" font-family="Helvetica, sans-serif" letter-spacing="3" text-decoration="underline">CHART TITLE</text>
<text x="60" y="120" fill="#2C2C2C" font-size="42" font-weight="bold" font-family="Georgia, serif">Main Title</text>
<rect x="60" y="500" width="80" height="600" fill="#D4A574"/>
<line x1="60" y1="700" x2="140" y2="700" stroke="#2C2C2C" stroke-width="0.5"/>
<text x="145" y="703" fill="#2C2C2C" font-size="9" font-family="Helvetica, sans-serif">Data point</text>
<text x="100" y="1130" text-anchor="middle" fill="#2C2C2C" font-size="11" font-family="Helvetica, sans-serif">LABEL</text>
</svg>
レイアウトに関する注意
- 縦長の形式:800x1200 または同様のサイズ
- すべてのバーの開始位置を同じ基線に揃えます
- バーの幅:60~100px、間隔:10~20px
- 昇順(左端が最も低い)または降順に並べます
- 目盛りラベルは左右交互に配置するか、右揃えにします
レイアウト:tiles
アイコンと統計値を含む色付きタイルのグリッドです。ダッシュボード形式で複数の属性を表示します。
抽出スキーマ
{
layout: "tiles"
items: [{
title: string // Item name
subtitle?: string // Location/category
stats: [{
icon: string // elevation-up, elevation-down, area, calendar, people, rainfall, latitude, longitude
value: string // Display value
color?: string // Tile color
}]
}]
columns?: number // Tiles per row (default: 4)
rows?: number // Rows per item (default: 3)
}
SVG テンプレート(parks スタイル)
<svg width="1200" height="500" xmlns="http://www.w3.org/2000/svg">
<rect width="1200" height="500" fill="#3D2E1F"/>
<rect x="40" y="40" width="85" height="85" rx="8" fill="#6B4423"/>
<g transform="translate(82,60)">
<path d="M-8,4 L0,-4 L8,4" fill="none" stroke="#F5F0E6" stroke-width="3"/>
</g>
<text x="82" y="105" text-anchor="middle" fill="#F5F0E6" font-size="14" font-family="Helvetica, sans-serif">10,197 ft</text>
<text x="200" y="430" text-anchor="middle" fill="#F5F0E6" font-size="18" font-weight="bold" font-family="Helvetica, sans-serif">ITEM NAME</text>
<text x="200" y="455" text-anchor="middle" fill="#F5F0E6" font-size="14" font-style="italic" font-family="Helvetica, sans-serif">Subtitle</text>
</svg>
レイアウトに関するメモ
- タイルのサイズ:80~100pxの正方形
- 間隔:8~12px、角の半径:rx="8"
- 上半分にアイコン、下半分に値を配置
- 暗いキャンバス、アースカラーのタイル
- 各項目のグリッドの下にタイトル/サブタイトルを中央揃えで配置
レイアウト:ギャラリー
イラストとキャプションを含むビジュアル項目のグリッドです。バウハウスに着想を得た幾何学的な構成です。
抽出スキーマ
{
layout: "gallery"
title?: string // Section title (italic, with period)
items: [{
label: string // Item label (e.g., "BOOK I.")
description: string // Brief description
illustration?: string // Hint: triangle, square, circle, polygon, grid
}]
columns?: number // Items per row (default: 3)
}
SVG テンプレート(euclid スタイル)
<svg width="900" height="700" xmlns="http://www.w3.org/2000/svg">
<rect width="900" height="700" fill="#F5EFE0"/>
<text x="450" y="60" text-anchor="middle" fill="#2C2C2C" font-size="24" font-style="italic" font-family="Georgia, serif">TITLE.</text>
<g transform="translate(150,180)">
<polygon points="0,-80 80,60 -80,60" fill="none" stroke="#1A1A1A" stroke-width="2"/>
<rect x="-30" y="-20" width="40" height="40" fill="#D64045"/>
<circle cx="20" cy="30" r="25" fill="#1B4B8A"/>
</g>
<text x="150" y="360" text-anchor="middle" fill="#2C2C2C" font-size="16" font-family="Georgia, serif">ITEM I.</text>
<text x="150" y="385" text-anchor="middle" fill="#2C2C2C" font-size="14" font-family="Georgia, serif">Description text</text>
</svg>
レイアウトに関するメモ
- グリッド:通常は3列、2行
- イラスト領域:180~220px
- バウハウスカラー:赤 #D64045、青 #1B4B8A、黄 #F5B800、黒 #1A1A1A
- 抽象的な幾何学的構成
- ラベルにはローマ数字(I、II、III…)を使用
レイアウト:タイムライン
中央の軸と左右交互のイベントカードで構成する縦型タイムラインです。時系列の歴史を示すのに最適です。
抽出スキーマ
{
layout: "timeline"
title?: string // Optional main title
subtitle?: string // Optional byline or date range
events: [{
date: string // Year or date (e.g., "1995", "March 2020")
title: string // Event title
description: string // Brief description (1-2 sentences)
side?: "left" | "right" // Override alternation
}]
}
SVG テンプレート(timber スタイル)
<svg width="800" height="{dynamicHeight}" xmlns="http://www.w3.org/2000/svg">
<rect width="800" height="{height}" fill="#F5F0E6"/>
<text x="400" y="60" text-anchor="middle" fill="#2C2C2C" font-size="28" font-weight="bold" font-family="Georgia, serif">{title}</text>
<text x="400" y="90" text-anchor="middle" fill="#8B7355" font-size="14" font-style="italic" font-family="Georgia, serif">{subtitle}</text>
<line x1="400" y1="120" x2="400" y2="{spineEnd}" stroke="#8B7355" stroke-width="2"/>
<circle cx="400" cy="180" r="8" fill="#8B7355"/>
<text x="360" y="185" text-anchor="end" fill="#8B7355" font-size="14" font-weight="bold" font-family="Georgia, serif">1995</text>
<rect x="420" y="150" width="320" height="80" rx="4" fill="#FAFAF8" stroke="#D4C4A8" stroke-width="1"/>
<text x="440" y="180" fill="#2C2C2C" font-size="16" font-weight="bold" font-family="Georgia, serif">{event.title}</text>
<text x="440" y="205" fill="#5C5C5C" font-size="13" font-family="Georgia, serif">
<tspan x="440" dy="0">{description line 1}</tspan>
<tspan x="440" dy="18">{description line 2}</tspan>
</text>
<line x1="408" y1="180" x2="420" y2="180" stroke="#8B7355" stroke-width="1"/>
<rect x="60" y="280" width="320" height="80" rx="4" fill="#FAFAF8" stroke="#D4C4A8" stroke-width="1"/>
</svg>
レイアウトに関するメモ
- 軸は中央を縦に通します
- カードは左右交互に配置します
- 軸上のイベント位置に円形のノードを配置します
- 日付ラベルはカードと反対側に配置します
- カードの高さ:内容に応じて70~100px
- イベント間の縦方向の間隔:130~160px
- 動的な高さ:
120 + (eventCount × 150)ピクセル
レイアウト:プロセス
番号付きのステップと接続矢印からなる連続的なフローチャートです。手順ガイドやワークフローに最適です。
抽出スキーマ
{
layout: "process"
title?: string // Optional main title
subtitle?: string // Optional description
steps: [{
number: number // Step number (1, 2, 3...)
title: string // Step title
description: string // Brief description (1-2 sentences)
icon?: string // Icon hint: gear, code, check, etc.
}]
columns?: number // Steps per row (default: 1 for vertical)
}
SVG テンプレート(preston スタイル)
<svg width="800" height="{dynamicHeight}" xmlns="http://www.w3.org/2000/svg">
<rect width="800" height="{height}" fill="#F5F0E6"/>
<text x="400" y="60" text-anchor="middle" fill="#2C2C2C" font-size="28" font-weight="bold" font-family="Helvetica, sans-serif">{title}</text>
<text x="400" y="90" text-anchor="middle" fill="#6B6B6B" font-size="14" font-family="Helvetica, sans-serif">{subtitle}</text>
<g transform="translate(100, 140)">
<circle cx="30" cy="30" r="24" fill="#4A6741" stroke="none"/>
<text x="30" y="38" text-anchor="middle" fill="#FAFAF8" font-size="20" font-weight="bold" font-family="Helvetica, sans-serif">1</text>
<text x="70" y="25" fill="#2C2C2C" font-size="18" font-weight="bold" font-family="Helvetica, sans-serif">{step.title}</text>
<text x="70" y="50" fill="#5C5C5C" font-size="14" font-family="Helvetica, sans-serif">
<tspan x="70" dy="0">{description line 1}</tspan>
<tspan x="70" dy="20">{description line 2}</tspan>
</text>
</g>
<line x1="130" y1="220" x2="130" y2="260" stroke="#4A6741" stroke-width="2"/>
<polygon points="130,270 125,260 135,260" fill="#4A6741"/>
<g transform="translate(100, 280)">
<circle cx="30" cy="30" r="24" fill="#4A6741"/>
<text x="30" y="38" text-anchor="middle" fill="#FAFAF8" font-size="20" font-weight="bold" font-family="Helvetica, sans-serif">2</text>
</g>
</svg>
レイアウトに関するメモ
- 左側に番号付きの円(半径24~30px)を配置します
- 番号の右側にステップの内容を配置します
- 縦方向の矢印でステップを接続します
- 矢印の長さ:40~60px
- ステップ間の縦方向の間隔:140~160px
- 番号と矢印にアクセントカラーを使用します
- 動的な高さ:
120 + (stepCount × 150)ピクセル - 横型レイアウト(columns > 1)の場合:横方向の矢印を使って行ごとに配置します
アイコンライブラリ
一般的な概念に使えるシンプルな SVG パスです。アイコンの円の中央に配置した <g transform="translate(x,y)"> 内で使用します。
利用可能なアイコン
<path d="M-6,-6 L6,6 M-4,0 a6,6 0 1,1 0,0.01" fill="none" stroke="#4A6741" stroke-width="2" stroke-linecap="round"/>
<path d="M-6,-8 L4,-8 L6,-6 L6,8 L-6,8 Z M-4,-5 L3,-5 M-4,-1 L3,-1 M-4,3 L1,3" fill="none" stroke="#4A6741" stroke-width="1.5" stroke-linecap="round"/>
<path d="M0,-7 A7,7 0 0,1 6,3.5 M6,3.5 L4,0 M6,3.5 L9,2 M0,7 A7,7 0 0,1 -6,-3.5 M-6,-3.5 L-4,0 M-6,-3.5 L-9,-2" fill="none" stroke="#4A6741" stroke-width="1.5" stroke-linecap="round"/>
<path d="M-6,8 L-2,8 L8,-6 L4,-6 Z M4,0 L0,0" fill="none" stroke="#4A6741" stroke-width="1.5" stroke-linejoin="round"/>
<path d="M-5,8 L5,8 L5,6 L4,5 L4,2 L5,1 L5,-4 L3,-4 L3,-7 L1,-7 L1,-4 L-1,-4 L-1,-7 L-3,-7 L-3,-4 L-5,-4 L-5,1 L-4,2 L-4,5 L-5,6 Z" fill="none" stroke="#4A6741" stroke-width="1.5"/>
<path d="M0,-8 L8,0 L0,8 L-8,0 Z M-8,0 L0,4 L8,0 M0,4 L0,8" fill="none" stroke="#4A6741" stroke-width="1.5" stroke-linejoin="round"/>
<path d="M0,-8 L0,-6 M-6,-4 L-4,-3 M6,-4 L4,-3 M-4,6 L4,6 M-3,8 L3,8 M-4,2 Q-6,-2 0,-6 Q6,-2 4,2 L3,4 L-3,4 Z" fill="none" stroke="#4A6741" stroke-width="1.5" stroke-linecap="round"/>
<circle cx="0" cy="0" r="8" fill="none" stroke="#4A6741" stroke-width="1.5"/>
<path d="M-4,0 L-1,3 L5,-4" fill="none" stroke="#4A6741" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M0,-7 L8,7 L-8,7 Z M0,0 L0,2 M0,4 L0,5" fill="none" stroke="#4A6741" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M-3,-6 L-8,0 L-3,6 M3,-6 L8,0 L3,6" fill="none" stroke="#4A6741" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="-3" cy="-4" r="3" fill="none" stroke="#4A6741" stroke-width="1.5"/>
<path d="M-9,6 Q-9,0 -3,0 Q3,0 3,6" fill="none" stroke="#4A6741" stroke-width="1.5"/>
<circle cx="5" cy="-2" r="2.5" fill="none" stroke="#4A6741" stroke-width="1.5"/>
<path d="M1,6 Q2,2 5,2 Q9,2 9,6" fill="none" stroke="#4A6741" stroke-width="1.5"/>
<circle cx="0" cy="0" r="3" fill="none" stroke="#4A6741" stroke-width="1.5"/>
<path d="M0,-8 L0,-5 M0,5 L0,8 M-8,0 L-5,0 M5,0 L8,0 M-5.6,-5.6 L-3.5,-3.5 M3.5,3.5 L5.6,5.6 M5.6,-5.6 L3.5,-3.5 M-3.5,3.5 L-5.6,5.6" fill="none" stroke="#4A6741" stroke-width="2" stroke-linecap="round"/>
<path d="M-8,-6 L8,-6 L8,4 L2,4 L-2,8 L-2,4 L-8,4 Z" fill="none" stroke="#4A6741" stroke-width="1.5" stroke-linejoin="round"/>
<circle cx="0" cy="0" r="8" fill="none" stroke="#4A6741" stroke-width="1.5"/>
<path d="M-8,0 L8,0 M0,-8 Q-4,0 0,8 Q4,0 0,-8" fill="none" stroke="#4A6741" stroke-width="1"/>
アイコンの使用方法
- アイコンの円を目的の位置に配置します
- 円の中心を示す cx,cy を使い、
transform="translate(cx,cy)"を指定した<g>内にアイコンのパスを追加します - 抽出したデータのアイコンヒントに対応するアイコン名を選びます
重要な注意事項
- テキストの折り返し: 長いテキストは、本文用に
dy="22"を指定した<tspan>要素に分割します - 動的な高さ: 内容に応じてキャンバスの高さを調整します
- stat-block に関するメモ:
- セクション見出しの色:アクセントカラーを順番に使います
- 統計値のレイアウト:コンテンツ幅内でN個の統計値を均等に中央揃えで配置します
- 影、グラデーション、角丸は使用しません
- すべてのスタイルをインラインにします(rsvg-convert 経由の SVG では外部 CSS をサポートしていません)
- olive レイアウトに関するメモ:
- defs に必ず影のフィルターを含めます
- メインカードには明るいテキスト(#FAFAF8)を使います
- セカンダリカードには暗いテキスト(#2C2C2C)を使います
- アイコンは白い円の中央に配置します
- すべてのカードを角丸にします(rx="16")
- werner レイアウトに関するメモ:
- 全体を通してセリフ体(Georgia)を使います
- 説明の列にはイタリック体を使います
- 列見出しには下線を引きます
- スウォッチの色がキャンバスの色に近い場合は、ストロークを付けます
- パーツを示す点は少し重なってもかまいません
- transit レイアウトに関するメモ:
- 縦長の形式(800x1200以上)
- バーは同じ基準線から伸ばし、値順に並べます
- 小さなラベル付きの目盛りを付けます
- 説明を含むタイトルブロックを左上に配置します
- parks レイアウトに関するメモ:
- 暗い茶色のキャンバス
- グリッド内にアースカラーのタイルを配置します
- タイルごとにアイコンと値を配置します
- 暗いタイルには明るいテキスト、明るいタイルには暗いテキストを使います
- euclid レイアウトに関するメモ:
- バウハウスの配色:赤、青、黄、黒
- 幾何学的なイラスト(抽象的な構成)
- ピリオド付きのセリフ体イタリックのタイトル
- ローマ数字のラベル
変換
SVG ファイルを書き込んだ後、PNG に変換します:
rsvg-convert -w 2000 input.svg -o output.png
次に開きます:
open output.png
例
決定木の入力:「Perplexity と ChatGPT は、どんなときに使い分ければよいですか?」
- 検出:決定木レイアウト
- 質問の吹き出し:「Perplexity と ChatGPT は、どんなときに使い分ければよいですか?」
- 分岐 1:「Perplexity を使う」。リサーチに重点を置いた箇条書き
- 分岐 2:「ChatGPT を使う」。創作やコーディングに重点を置いた箇条書き
比較の入力:「Web アプリの構築には React と Vue のどちらがよいか比較してください」
- 検出:比較レイアウト
- 2 つのカードを横並びにし、それぞれの長所や特徴を表示
統計ブロックの入力:「ユーザー調査でわかった主なこと」
- 検出:統計ブロックレイアウト(デフォルト)
- 統計データと要点を含む従来型のセクション
カタログの入力:「Werner のカラーチャートから青色を見せてください」
- 検出:カタログレイアウト
- 色見本、名称、自然界の参照例、パレットのドットを含む表
棒グラフの入力:「ヨーロッパで最も高い山を 5 つ、順位順に表示してください」
- 検出:棒グラフレイアウト
- 高さ順に並んだ縦棒と、標高の主な値を示す目盛り
タイルの入力:「3 つの国立公園について、標高、面積、来訪者数、降雨量の統計を表示してください」
- 検出:タイルレイアウト
- 各公園のアイコンと数値を含む、色付きタイルのグリッド
ギャラリーの入力:「ユークリッドの『原論』全 6 巻の概要」
- 検出:ギャラリーレイアウト
- キャプション付きの幾何学的なイラストのグリッド