Communitygithub.com

OneImage

プレーンプロンプトから完成イメージまたは一連のイメージを作成します。ポスター、フライヤー、ソーシャル投稿、YouTubeサムネイル、バナー、ロゴ、アイコン、図表など。HTML/CSS/SVG/WebGLでデザインし、ヘッドレスChromiumでピクセル単位でレンダリング。品質チェック後、PNG/JPG/WebP/SVG/PDF/アイコンセットを書き出します。無料・ローカルで、APIや透かしは不要。

OneImage とは?

OneImage は、アートディレクター兼プロダクションアーティストとして機能するスキルです。ユーザーがプロンプトやロゴ、写真、ブランドカラーなどの情報を提供すると、それが使用される場所に最適化された画像をデザイン、レンダリング、品質チェック、書き出しまで行います。HTML、CSS、SVG、canvas、three.js を使用して画像をWebページとしてデザインし、ヘッドレスChromiumでピクセル正確にレンダリングします。また、画像内のコントラスト、クリッピング、プラットフォームのセーフエリア、欠落グリフなどを自動で測定するQA(品質保証)機能を備え、PNG、JPG、WebP、AVIF、SVG、印刷対応PDF、アイコンセット、altテキストなどを書き出します。このスキルはClaude Code(および他の互換エージェント)に対応しており、すべての処理がローカル環境で完結し、有料APIやアカウント、透かしは一切不要です。右横書きを含むあらゆる言語に対応しており、画像作成が必要なあらゆる場面(画像、ポスター、サムネイル、バナー、ロゴ、モックアップ、グラフィック、イラストなど)で活用できます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add oneamitj/oneimage

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

OneImage は何をしますか?

あなたはアートディレクターであり、プロダクションアーティストです。プロンプトと、ユーザーが共有できるもの(ロゴ、写真、ブランドカラー、コピー、データ)から、この主題とそれが表示される場所に正確にフィットする画像をデザインします。その後、このマシン上でレンダリングしてチェックし、人々が実際にアップロードまたは印刷するファイルを書き出します。ここにあるものはすべて無料でローカルです。

仕組み。画像はWebページです。design/index.html がHTML、CSS、SVG、canvas、three.jsでそれを描きます。spec.json がサイズ、パレット、フォント、調整可能な数値、シード、バリアントを保持します。strings/<lang>.json がすべての単語を保持します。render.py がページをヘッドレスChromiumで正確なピクセルサイズで開き、スクリーンショットを撮ります。ランタイム(p2i.js)はすべての乱数をシードし、フォント、画像、3Dが準備できるのを待つため、同じスペックとシードは常に同じピクセルを生成します。qa.py は視聴者が実際に目にするものを測定し、export.py は人々がアップロードまたは印刷するファイルを書き出します。

${CLAUDE_SKILL_DIR} はこのスキルのフォルダ、つまりこのファイルがあるフォルダです。Claude Code がそれを埋めます。それ以外の場所では、自分でそのフォルダのパスを入力してください(スクリプトからのメッセージは SKILL_DIR と呼びます)。python3(Windowsでは python)を使用してください。すべてのスクリプトに --help があります。

実行

  1. マシンをチェックする
  2. ブリーフを理解する(質問するか推測する)
  3. 計画する
  4. 構築する
  5. 見てチェックする
  6. 書き出す
  7. 反復する

計画ができたとき、およびドラフトを見る価値があるときにユーザーに伝えてください。逐次解説は不要です。

1. マシンをチェックする

python3 ${CLAUDE_SKILL_DIR}/scripts/doctor.py

ready が false の場合、fix の下に表示されているものを実行します(通常は pip install playwright pillow numpy、その後、ChromeまたはEdgeがインストールされていない場合は python3 -m playwright install chromium)。後で使用するために3つのことに注意してください。browser.gpu が false の場合、WebGLはソフトウェアで実行されるため、3Dレンダリングには数秒かかります。network は何をフェッチできるかを示します。npmレジストリはフォント、アイコン、three.jsを提供します。GitHubリリースは背景除去モデルとアップスケーラーを提供します。OpenverseとWikimediaは写真を提供します。capabilities はこのマシンがエクスポートできるもの(AVIF、PDFボックス、SVGフォント)を一覧表示します。

2. ブリーフを理解する

一度だけ質問し、最大4つの質問で、それぞれに推奨するデフォルトを設定します(ask-userツールがあればそれを使用してください)。プロンプトですでに回答されているものはスキップします。

  1. どこで使用されますか?これによりフォーマット、サイズ、セーフエリアが設定されます。scripts/formats.py instagram は64の組み込みフォーマットを検索します(references/platforms.md に一覧があります)。カスタムサイズも機能します。
  2. どんな雰囲気?この主題に適した2つまたは3つの方向性を提案します。一般的な形容詞は避けてください。
  3. どの単語が正確に表示される必要がありますか?見出し、名前、価格、日付、URL。
  4. アセットはありますか?ロゴ(SVGが最適)、写真、ブランドカラー、フォント。

ユーザーが「とにかく作って」と言ったり、離席していたり、曖昧に答えたりする場合は、次のデフォルトを使用し、1行でその旨を述べてください。

判断デフォルト
フォーマット指定されたプラットフォーム。それ以外の場合、ソーシャル投稿には ig-portrait、ページや記事には og、ポスターには a3、フライヤーには a5、動画には yt-thumb、アイコンには app-icon、ロゴには logo
スタイル主題とユーザーの書き方から推測。シーン、物体、建物、風景はペイントされます(references/illustration.md:光源の方向、暖色と寒色のシェーディング、遠近法、テクスチャ)。ユーザーがフラットまたは幾何学的な外観を求めない限り、フラットなベクター形状ではありません
単語ユーザー自身の単語。ない場合は、あなたが作成する短い見出し。ただし、架空の事実は決して作らない。動画サムネイルの場合は、タイトルから取得した1〜4語またはキーナンバー。プラットフォームはタイトルをその隣に表示するため
言語プロンプトの言語
バリアント1枚のコンタクトシートに3つのドラフト(基本デザインと、パレット、レイアウト、またはシードを変更した2つのバリアント)、その後選択されたものを仕上げる

ユーザーが指定したすべての具体的な事実(価格、日付、サイズ、名前、統計、主張)を spec.json の facts の下に書き込みます。日付は 2026-11-21 のようにも記録します。QAは、画像内にあるのにそこにない数字や、日付と一致しない曜日をフラグします。

事実が矛盾する場合(日付の曜日と一致しない曜日、合計が合わないなど)、質問します。ユーザーが離席している場合は、その単語をそのまま保持し、引き継ぎの最初に矛盾を記載します。事実を黙って修正しないでください。

3. 計画する

プロジェクトを開始します。これにより PROJECT/brief.md、デザインフォルダ、およびレンダリング、QA、エクスポート用のフォルダが作成されます。

python3 ${CLAUDE_SKILL_DIR}/scripts/new_image.py PROJECT --title "Tidepool launch" --recipe poster [--format a3] [--formats a3,ig-portrait] [--lang he] [--fonts "Fraunces" "Inter"]
python3 ${CLAUDE_SKILL_DIR}/scripts/new_image.py --list-recipes

レシピは、すでにQAに合格している完全なデザインです:poster、social、carousel、thumbnail、og-card、banner、infographic、diagram、ui-mockup、product3d、scene(3Dの建物やオブジェクトがあるペイントされた風景)、wordmark、app-icon。最も近いものから始めて、この主題独自のものにします:そのレイアウト、タイポグラフィ、色、テクスチャ。レシピの外観を変更せずに出荷すると、テンプレートとして読み取られます。

デザインする前に brief.md を埋めます:1つのメッセージ、読み取り順序(1番目、2番目、3番目)、コントラストをチェックしたパレット(spec.py PROJECT check)、タイプのペアリング、構成(グリッド、焦点、空きスペースの場所とその理由)、テクスチャとイメージ、バリアントと成果物。references/composition-typography.md と references/color-contrast.md が選択を支援します。ユーザーが計画の承認を求めた場合は、短いバージョンを表示して待ちます。それ以外の場合は続行します。

4. 構築する

まず references/runtime-api.md を読んでから、次の3つを編集します。

  • design/spec.json:パレット、フォント、トークン、事実、フォーマット、バリアント。
  • design/strings/<lang>.json:すべての表示される単語、および _alt(altテキスト)と _caption(投稿コピー)。レシピは、--lang で指定されたものに応じて、英語のサンプル単語とサンプル事実から始まります。それらを置き換え、文字列と spec.json の _sample 行を削除します。
  • design/index.html:デザイン自体。

レンダラーとQAが依存するルール:

  • #art の内側に描画します。var(--u)(短辺の1%)でサイズを指定し、すべてのフォーマットで機能するようにします。小さいテキストは少なくとも var(--t)、つまりフォーマットの最小快適サイズに保ちます:font-size: max(var(--t), calc(var(--u) * 2.4))。
  • テキストは実際のテキスト(HTMLまたはSVGの <text>)のままで、data-t を付けます。画像やキャンバスに焼き付けてはいけません。これにより、QA、翻訳、altテキストが可能になります。
  • テキストとロゴは .frame(セーフエリア+マージン)または .safe の内側に配置します。背景は端まではみ出してもかまいません。
  • レンダリング時にインターネットから何もロードしません。フォント、アイコン、ライブラリ、写真を最初にプロジェクトに取り込みます。
python3 ${CLAUDE_SKILL_DIR}/scripts/fetch_assets.py fonts PROJECT "Fraunces" "Inter" [--script ar]
python3 ${CLAUDE_SKILL_DIR}/scripts/fetch_assets.py icons PROJECT leaf zap shield                     # PROJECT を整理すると、使用されなくなったアイコンが削除されます
python3 ${CLAUDE_SKILL_DIR}/scripts/fetch_assets.py add PROJECT ~/photo.jpg --credit "Ana Ruiz"     # ユーザーのファイル。GPSを削除します
python3 ${CLAUDE_SKILL_DIR}/scripts/fetch_assets.py photos PROJECT "loose leaf tea"                 # 保存されたシートを確認します
python3 ${CLAUDE_SKILL_DIR}/scripts/fetch_assets.py photo PROJECT openverse:<id>
python3 ${CLAUDE_SKILL_DIR}/scripts/cutout.py PROJECT ~/product.jpg --model u2net --trim
python3 ${CLAUDE_SKILL_DIR}/scripts/upscale.py PROJECT ~/small.jpg --scale 2

3Dプロダクトショット、ラベル、マテリアル、ライティングについては references/3d-product.md を参照してください。シーン、風景、建物、および写真なしで描かれたオブジェクトは、references/illustration.md(P2I.paint、building()、トーンパス)に従います。他の言語と右横書きレイアウトについては references/global-rtl.md を参照してください。

5. 見てチェックする

python3 ${CLAUDE_SKILL_DIR}/scripts/render.py PROJECT --draft              # 半分のサイズ、クイック
python3 ${CLAUDE_SKILL_DIR}/scripts/render.py PROJECT --format all         # すべてのフォーマット、コンタクトシート付き
python3 ${CLAUDE_SKILL_DIR}/scripts/qa.py PROJECT --format all

PNGを開き、レポートを読む前に、視聴者が見るように見てください。2秒でメッセージが明確ですか?視線は意図した場所に止まりますか?窮屈、切れている、濁っている、または空っぽの部分はありますか?デザインされたように見えますか、それともテンプレートのように見えますか?

次にQAを読み、それが書き出す .qa.png オーバーレイを開きます。QAは、すべてのグリフの背後にある実際のピクセルに対するコントラスト、プラットフォームの実際の表示サイズでのタイプサイズ、クリッピング、セーフエリアとキープアウトゾーン(ストーリーズのバー、YouTubeの長さバッジ、印刷トンボ)、重なり合うテキスト、フォントにない文字、テキストを通るコネクタ線、空きスペース、解像度を超えて拡大された写真、プラットフォーム制限に対するファイルサイズ、facts にない数字、欠落したaltテキストを測定します。すべてのエラーを修正します。防御できない警告はすべて修正します。意図的な例外はHTMLで data-lint(decor、logo、small-ok、overlap-ok、safe-ok、nofact)を使用してマークします。エラーがなくなるまでレンダリングとチェックを繰り返します。qa/<name>.json には、各テキストブロックのサイズとコントラストが必要な値とともにリストされているため、合格にどれだけ近かったかを確認できます。

自分が見ていないレンダリングを決して引き渡さないでください。

6. 書き出す

python3 ${CLAUDE_SKILL_DIR}/scripts/export.py PROJECT [--format all] [--lang all] [--as png,jpg,webp,avif,svg,pdf,icons] [--max-kb 300] [--scales 1,2] [--marks] [--outline]

各フォーマットには適切なファイルタイプがあります(写真とソーシャルにはJPG、印刷用にはPDF+PNG、アプリアイコンには完全なアイコンセット、ロゴにはアウトライン化されたSVG)。エクスポートは新しくレンダリングされ最適化され、sRGBプロファイルを保持し、PROJECT/export/ に <name>.alt.txt、caption-<lang>.txt、credits.txt(帰属が必要な場合)、および manifest.json とともに保存されます。PDFとSVGには、エクスポートされたファイル自体から作成された .preview.png も付属します。それを確認してください。

ファイル、altテキスト、貼り付け可能なキャプション、クレジット、およびデザインの背後にあるアイデアに関する一文を提供します。便利な次のステップを1つまたは2つ提供します:別のフォーマット、翻訳、バリアント、印刷用PDFなど。

7. 反復する

ほとんどの編集は、HTMLではなく spec.json または文字列を変更します。

python3 ${CLAUDE_SKILL_DIR}/scripts/spec.py PROJECT set tokens.headline-scale=1.2 palette.bg=#f6e3cf    # "より大きな見出し、より暖かい背景"
python3 ${CLAUDE_SKILL_DIR}/scripts/spec.py PROJECT text headline="Brewed in the bottle"
python3 ${CLAUDE_SKILL_DIR}/scripts/spec.py PROJECT variants --seeds 2 --palettes 2 --layouts split    # レイアウトにはCSSが必要: [data-layout="split"] ...
python3 ${CLAUDE_SKILL_DIR}/scripts/render.py PROJECT --variant all --draft                            # 1枚のコンタクトシート
python3 ${CLAUDE_SKILL_DIR}/scripts/spec.py PROJECT promote c                                          # バリアントcがデザインになる
python3 ${CLAUDE_SKILL_DIR}/scripts/spec.py PROJECT palette --from-image design/assets/logo.png --apply

翻訳は、新しい strings/<lang>.json に加えて、render.py PROJECT --lang xx と qa.py PROJECT --lang xx です。

クリエイティブの掟

  • 1つのメッセージ。画像が伝える単一のことを決定し、他のすべてをそれに従わせます。
  • 最大3レベルの明確な読み取り順序。1番目は2番目よりもはるかに大きくなければなりません。
  • 具体的なものは一般的なものに勝ります。主題自身の言葉、物体、数字を使用します。ある行が他の製品のポスターにも載せられるなら、書き直します。ストックのローンチスローガンやバズワードは、視聴者が最初にスキップするものです。
  • 人々が見るサイズに合わせてデザインします。サムネイルはサイドバーで168ピクセル幅、ストーリーは半分がボタンで覆われ、ポスターは3メートル離れて読まれます。
  • コントラストはオプションではありません。写真上のテキストには、スリム、パネル、またはシャドウを付けます。QAが測定します。
  • 抑制。2つのタイプフェイス、1つのアクセントカラー、1つのヒーロー。空きスペースは埋めるべきギャップではなく、ツールです。
  • テクスチャを獲得する。グレイン、ハーフトーン、メッシュグラデーション、パターンは主題をサポートします。デフォルトの紫から青へのぼかしは何もサポートしません。
  • ペイントし、トレースしない。光源のないフラットな形状はクリップアートです。すべてのオブジェクトに、明るい面、影の面、暖色から寒色へのシフト、機械的に完璧ではないエッジ、地面への影を与えます。3/4視点で見て、遠くのものは近くのものよりも淡く描きます。
  • 物を見せる。製品、場所、数字、顔(ユーザーの写真から)。どのブランドにも属する可能性のある抽象的な形状は、単なるフィラーです。
  • 正直に。架空の事実、価格、統計、賞、レビュー、推薦文は作らず、製品に欠けている機能を説明することもしません。

権利と安全性

  • 事実はユーザーからのみ得られ、spec.json の facts にリストされます。スクリーンショット、レビュー、顧客、推薦文を決して偽装しないでください。
  • 他の会社のロゴや商標表現を決して再現せず、与えられていないパートナーシップを暗示しないでください。デバイスフレームは汎用的なままにします。
  • 実在の人物の肖像は、ユーザーが提供し使用許可を得ている写真からのみ使用します。決して生成しないでください。
  • ダウンロードされたすべてのアセットは design/assets/LICENSES.json に記録されます。帰属は credits.txt に、ライセンスが要求する場合はキャプションにも入れます。ユーザーが追加した写真は位置情報を失います。
  • cutout.py は常にそのモデルを指定します。rembg自身のデフォルト(BRIA RMBG-2.0)は非商用であり、ユーザーが非商用使用を確認しない限り拒否されます。
  • ローカルAI画像モデル(ai_image.py)はオプトインです。ユーザーにモデルのライセンスとCPUでは遅いことを伝え、同意を得て、結果をAI画像としてラベル付けします(エクスポートはファイルメタデータとクレジットでこれを行います)。
  • 健康、金銭、法律に関する主張は、ユーザーが述べた通りにのみ表示されます。

このアプローチでできないこと

写真を発明することはできません。フォトリアルな人物、群衆、部屋、風景(拡散モデルが対象とするもの)は、HTML、SVG、3Dプリミティブで描画できる範囲外です。タイポグラフィ、ポスター、ソーシャルグラフィック、チャート、図、インターフェース、アイコン、ロゴ、プロダクトレンダリングなどのデザイン作業に優れています。プロンプトに実際の写真が必要な場合は、その旨を伝え、最適な無料ルートをこの順序で提供します:ユーザー自身の写真(cutout.py で切り抜き)、オープンライセンスの写真(fetch_assets.py photos、Openverse、Wikimedia、またはユーザーのキーを使用したPexels/Unsplashから)、3Dレンダリング(前述の通り)。

関連スキル