mcpField
S
sn-image-resume

sn-image-resume

github.com/opensensenovaデザイン・UI6.0k149 回インストール2 日前に更新
リポジトリ

sn-image-resume について

sn-image-resume は、ポートフォリオ風の履歴書を作成する人向けに、履歴書テキストを縦長のデザイン画像に変換します。sn-text-optimize で画像プロンプトを作成し、sn-image-generate で画像を生成します。スタイルやアスペクト比も指定できます。

主な機能

  1. 01会話から履歴書テキストを受け取る
  2. 02任意のビジュアルスタイルを指定
  3. 03テキストを画像プロンプトに変換
  4. 04デザイン履歴書画像の生成
  5. 05アスペクト比と画像サイズの設定

活用シーン

  1. 01ポートフォリオ風履歴書画像の作成
  2. 02履歴書テキストのビジュアルページ化
  3. 03指定した配色や職業イメージの適用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/opensensenova/sensenova-skills --skill sn-image-resume

インストール後、Claude Code で/sn-image-resumeを入力して読み込まれたか確認します。

同梱ファイルprompts/resume.md

詳細

sn-image-resume

sn-image-base(ティア 0)が提供する sn-text-optimize ツールと sn-image-generate ツールに依存する、履歴書画像生成シーンのスキル(ティア 1)です。

機能:

  • 会話テキストから履歴書の内容を直接受け取ります
  • ユーザーが任意で指定するスタイルの方向性に対応します
  • prompts/resume.md に定められたポートフォリオ履歴書の固定レイアウトルールを適用します
  • sn-image-generate を通じて、縦長のデザインされた履歴書画像を生成します

対象外

  • 画像を生成せずに、プレーンテキストの履歴書文書を編集または推敲すること
  • アップロードされた履歴書ファイルを主な入力形式として解析すること
  • 従来型の単一カラムの ATS 履歴書を作成すること
  • 画像レイアウト上、圧縮が必要な場合に、長い段落をすべて正確に保持することを保証すること

入力仕様

パラメーター型デフォルト値説明
resume_contentstring必須会話内でユーザーが提供する履歴書のテキストです。氏名、プロフィール、学歴、職歴、スキル、プロジェクト、連絡先などを含みます。
stylestring任意ユーザーが指定するビジュアルスタイル、トーン、カラーパレット、職業に合った美的表現、または参考にしたい雰囲気です。resume_content に含めることもできます。
aspect_ratiostring9:16出力のアスペクト比です。指定できる値は 2:3、3:2、3:4、4:3、4:5、5:4、1:1、16:9、9:16、21:9 です。テンプレートは縦に長いポートフォリオ履歴書ページのため、デフォルトは 9:16(縦向き)です。
image_sizestring2k画像サイズのプリセットです。1k または 2k を指定します。
output_modestringfriendly出力モードです。friendly または verbose を指定します。

API 設定

このスキルのすべての API 呼び出しは、デフォルト値(CLI > 環境変数 > 組み込みのデフォルト値)の認証パラメーターを使用して、sn-image-base スキルの sn_agent_runner.py を通じて実行されるため、通常の使用時に明示的に渡す必要はありません。

呼び出しタイプツール認証パラメーター説明
LLMsn-text-optimizeデフォルトでは SN_TEXT_API_KEY -> SN_CHAT_API_KEY -> SN_API_KEY の順に読み込みますprompts/resume.md をシステムプロンプトとして使用し、ユーザーの履歴書テキストを詳細な画像生成プロンプトに変換します
画像生成sn-image-generateデフォルトでは SN_IMAGE_GEN_API_KEY -> SN_API_KEY の順に読み込みます最終的な履歴書画像を生成します

すべての機能で同じゲートウェイを使用する場合は、次の設定だけで済みます。

SN_BASE_URL="https://your-api-endpoint.com/v1"
SN_API_KEY="your-api-key"

MissingApiKeyError が発生した場合、またはモデルを指定する必要がある場合:CLI からパラメーターを明示的に渡してください。$SN_IMAGE_BASE/references/api_spec.md を参照してください。

$SN_IMAGE_BASE のパスについて:$SN_IMAGE_BASE は sn-image-base スキルのインストールディレクトリです(SKILL.md が存在します)。エージェントはスキル名 sn-image-base を使ってこのパスを特定できます。

アーキテクチャ:メインエージェント + ワーカーエージェント

このスキルでは、2 層のエージェントアーキテクチャを使用します。

役割責任
メインエージェントユーザーのリクエストを受け取り、パラメーターを正規化し、事前確認を行い、ワーカーを起動して結果を収集し、最終的なテキストまたは画像をユーザーに送信します
ワーカーエージェントプロンプト生成と画像生成を実行し、構造化 JSON を返します

責任の境界:

  • ワーカーエージェントはユーザーに直接メッセージを送信せず、構造化 JSON のみを返します
  • ユーザーに表示されるすべてのメッセージは、メインエージェントが担当します
  • ワーカーエージェントの最後のメッセージは、返却仕様で定義された JSON 文字列のみでなければなりません
  • ワーカーエージェントの低レベル API 呼び出しは、ネストされたサブエージェントを起動せず、sn-image-base を通じて直接実行されます

ワークフロー

メインエージェントのワークフロー
  1. ユーザーのリクエストから resume_content、省略可能な style、aspect_ratio(デフォルトは 9:16)、image_size(デフォルトは 2k)、output_mode(デフォルトは friendly)を抽出します
  2. resume_content が空ではなく、意味のあるページを生成するのに十分な履歴書情報が含まれていることを検証します
  3. aspect_ratio が許可された値(2:3、3:2、3:4、4:3、4:5、5:4、1:1、16:9、9:16、21:9、9:21)に含まれていることを検証します。ユーザー指定の値がこのリストに含まれていない場合はユーザーに伝え、デフォルトの 9:16 を使用します
  4. 定型の事前確認メッセージを送信します:「履歴書画像の生成に sn-image-resume スキルを使用しています。しばらくお待ちください……」
  5. 完全なパラメーターと作業ディレクトリを渡して、ワーカーエージェントを起動します
  6. ワーカーエージェントから結果が返されたら:
    • status=ok:簡潔な要約と生成された画像を送信します
    • status=error:実際の error フィールドの内容をユーザーに報告します
ワーカーエージェントのワークフロー

ワーカーエージェントは、resume_content、style、aspect_ratio、image_size、output_mode、およびこのスキルの作業ディレクトリ(SKILL_DIR)を受け取ります。

ステップ 0 — 初期化
  1. タイムスタンプ形式 YYYYMMDD_HHMMSS を使用して task_id を生成します
  2. 一時ディレクトリ /tmp/openclaw/sn-image-resume/<task_id>/ を TEMP_DIR として作成します
  3. 正規化した入力を永続化します:
echo "$RESUME_CONTENT" > "$TEMP_DIR/resume-content.txt"
echo "$STYLE" > "$TEMP_DIR/style.txt"
ステップ 1 — 履歴書プロンプトの生成

prompts/resume.md をシステムプロンプトとして使用し、sn-text-optimize を呼び出して、ユーザーの履歴書の内容を詳細な画像生成プロンプトに変換します。

USER_PROMPT=$(cat << EOF
Resume content:
$RESUME_CONTENT

Optional style instruction:
${STYLE:-No explicit style instruction. Infer an appropriate professional visual style from the resume content.}

Task:
Convert the resume content into a complete text-to-image prompt for a tall portfolio-resume image.
Follow the fixed layout, language, content mapping, typography, panel, and style translation rules in the system prompt.
Return only the final image generation prompt. Do not include explanations, markdown fences, or alternative options.
EOF
)

python "$SN_IMAGE_BASE/scripts/sn_agent_runner.py" sn-text-optimize \
  --system-prompt-path "$SKILL_DIR/prompts/resume.md" \
  --user-prompt "$USER_PROMPT" \
  --output-format json

JSON 標準出力を解析し、result を generation_prompt として抽出します。プロセスがゼロ以外の終了コードを返す場合、無効な JSON を返す場合、または result が空の場合は、実際のエラーとともに status=error を返します。

出力を永続化します:

echo "$GENERATION_PROMPT" > "$TEMP_DIR/generation-prompt.txt"
ステップ 2 — 履歴書画像の生成

sn-image-base の sn-image-generate ツールを使用して最終画像を生成します。

python "$SN_IMAGE_BASE/scripts/sn_agent_runner.py" sn-image-generate \
  --prompt "$GENERATION_PROMPT" \
  --image-size "$IMAGE_SIZE" \
  --aspect-ratio "$ASPECT_RATIO" \
  --save-path "$TEMP_DIR/resume.png" \
  --output-format json

JSON 標準出力を解析します。生成に失敗した場合は、実際のエラーとともに status=error を返します。生成された画像のパスは $TEMP_DIR/resume.png です。

エラー処理のルール
  • 必須の履歴書情報が不足している場合は、生成を開始する前に履歴書のテキストをユーザーに求めます
  • sn-text-optimize が失敗した場合、または空の結果を返した場合は、処理を停止して実際のエラーを報告します
  • sn-image-generate が失敗した場合は、処理を停止して実際のエラーを報告します
  • ユーザーの内容が不完全な場合やプロンプト生成に失敗した場合に、一般的な履歴書プロンプトで黙って代用してはいけません
  • ユーザーが提供していない履歴書の事実を創作してはいけません。提供された情報の再構成、要約、視覚的なマッピングのみを行います
戻り値の契約

ワーカーエージェントの完了後、最後のメッセージには以下の JSON 文字列のみを含める必要があります(コードフェンス、前後のテキストなし)。

通常フロー:

{
  "status": "ok",
  "need_main_agent_send": true,
  "output_mode": "friendly|verbose",
  "image": "$TEMP_DIR/resume.png",
  "generation_prompt": "<included only when output_mode=verbose>",
  "timing": {
    "total_elapsed_seconds": 25.12,
    "prompt_generation": { "elapsed_seconds": 5.23, "model": "sensenova-6.8-flash-lite" },
    "image_generation": { "elapsed_seconds": 19.89, "model": "sn_image_model" }
  }
}

エラーフロー:

{
  "status": "error",
  "error": "<Actual error information>"
}

ルール:

  • status=ok には need_main_agent_send: true を含める必要があります
  • output_mode=verbose の場合、generation_prompt を含める必要があります。friendly モードでは省略します
  • timing.prompt_generation.elapsed_seconds と timing.prompt_generation.model は、sn-text-optimize の JSON 出力から取得します
  • timing.image_generation.elapsed_seconds は、sn-image-generate の JSON 出力から取得します
  • sn-image-generate はモデルフィールドを返さないため、timing.image_generation.model は "sn_image_model" に固定します

出力形式

friendly モード(デフォルト)

テキスト要約: 履歴書画像が生成されたことを説明する 1 文(50 語以内)。

画像: 生成された履歴書画像を 1 枚送信します。

verbose モード
Resume image generated
---
Aspect ratio: <aspect_ratio>
Image size: <image_size>
---
Generation prompt:
<generation_prompt>
---
Time statistics: Total <total>s | Prompt generation <t>s | Image generation <t>s
---
Image:
<image path>

呼び出し関係

  • 最下層の依存関係:sn-image-base → sn-text-optimize、sn-image-generate
  • システムプロンプト:prompts/resume.md

参考資料

  • prompts/resume.md - 固定のポートフォリオ用履歴書レイアウトと、言語・コンテンツのマッピングルール
  • ../sn-image-base/SKILL.md - ベースレイヤーの画像/テキストツールの動作
  • ../sn-image-base/references/api_spec.md - CLI パラメーターの詳細

コメント