web-asset-generator
Generate web assets including favicons, app icons (PWA), and social media meta images (Open Graph) for Facebook, Twitter, WhatsApp, and LinkedIn. Use when users need icons, favicons, social sharing images, or Open Graph images from logos or text slogans. Handles image resizing, text-to-image generation, and provides proper HTML meta tags.
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o web-asset-generator.zip https://jpskill.com/download/21991.zip && unzip -o web-asset-generator.zip && rm web-asset-generator.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/21991.zip -OutFile "$d\web-asset-generator.zip"; Expand-Archive "$d\web-asset-generator.zip" -DestinationPath $d -Force; ri "$d\web-asset-generator.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
web-asset-generator.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
web-asset-generatorフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 8
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[スキル名] web-asset-generator
Webアセットジェネレーター
ロゴやテキストのスローガンから、ファビコン、アプリアイコン、ソーシャルメディアのメタ画像など、プロフェッショナルなウェブアセットを生成します。
クイックスタート
ユーザーがウェブアセットをリクエストした場合:
-
AskUserQuestion ツールを使用して、ニーズを明確にします(指定されていない場合):
- どのような種類のアセットが必要か(ファビコン、アプリアイコン、ソーシャル画像、またはすべて)
- ソース素材があるか(ロゴ画像かテキスト/スローガンか)
- テキストベースの画像の場合:色の好み
-
ソース素材を確認します:
- ユーザーが画像をアップロードした場合:それをソースとして使用します
- ユーザーがテキスト/スローガンを提供した場合:テキストベースの画像を生成します
-
適切なスクリプトを実行します:
- ファビコン/アイコン:
scripts/generate_favicons.py - ソーシャルメディア画像:
scripts/generate_og_images.py
- ファビコン/アイコン:
-
生成されたアセットとHTMLタグをユーザーに提供します
対話型質問の使用
重要: 要件を収集する際は、常にプレーンテキストの質問ではなく、AskUserQuestion ツールを使用してください。これにより、視覚的な選択UIでより良いユーザーエクスペリエンスが提供されます。
AskUserQuestion を使用する理由
✅ ビジュアルUI: ユーザーは、応答を入力する代わりに、クリック可能なチップ/タグとしてオプションを確認できます ✅ 高速: 回答を入力する代わりにクリックして選択できます ✅ 明確: 説明により、各オプションの意味が説明されます ✅ エラーが少ない: 自由形式のテキストによる誤字や誤解がありません ✅ プロフェッショナル: 最新の Claude Code エクスペリエンスと一貫しています
例の流れ
ユーザーリクエスト: 「ウェブアセットが必要です」
Claude は AskUserQuestion を使用します(プレーンテキストではありません):
どのような種類のウェブアセットが必要ですか? [アセットの種類]
○ ファビコンのみ - ブラウザタブアイコン (16x16, 32x32, 96x96) と favicon.ico
○ アプリアイコンのみ - iOS/Android 用 PWA アイコン (180x180, 192x192, 512x512)
○ ソーシャル画像のみ - Facebook, Twitter, WhatsApp, LinkedIn 用 Open Graph 画像
● すべて - 完全なパッケージ: ファビコン + アプリアイコン + ソーシャル画像
ユーザーがクリックすると → Claude は何を生成すべきかを即座に認識します
質問パターン
以下は、さまざまなシナリオで使用する標準的な質問パターンです。構造をコピーして、必要に応じて調整してください。
質問パターン 1: アセットタイプの選択
ユーザーのリクエストが漠然としている場合(例:「ウェブアセットを作成する」、「アイコンが必要です」)は、AskUserQuestion を使用します。
質問: 「どのような種類のウェブアセットが必要ですか?」 ヘッダー: 「アセットの種類」 オプション:
- 「ファビコンのみ」 - 説明: 「ブラウザタブアイコン (16x16, 32x32, 96x96) と favicon.ico」
- 「アプリアイコンのみ」 - 説明: 「iOS/Android 用 PWA アイコン (180x180, 192x192, 512x512)」
- 「ソーシャル画像のみ」 - 説明: 「Facebook, Twitter, WhatsApp, LinkedIn 用 Open Graph 画像」
- 「すべて」 - 説明: 「完全なパッケージ: ファビコン + アプリアイコン + ソーシャル画像」
質問パターン 2: ソース素材
アセットタイプは決定されているが、ソースが不明な場合:
質問: 「どのようなソース素材を提供しますか?」 ヘッダー: 「ソース」 オプション:
- 「ロゴ画像」 - 説明: 「ロゴ/画像ファイルを持っています、またはアップロードします」
- 「絵文字」 - 説明: 「絵文字文字からファビコンを生成します」
- 「テキスト/スローガン」 - 説明: 「テキストのみから画像を生成します」
- 「ロゴ + テキスト」 - 説明: 「ロゴとテキストオーバーレイを組み合わせます(ソーシャル画像用)」
質問パターン 3: プラットフォームの選択(ソーシャル画像用)
ユーザーがソーシャル画像をリクエストしたが、プラットフォームを指定しない場合:
質問: 「どのソーシャルメディアプラットフォームの画像が必要ですか?」 ヘッダー: 「プラットフォーム」 複数選択: true オプション:
- 「Facebook/WhatsApp/LinkedIn」 - 説明: 「標準の 1200x630 Open Graph 形式」
- 「Twitter」 - 説明: 「大きな画像カード用の 1200x675 (16:9 比率)」
- 「すべてのプラットフォーム」 - 説明: 「正方形形式を含むすべてのバリアントを生成します」
質問パターン 4: 色の好み(テキストベースの画像用)
テキストベースのソーシャル画像を生成する場合:
質問: 「ソーシャル画像にどのような色を使用すべきですか?」 ヘッダー: 「色」 オプション:
- 「色を指定します」 - 説明: 「ブランドカラーの正確な16進数コードを指定させてください」
- 「デフォルトテーマ」 - 説明: 「デフォルトの紫の背景 (#4F46E5) と白いテキストを使用します」
- 「ロゴから抽出」 - 説明: 「アップロードされたロゴからブランドカラーを自動検出します」
- 「カスタムグラデーション」 - 説明: 「グラデーションの色を選択させてください」
質問パターン 5: アイコンタイプの明確化
ユーザーが「アイコンを作成する」または「アイコンを生成する」と言う場合(曖昧な場合):
質問: 「どのような種類のアイコンが必要ですか?」 ヘッダー: 「アイコンの種類」 オプション:
- 「ウェブサイトファビコン」 - 説明: 「小さなブラウザタブアイコン」
- 「アプリアイコン (PWA)」 - 説明: 「モバイルホーム画面アイコン」
- 「両方」 - 説明: 「ファビコン + アプリアイコン」
質問パターン 6: 絵文字の選択
ユーザーがソース素材として「絵文字」を選択した場合:
ステップ 1: プロジェクトの説明を尋ねます(自由形式のテキスト):
- 「あなたのウェブサイト/アプリは何についてですか?」
- これを使用して絵文字の提案を生成します
ステップ 2: AskUserQuestion を使用して、提案された4つの絵文字を提示します。
質問: 「あなたのプロジェクトを最もよく表す絵文字はどれですか?」 ヘッダー: 「絵文字」 オプション: (プロジェクトの説明に基づいて動的に生成されます)
- 例: 「🚀 ロケット」 - 説明: 「ロケット、打ち上げ、スタートアップ、宇宙」
- 例: 「☕ コーヒー」 - 説明: 「コーヒー、カフェ、飲み物、ドリンク」
- 例: 「💻 ラップトップ」 - 説明: 「コンピューター、ラップトップ、コード、開発」
- 例: 「🎨 アート」 - 説明: 「アート、デザイン、クリエイティブ、ペイント」
実装:
# 提案を取得
python scripts/generate_favicons.py --suggest "coffee shop" output/ all
# 次に、選択した絵文字で生成
python scripts/generate_favicons.py --emoji "☕" output/ all
オプション: アプリアイコンの背景色について尋ねます。
質問: 「アプリアイコンに背景色が必要ですか?」 ヘッダー: 「背景」 オプション:
- 「透明」 - 説明: 「背景なし(ファビコンのみ)」
- 「白」 - 説明: 「白い背景(アプリアイコンに推奨)」
- 「カスタムカラー」 - 説明: 「色を指定します」
質問パターン 7: コード統合の提案
使用するタイミング
(原文がここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Web Asset Generator
Generate professional web assets from logos or text slogans, including favicons, app icons, and social media meta images.
Quick Start
When a user requests web assets:
-
Use AskUserQuestion tool to clarify needs if not specified:
- What type of assets they need (favicons, app icons, social images, or everything)
- Whether they have source material (logo image vs text/slogan)
- For text-based images: color preferences
-
Check for source material:
- If user uploaded an image: use it as the source
- If user provides text/slogan: generate text-based images
-
Run the appropriate script(s):
- Favicons/icons:
scripts/generate_favicons.py - Social media images:
scripts/generate_og_images.py
- Favicons/icons:
-
Provide the generated assets and HTML tags to the user
Using Interactive Questions
IMPORTANT: Always use the AskUserQuestion tool to gather requirements instead of plain text questions. This provides a better user experience with visual selection UI.
Why Use AskUserQuestion?
✅ Visual UI: Users see options as clickable chips/tags instead of typing responses ✅ Faster: Click to select instead of typing out answers ✅ Clearer: Descriptions explain what each option means ✅ Fewer errors: No typos or misunderstandings from free-form text ✅ Professional: Consistent with modern Claude Code experience
Example Flow
User request: "I need web assets"
Claude uses AskUserQuestion (not plain text):
What type of web assets do you need? [Asset type]
○ Favicons only - Browser tab icons (16x16, 32x32, 96x96) and favicon.ico
○ App icons only - PWA icons for iOS/Android (180x180, 192x192, 512x512)
○ Social images only - Open Graph images for Facebook, Twitter, WhatsApp, LinkedIn
● Everything - Complete package: favicons + app icons + social images
User clicks → Claude immediately knows what to generate
Question Patterns
Below are the standard question patterns to use in various scenarios. Copy the structure and adapt as needed.
Question Pattern 1: Asset Type Selection
When the user's request is vague (e.g., "create web assets", "I need icons"), use AskUserQuestion:
Question: "What type of web assets do you need?" Header: "Asset type" Options:
- "Favicons only" - Description: "Browser tab icons (16x16, 32x32, 96x96) and favicon.ico"
- "App icons only" - Description: "PWA icons for iOS/Android (180x180, 192x192, 512x512)"
- "Social images only" - Description: "Open Graph images for Facebook, Twitter, WhatsApp, LinkedIn"
- "Everything" - Description: "Complete package: favicons + app icons + social images"
Question Pattern 2: Source Material
When the asset type is determined but source is unclear:
Question: "What source material will you provide?" Header: "Source" Options:
- "Logo image" - Description: "I have or will upload a logo/image file"
- "Emoji" - Description: "Generate favicon from an emoji character"
- "Text/slogan" - Description: "Create images from text only"
- "Logo + text" - Description: "Combine logo with text overlay (for social images)"
Question Pattern 3: Platform Selection (for social images)
When user requests social images but doesn't specify platforms:
Question: "Which social media platforms do you need images for?" Header: "Platforms" Multi-select: true Options:
- "Facebook/WhatsApp/LinkedIn" - Description: "Standard 1200x630 Open Graph format"
- "Twitter" - Description: "1200x675 (16:9 ratio) for large image cards"
- "All platforms" - Description: "Generate all variants including square format"
Question Pattern 4: Color Preferences (for text-based images)
When generating text-based social images:
Question: "What colors should we use for your social images?" Header: "Colors" Options:
- "I'll provide colors" - Description: "Let me specify exact hex codes for brand colors"
- "Default theme" - Description: "Use default purple background (#4F46E5) with white text"
- "Extract from logo" - Description: "Auto-detect brand colors from uploaded logo"
- "Custom gradient" - Description: "Let me choose gradient colors"
Question Pattern 5: Icon Type Clarification
When user says "create icons" or "generate icons" (ambiguous):
Question: "What kind of icons do you need?" Header: "Icon type" Options:
- "Website favicon" - Description: "Small browser tab icon"
- "App icons (PWA)" - Description: "Mobile home screen icons"
- "Both" - Description: "Favicon + app icons"
Question Pattern 6: Emoji Selection
When user selects "Emoji" as source material:
Step 1: Ask for project description (free text):
- "What is your website/app about?"
- Use this to generate emoji suggestions
Step 2: Use AskUserQuestion to present the 4 suggested emojis:
Question: "Which emoji best represents your project?" Header: "Emoji" Options: (Dynamically generated based on project description)
- Example: "🚀 Rocket" - Description: "Rocket, launch, startup, space"
- Example: "☕ Coffee" - Description: "Coffee, cafe, beverage, drink"
- Example: "💻 Laptop" - Description: "Computer, laptop, code, dev"
- Example: "🎨 Art" - Description: "Art, design, creative, paint"
Implementation:
# Get suggestions
python scripts/generate_favicons.py --suggest "coffee shop" output/ all
# Then generate with selected emoji
python scripts/generate_favicons.py --emoji "☕" output/ all
Optional: Ask about background color for app icons:
Question: "Do you want a background color for app icons?" Header: "Background" Options:
- "Transparent" - Description: "No background (favicons only)"
- "White" - Description: "White background (recommended for app icons)"
- "Custom color" - Description: "I'll provide a color"
Question Pattern 7: Code Integration Offer
When to use: After generating assets and showing HTML tags to the user
Question: "Would you like me to add these HTML tags to your codebase?" Header: "Integration" Options:
- "Yes, auto-detect my setup" - Description: "Find and update my HTML/framework files automatically"
- "Yes, I'll tell you where" - Description: "I'll specify which file to update"
- "No, I'll do it manually" - Description: "Just show me the code, I'll add it myself"
If user selects "Yes, auto-detect":
- Search for framework config files (next.config.js, astro.config.mjs, etc.)
- Detect framework type
- Find appropriate target file (layout.tsx, index.html, etc.)
- Show detected file and ask for confirmation
- Show diff of proposed changes
- Insert tags if user confirms
If user selects "Yes, I'll tell you where":
- Ask user for file path
- Verify file exists
- Show diff of proposed changes
- Insert tags if user confirms
Framework Detection Priority:
- Next.js: Look for
next.config.js, updateapp/layout.tsxorpages/_app.tsx - Astro: Look for
astro.config.mjs, update layout files insrc/layouts/ - SvelteKit: Look for
svelte.config.js, updatesrc/app.html - Vue/Nuxt: Look for
nuxt.config.js, updateapp.vueornuxt.config.ts - Plain HTML: Look for
index.htmlor*.htmlfiles - Gatsby: Look for
gatsby-config.js, updategatsby-ssr.js
Question Pattern 8: Testing Links Offer
When to use: After code integration (or if user declined integration)
Question: "Would you like to test your meta tags now?" Header: "Testing" Options:
- "Facebook Debugger" - Description: "Test Open Graph tags on Facebook"
- "Twitter Card Validator" - Description: "Test Twitter card appearance"
- "LinkedIn Post Inspector" - Description: "Test LinkedIn sharing preview"
- "All testing tools" - Description: "Get links to all validators"
- "No, skip testing" - Description: "I'll test later myself"
Provide appropriate testing URLs:
- Facebook: https://developers.facebook.com/tools/debug/
- Twitter: https://cards-dev.twitter.com/validator
- LinkedIn: https://www.linkedin.com/post-inspector/
- Generic OG validator: https://www.opengraph.xyz/
Workflows
Generate Favicons and App Icons from Logo
When user has a logo image:
python scripts/generate_favicons.py <source_image> <output_dir> [icon_type]
Arguments:
source_image: Path to the logo/image fileoutput_dir: Where to save generated iconsicon_type: Optional - 'favicon', 'app', or 'all' (default: 'all')
Example:
python scripts/generate_favicons.py /mnt/user-data/uploads/logo.png /home/claude/output all
Generates:
favicon-16x16.png,favicon-32x32.png,favicon-96x96.pngfavicon.ico(multi-resolution)apple-touch-icon.png(180x180)android-chrome-192x192.png,android-chrome-512x512.png
Generate Favicons and App Icons from Emoji
NEW FEATURE: Create favicons from emoji characters with smart suggestions!
Step 1: Get Emoji Suggestions
When user wants emoji-based icons, first get suggestions:
python scripts/generate_favicons.py --suggest "coffee shop" /home/claude/output all
This returns 4 emoji suggestions based on the description:
1. ☕ Coffee - coffee, cafe, beverage
2. 🌐 Globe - web, website, global
3. 🏪 Store - shop, store, retail
4. 🛒 Cart - shopping, cart, ecommerce
Step 2: Generate Icons from Selected Emoji
python scripts/generate_favicons.py --emoji "☕" <output_dir> [icon_type] [--emoji-bg COLOR]
Arguments:
--emoji: Emoji character to useoutput_dir: Where to save generated iconsicon_type: Optional - 'favicon', 'app', or 'all' (default: 'all')--emoji-bg: Optional background color (default: transparent for favicons, white for app icons)
Examples:
# Basic emoji favicon (transparent background)
python scripts/generate_favicons.py --emoji "🚀" /home/claude/output favicon
# Emoji with custom background for app icons
python scripts/generate_favicons.py --emoji "☕" --emoji-bg "#F5DEB3" /home/claude/output all
# Complete set with white background
python scripts/generate_favicons.py --emoji "💻" --emoji-bg "white" /home/claude/output all
Generates same files as logo-based generation:
- All standard favicon sizes (16x16, 32x32, 96x96)
- favicon.ico
- App icon sizes (180x180, 192x192, 512x512)
Note: Requires pilmoji library: pip install pilmoji
Generate Social Media Meta Images from Logo
When user has a logo and needs Open Graph images:
python scripts/generate_og_images.py <output_dir> --image <source_image>
Example:
python scripts/generate_og_images.py /home/claude/output --image /mnt/user-data/uploads/logo.png
Generates:
og-image.png(1200x630 - Facebook, WhatsApp, LinkedIn)twitter-image.png(1200x675 - Twitter)og-square.png(1200x1200 - Square variant)
Generate Social Media Meta Images from Text
When user provides a text slogan or tagline:
python scripts/generate_og_images.py <output_dir> --text "Your text here" [options]
Options:
--logo <path>: Include a logo with the text--bg-color <color>: Background color (hex or name, default: '#4F46E5')--text-color <color>: Text color (default: 'white')
Example:
python scripts/generate_og_images.py /home/claude/output \
--text "Transform Your Business with AI" \
--logo /mnt/user-data/uploads/logo.png \
--bg-color "#4F46E5"
Generate Everything
For users who want the complete package:
# Generate favicons and icons
python scripts/generate_favicons.py /mnt/user-data/uploads/logo.png /home/claude/output all
# Generate social media images
python scripts/generate_og_images.py /home/claude/output --image /mnt/user-data/uploads/logo.png
Or for text-based:
# Generate favicons from logo
python scripts/generate_favicons.py /mnt/user-data/uploads/logo.png /home/claude/output all
# Generate social media images with text + logo
python scripts/generate_og_images.py /home/claude/output \
--text "Your Tagline Here" \
--logo /mnt/user-data/uploads/logo.png
Delivering Assets to User
After generating assets, follow this workflow:
1. Move to Outputs Directory
cp /home/claude/output/* /mnt/user-data/outputs/
2. Show Generated HTML Tags
Display the HTML tags that were automatically generated by the scripts.
Example output for favicons:
<!-- Favicons -->
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="192x192" href="/android-chrome-192x192.png">
<link rel="icon" type="image/png" sizes="512x512" href="/android-chrome-512x512.png">
Example output for Open Graph images:
<!-- Open Graph / Facebook -->
<meta property="og:image" content="/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Your description here">
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="/twitter-image.png">
<meta name="twitter:image:alt" content="Your description here">
3. Offer Code Integration (Use AskUserQuestion - Pattern 7)
IMPORTANT: Always ask if the user wants help adding the tags to their codebase.
Question: "Would you like me to add these HTML tags to your codebase?" Header: "Integration" Options:
- "Yes, auto-detect my setup"
- "Yes, I'll tell you where"
- "No, I'll do it manually"
If User Selects "Yes, auto-detect my setup":
A. Detect Framework:
# Search for framework config files
find . -maxdepth 2 -name "next.config.js" -o -name "astro.config.mjs" -o -name "svelte.config.js" -o -name "nuxt.config.js" -o -name "gatsby-config.js"
# Or check package.json
grep -E "next|astro|nuxt|svelte|gatsby" package.json
B. Find Target Files Based on Framework:
- Next.js (App Router):
app/layout.tsxorapp/layout.js - Next.js (Pages Router):
pages/_app.tsxorpages/_document.tsx - Astro:
src/layouts/*.astro(typicallyBaseLayout.astroorLayout.astro) - SvelteKit:
src/app.html - Vue/Nuxt:
app.vueornuxt.config.ts(head section) - Gatsby:
gatsby-ssr.jsorsrc/components/seo.tsx - Plain HTML:
index.html,public/index.html, or any*.htmlfile
C. Confirm with User:
Use AskUserQuestion to confirm detected file:
Question: "I found [Framework Name]. Should I update [file_path]?"
Header: "Confirm"
Options:
- "Yes, update this file"
- "No, show me other options"
- "Cancel, I'll do it manually"
D. Show Diff and Insert:
- Read the target file
- Prepare the insertion (find
<head>or appropriate section) - Show the diff to the user
- If user confirms, use Edit tool to insert tags
Framework-Specific Insertion Examples:
For Plain HTML (insert before </head>):
<head>
<meta charset="UTF-8">
<!-- INSERT TAGS HERE -->
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
...
</head>
For Next.js App Router (add to metadata export):
export const metadata = {
icons: {
icon: [
{ url: '/favicon-32x32.png', sizes: '32x32', type: 'image/png' },
{ url: '/favicon-16x16.png', sizes: '16x16', type: 'image/png' },
],
apple: [
{ url: '/apple-touch-icon.png', sizes: '180x180', type: 'image/png' },
],
},
openGraph: {
images: ['/og-image.png'],
},
twitter: {
card: 'summary_large_image',
images: ['/twitter-image.png'],
},
}
For Astro (insert in <head> of layout file):
<head>
<meta charset="UTF-8">
<!-- Favicons -->
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
...
</head>
If User Selects "Yes, I'll tell you where":
- Ask user for the file path
- Verify file exists using Read tool
- Show where tags will be inserted
- Show diff
- Insert if user confirms
If User Selects "No, I'll do it manually":
Provide brief instructions:
- Place asset files in the public/static directory of your website
- Add the HTML tags to the
<head>section of your HTML - Update placeholder values (title, description, URL, alt text)
4. Offer Testing Links (Use AskUserQuestion - Pattern 8)
Question: "Would you like to test your meta tags now?" Header: "Testing" Options:
- "Facebook Debugger"
- "Twitter Card Validator"
- "LinkedIn Post Inspector"
- "All testing tools"
- "No, skip testing"
Provide Testing URLs:
-
Facebook Sharing Debugger: https://developers.facebook.com/tools/debug/
- Paste your URL and click "Debug" to see preview
- Click "Scrape Again" to refresh cache
-
Twitter Card Validator: https://cards-dev.twitter.com/validator
- Paste your URL to see how Twitter card will appear
-
LinkedIn Post Inspector: https://www.linkedin.com/post-inspector/
- Check how links appear when shared on LinkedIn
-
OpenGraph.xyz: https://www.opengraph.xyz/
- Generic Open Graph validator for quick checks
5. Final Instructions
Remind user to:
- ✅ Copy asset files to their public/static directory
- ✅ Update dynamic values in meta tags (og:title, og:description, og:url)
- ✅ Test on actual platforms after deployment
- ✅ Update alt text to be descriptive and accessible
Important Notes:
- OG images must be accessible via HTTPS URLs (not localhost)
- URLs in meta tags should be absolute (https://yourdomain.com/og-image.png)
- Test after deploying to production/staging environment
Best Practices
Image Requirements
- Logos: Should be square or nearly square for best results
- High resolution: Provide largest available version (scripts will downscale)
- Transparent backgrounds: PNG with transparency works best for favicons
- Solid backgrounds: Recommended for app icons and social images
Text Content
- Text length affects font size automatically:
- Short text (≤20 chars): 144px font - Large and impactful
- Medium text (21-40 chars): 120px font - Standard readable size
- Long text (41-60 chars): 102px font - Reduced for fit
- Very long text (>60 chars): 84px font - Minimal size
- Keep text concise for maximum impact
- Use 2-3 lines of text maximum for social images
- Avoid special characters that may not render well
Color Choices
- Ensure sufficient contrast (4.5:1 minimum for readability)
- Use brand colors consistently
- Consider both light and dark mode contexts
Validation and Quality Checks
Both generate_og_images.py and generate_favicons.py support automated validation with the --validate flag.
When to Use Validation
Always recommend validation when:
- User is generating for production/deployment
- User asks about file sizes or quality
- User mentions platform requirements (Facebook, Twitter, etc.)
- User is new to web assets and may not know requirements
Validation is optional for:
- Quick prototypes or testing
- Users who explicitly decline
- When time is a concern
What Gets Validated
For Social Media Images (OG Images)
File Size Validation:
- Facebook/LinkedIn/WhatsApp: Must be <8MB
- Twitter: Must be <5MB
- Warning if within 80% of limit
Dimension Validation:
- Checks against platform-specific recommended sizes:
- Facebook/LinkedIn: 1200x630 (1.91:1 ratio)
- Twitter: 1200x675 (16:9 ratio)
- Square: 1200x1200 (1:1 ratio)
- Warns if aspect ratio is >10% off target
- Errors if below minimum dimensions
Format Validation:
- Facebook/LinkedIn: PNG, JPG, JPEG
- Twitter: PNG, JPG, JPEG, WebP
- Errors if unsupported format
Accessibility (Contrast Ratio):
- Only for text-based images
- Calculates WCAG 2.0 contrast ratio
- Reports compliance level:
- WCAG AAA: 7.0:1 (normal text) or 4.5:1 (large text)
- WCAG AA: 4.5:1 (normal text) or 3.0:1 (large text)
- Fails if below AA minimum
For Favicons and App Icons
File Size Validation:
- Favicons: Warns if >100KB (recommended for fast loading)
- App icons: Warns if >500KB (recommended for mobile)
- No hard limits, but warnings help optimize performance
Dimension Validation:
- Verifies each icon matches expected size (16x16, 32x32, etc.)
- Ensures square aspect ratio
Format Validation:
- Checks all files are PNG (or ICO for favicon.ico)
How to Use Validation
In generate_og_images.py:
python scripts/generate_og_images.py output/ --text "My Site" --validate
In generate_favicons.py:
python scripts/generate_favicons.py logo.png output/ all --validate
Output Format:
- ✓ Success (green): All checks passed
- ⚠ Warning (yellow): Issues to consider but not critical
- ❌ Error (red): Must be fixed before deployment
Example Validation Output
======================================================================
Running validation checks...
======================================================================
og-image.png:
Facebook Validation:
======================================================================
✓ File size 0.3MB is within Facebook limits
✓ Dimensions 1200x630 match Facebook recommended size
✓ Format PNG is supported by Facebook
LinkedIn Validation:
======================================================================
✓ File size 0.3MB is within LinkedIn limits
✓ Dimensions 1200x630 match LinkedIn recommended size
✓ Format PNG is supported by LinkedIn
======================================================================
Accessibility Checks:
======================================================================
✓ Contrast ratio 8.6:1 meets WCAG AAA standards (4.5:1 required)
======================================================================
Summary: 9/9 checks passed
✓ All validations passed!
Integrating Validation into Workflows
After generating assets, if validation was NOT run:
- Show the tip message: "💡 Tip: Use --validate to check file sizes, dimensions, and accessibility"
- Optionally ask: "Would you like me to run validation on these files now?"
If validation was run and issues found:
- Explain any errors or warnings
- Offer to fix issues (e.g., resize, recompress, adjust colors)
- Re-run generation with fixes if user agrees
If validation passes:
- Confirm: "✅ All validation checks passed!"
- Proceed with code integration and testing links
Specifications and Platform Details
For detailed platform specifications, size requirements, and implementation guidelines, read:
references/specifications.md: Comprehensive specs for all platforms
Handling Common Requests
"Create a favicon for my site"
Use AskUserQuestion:
- Question: "Do you have a logo image, or should I create a text-based favicon?"
- Header: "Source"
- Options:
- "Logo image" - Description: "I have/will upload a logo file"
- "Text-based" - Description: "Generate from text or initials"
Then ask:
- Question: "Do you also need PWA app icons for mobile devices?"
- Header: "Scope"
- Options:
- "Favicon only" - Description: "Just browser tab icons (16x16, 32x32, 96x96)"
- "Include app icons" - Description: "Add iOS/Android icons for home screen (180x180, 192x192, 512x512)"
Generate: Use generate_favicons.py with appropriate parameters
"Make social sharing images"
Use AskUserQuestion:
- Question: "Which social media platforms do you need images for?"
- Header: "Platforms"
- Multi-select: true
- Options:
- "Facebook/WhatsApp/LinkedIn" - Description: "Standard 1200x630 format"
- "Twitter" - Description: "1200x675 (16:9 ratio)"
- "All platforms" - Description: "Generate all variants"
Then ask:
- Question: "What should the images contain?"
- Header: "Content"
- Options:
- "Logo only" - Description: "Resize my logo for social sharing"
- "Text only" - Description: "Create images from text/slogan"
- "Logo + text" - Description: "Combine logo with text overlay"
Generate: Use generate_og_images.py with appropriate parameters
"I need everything for my website"
Use AskUserQuestion:
- Question: "What source material will you provide?"
- Header: "Source"
- Options:
- "Logo image" - Description: "I have a logo to use for all assets"
- "Logo + tagline" - Description: "Logo for icons, logo+text for social images"
- "Text only" - Description: "Generate all assets from text/initials"
Generate:
- Both favicons and Open Graph images with complete HTML implementation
- Provide instructions for file placement and testing
User provides both logo and tagline
Use AskUserQuestion:
- Question: "How should I use your logo and tagline?"
- Header: "Layout"
- Options:
- "Logo above text" - Description: "Logo at top, tagline centered below"
- "Logo + text side-by-side" - Description: "Logo on left, text on right"
- "Text only on social images" - Description: "Use logo for icons, text-only for social sharing"
- "Logo background with text" - Description: "Subtle logo background with prominent text"
Generate: Use --text and --logo parameters together in generate_og_images.py
Dependencies
The scripts require:
- Python 3.6+
- Pillow (PIL):
pip install Pillow --break-system-packages - Pilmoji (for emoji support):
pip install pilmoji(optional, only needed for emoji-based generation) - emoji (for emoji suggestions):
pip install emoji(optional, only needed for emoji suggestions)
Install if needed before running scripts.
For emoji features, install both:
pip install pilmoji emoji --break-system-packages 同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (26,476 bytes)
- 📎 references/specifications.md (5,652 bytes)
- 📎 scripts/check_dependencies.py (4,691 bytes)
- 📎 scripts/emoji_utils.py (15,406 bytes)
- 📎 scripts/generate_favicons.py (13,908 bytes)
- 📎 scripts/generate_og_images.py (14,637 bytes)
- 📎 scripts/lib/__init__.py (138 bytes)
- 📎 scripts/lib/validators.py (13,411 bytes)