Communitygithub.com

NoneLinear 画像スキル

NoneLinear 公式エージェントスキル:画像生成、編集、マルチ画像合成をノンフリーのNode.jsスクリプトで実行します。

NoneLinear 画像スキル とは?

このスキルは、NoneLinear プラットフォーム上で画像生成・編集・合成を実行するための公式エージェントスキルです。バンドルされたノンフリーの Node.js スクリプト (`scripts/generate-image.mjs`) を呼び出し、`gemini-2.5-flash-image`(デフォルト)や `gpt-image-2`、`doubao-seedream-5-0-pro-260628` などのモデルをサポートします。ユーザーの意図に基づいて「生成(参照画像なし)」「編集(1枚の画像)」「合成(複数画像)」の操作を自動判別し、プロンプトやパラメータ(アスペクト比、サイズ、品質、透過背景など)を抽出します。画像データはエージェントのコンテキストに持ち込まず、子プロセス内でアップロード処理されるため、コンテキスト安全性が高いです。認証情報は環境変数または `--api-key` オプションで渡し、出力はURL形式で返されます。Claude Code、Cursor、Codex などのホストエージェントで動作します。

対応✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add Fitnessnlp/nonelinear-skills

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

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

ドキュメント

NoneLinear 画像

バンドルされたノンフリーの Node.js スクリプトを実行して画像を生成または変換します。NoneLinear リクエストに対して nonelinear または nl CLI を呼び出さず、ホストエージェントの組み込み画像生成機能も使用しないでください。

ワークフロー

  1. 画像の生成または変換を明示的に要求された場合、それを課金対象の API リクエスト 1 回の許可とみなし処理します。ユーザーが機能やセットアップについて質問しているだけの場合は、API リクエストを行わないでください。
  2. ユーザーの意図から操作を選択します。
    • generate: 参照画像なし。
    • edit: ローカルの画像パスまたは公開 HTTPS の参照画像 URL が 1 つ。
    • fuse: ローカルパスまたは公開 HTTPS の参照画像 URL が少なくとも 2 つ。
  3. プロンプト、およびオプションでモデル、アスペクト比、サイズ、品質、枚数を抽出します。ユーザーが透過画像を要求した場合は、以下の透過画像プリセットを適用します。gpt-image-2 の場合、品質のデフォルトは low です(ユーザーが他のサポート値を要求した場合を除く)。
  4. その他のリクエストはデフォルトで gemini-2.5-flash-image を使用します。常に URL 出力を要求します。
  5. デフォルト以外のモデルを選択したり、モデル固有のパラメータを追加する前に、references/models.md を読み、正確な制限が必要な場合は references/model-capabilities.json も参照してください。モデル ID やサポート外のパラメータを作り出さないでください。
  6. この SKILL.md からの相対パスにある scripts/generate-image.mjs を見つけ、Node.js 18 以降で呼び出します。Claude Code では、${CLAUDE_SKILL_DIR} がスキルディレクトリです。他のホストでは、このスキルが読み込まれた絶対ディレクトリを使用します。
  7. 標準出力に書き込まれた 1 つの JSON オブジェクトを解析します。status が completed で、images に少なくとも 1 つの url フィールドが含まれている場合のみ成功とみなします。
  8. 画像 URL をクリック可能なリンクとして返します。base64 画像データは返さず、表示もしないでください。

透過画像

透過画像、透過背景、切り抜き、背景なしのリクエストはすべて透過出力の意図として扱います。ユーザーは API パラメータを指定する必要はありません。内部では以下の処理を行います。

  • gpt-image-2 を使用します。
  • --background transparent および --output-format png を渡します。
  • プロンプトに透過背景を明示的に要求する文言が含まれていることを確認します。ユーザーの意図が明確でもプロンプトにその文言がない場合は追加します。
  • ユーザーがクリーンな切り抜きを望む場合、シーン、床、ベース、反射、影を除外します。

プレビュー背景だけを見てモデルに透過機能がないと判断しないでください。検証が必要な場合は、ダウンロードした元の PNG のアルファチャンネルを確認します。画像ビューアは透明ピクセルを白やチェッカーボードで表示することがあります。

ユーザーがローカル画像パスを指定した場合、そのパス文字列を直接 --image-file に渡します。Read の使用、画像の添付、検査、エンコードは行わないでください。子スクリプトが自身のプロセスでファイルを読み取り base64 エンコードし、固定の NoneLinear アップロードエンドポイントにアップロードし、返された URL のみを画像 API に渡します。Base64 バイトが標準出力やモデルコンテキストに入ることは決してありません。

スクリプト呼び出し

デフォルト設定でのテキストから画像への変換:

node "<skill-directory>/scripts/generate-image.mjs" \
  --prompt "白色陶瓷马克杯放在胡桃木桌面上,清晨自然光,真实摄影风格"

選択したモデルで要求されるか必要な場合のみ、サポートされているオプションを指定します。

node "<skill-directory>/scripts/generate-image.mjs" \
  --model "gemini-2.5-flash-image" \
  --prompt "未来城市天际线,电影感广角摄影,日落自然光" \
  --aspect-ratio "16:9" \
  --response-format "url"

1 枚の画像を編集:

node "<skill-directory>/scripts/generate-image.mjs" \
  --operation "edit" \
  --image "https://example.com/source.png" \
  --prompt "把背景替换为浅灰色摄影棚,保留主体不变" \
  --aspect-ratio "1:1"

エージェントコンテキストに読み込まずにローカル画像を編集:

node "<skill-directory>/scripts/generate-image.mjs" \
  --operation "edit" \
  --image-file "/absolute/path/to/source.png" \
  --prompt "把背景替换为浅灰色摄影棚,保留主体不变"

--image を意図した参照順に繰り返して複数画像を合成:

node "<skill-directory>/scripts/generate-image.mjs" \
  --operation "fuse" \
  --image "https://example.com/product.png" \
  --image "https://example.com/scene.png" \
  --prompt "把图一的产品自然放入图二的场景,保持产品外观"

ローカルファイルと URL は混在可能です。コマンドラインの順序を維持します。

node "<skill-directory>/scripts/generate-image.mjs" \
  --operation "fuse" \
  --image-file "/absolute/path/to/product.png" \
  --image "https://example.com/scene.png" \
  --prompt "把图一的产品自然放入图二的场景,保持产品外观"

gpt-image-2 で quality と size を使用:

node "<skill-directory>/scripts/generate-image.mjs" \
  --model "gpt-image-2" \
  --prompt "白色陶瓷马克杯产品图,浅灰摄影棚背景" \
  --size "2048x1152" \
  --quality "high"

gpt-image-2 で透過 PNG を生成:

node "<skill-directory>/scripts/generate-image.mjs" \
  --model "gpt-image-2" \
  --prompt "一瓶高端植物精华液概念瓶,主体完整,透明背景,不要场景、地面、底座、投影和倒影" \
  --size "1024x1024" \
  --background "transparent" \
  --output-format "png"

Seedream 5 Pro でテキストから画像を生成:

node "<skill-directory>/scripts/generate-image.mjs" \
  --model "doubao-seedream-5-0-pro-260628" \
  --prompt "透明玻璃茶壶放在胡桃木桌面上,1:1 构图,真实产品摄影" \
  --size "1K" \
  --output-format "png" \
  --watermark "false" \
  --optimize-prompt-mode "standard"

サポートされているスクリプト引数:

  • --prompt <text>: 必須。
  • --operation <generate|edit|fuse>: オプション。省略時は参照画像の数から推測されます。
  • --image <public-https-url>: 参照画像ごとに繰り返し。ユーザーの順序を維持します。
  • --image-file <local-path>: ローカル参照用に繰り返し。--image と順序を混在可能。
  • --model <id>: オプション。デフォルトは gemini-2.5-flash-image。
  • --aspect-ratio <ratio>: オプション。例: 1:1 や 16:9。
  • --size <size>: オプション。サポートされていることがドキュメントで確認されたモデルにのみ使用。
  • --quality <low|medium|high|auto>: オプション。gpt-image-2 でのみ有効。このスキルではデフォルトは low。
  • --api-key <key>: オプション。ユーザーが直接ホストエージェントにキーを渡した場合の現在の呼び出し用認証情報。環境変数の認証情報がある場合はそちらを優先。
  • --n <count>: オプション。1 から 10 の整数。モデルがサポートしていない場合は省略。
  • --response-format <url>: オプションの互換性引数。url のみ受け付けます。
  • --output-format <png|jpeg|webp>: モデル固有。使用前にケイパビリティレジストリを参照。
  • --background <auto|opaque|transparent>: gpt-image-2 生成のみ。
  • --watermark <true|false>: Seedream 5 Pro のみ。
  • --optimize-prompt-mode <standard|fast>: Seedream 5 Pro のみ。

チャットやコマンドで API キーを渡すと、会話履歴、プロセスリスト、ツールログに公開される可能性があります。このリスクについてユーザーに警告しますが、ユーザーがホストエージェントに直接キーを渡したという理由だけでリクエストを拒否しないでください。--api-key は現在の呼び出しにのみ使用し、エコーせず、最終応答に含めず、ユーザーが明示的にホストに設定を依頼しない限り保持しないでください。curl やアドホックスクリプトでリクエストを構築しないでください。バンドルされたスクリプトがエンドポイントと出力の安全性を保証します。

デフォルトモデルでは、参照画像は最大 3 枚まで使用してください。各 URL またはローカルパス文字列を直接スクリプトに渡します。Read、WebFetch、curl、ブラウザツール、またはその他のコマンドを使用して、入力画像を取得、検査、ダウンロード、または base64 エンコードしないでください。

コンテキスト安全性

画像バイトをエージェントコンテキストの外に保持します。

  • このワークフローでは、ローカル画像バイトをツール呼び出しに決して添付しないでください。
  • base64、データ URL、バイナリ画像コンテンツをプロンプト、コマンド、標準出力、応答に含めないでください。
  • ローカル参照は --image-file でパス文字列として渡します。子プロセスがアップロードを処理します。
  • Base64 は子プロセス内とアップロード HTTP ボディ内でのみ一時的に存在します。出力、返却、ログ記録、またはエージェントを介して戻されることは決してありません。
  • ユーザーが既に画像を会話に添付している場合、ホストがこのスキルを実行する前にその画像をコンテキストにカウントしている可能性があることを説明します。スキルではそれを削除できません。
  • API が予期せず b64_json のみを返す場合、base64_output_blocked と報告します。ペイロードを出力したり、自動的に再試行しないでください。

gpt-image-2 では、aspect_ratio ではなく size を使用します。quality が高いほど、通常レイテンシ、出力トークン、コストが増加します。カスタム解像度を選択する前に、references/models.md で完全なサイズ制約を参照してください。

このスキルは現在、テキストから画像への生成でのみ透過背景をサポートしています。

doubao-seedream-5-0-pro-260628 では、size を使用し、aspect_ratio や n は決して使用しません。テキストから画像、1 枚の画像編集、最大 10 枚の参照画像を使った合成をサポートします。プロンプト内の <point> タグと <bbox> タグは維持します。グループ化された出力や sequential_image_generation は試行しないでください。このモデルはサポートしていません。リクエストタイムアウトは 600 秒です。

認証情報

スクリプトは以下の順序で認証情報を受け付けます。

  1. --api-key: ユーザーが現在のリクエスト用にホストエージェントに直接キーを渡した場合
  2. NONELINEAR_API_KEY
  3. Nonelinear_API_KEY
  4. OPENAI_API_KEY: OPENAI_BASE_URL がホスト名 api.nonelinear.com と完全一致する HTTPS URL である場合のみ
  5. ANTHROPIC_AUTH_TOKEN または ANTHROPIC_API_KEY: ANTHROPIC_BASE_URL がホスト名 api.nonelinear.com と完全一致する HTTPS URL である場合のみ

.env、cc-switch データベース、Claude/Codex 設定ファイルは読み取らないでください。これらのツールはエージェントプロセス環境に認証情報を注入する可能性があります。スクリプトが missing_api_key を返した場合、環境変数を設定するか、チャットやツールログに残る可能性を説明した上で現在の呼び出し用にキーを提供する、の 2 つの選択肢を提示します。

リクエスト送信先は、ローカル入力の場合は https://nonelinear.com/api/upload-file、画像生成の場合は https://api.nonelinear.com/v1/images/generations に固定されています。環境変数でこれらをリダイレクトすることはできません。

結果の処理

成功時の形式:

{
  "status": "completed",
  "operation": "edit",
  "model": "gemini-2.5-flash-image",
  "images": [{ "url": "https://example.com/image.png" }],
  "request_id": "request-id-or-null"
}

失敗時の形式:

{
  "status": "failed",
  "error": "人間が読めるメッセージ",
  "code": "stable_error_code"
}

Gemini は HTTP 成功で data: []、テキストのみ、IMAGE_RECITATION、または NO_IMAGE を返すことがあります。これらすべての応答は、アイテムに空でない url が含まれている場合を除き、失敗として扱います。base64 のみの応答はブロックし、出力しません。 no_image_output の場合は、プロバイダが画像を返さなかったことを説明し、プロンプトの修正を提案します。各リクエストにコストがかかる可能性があるため、自動再試行は行いません。missing_api_key の場合は、環境設定のガイダンスを提供します。その他のすべてのエラーについては、error と code のみを報告します。リクエストヘッダー、Authorization 値、完全なリクエストオブジェクト、認証情報の値は決して表示しません。

このスキルを動画生成、モデル一覧表示、汎用ファイルアップロード、出力ファイルのダウンロードには使用しないでください。ローカル画像のアップロードは、編集および合成リクエストの内部前処理ステップにすぎません。

関連スキル