sn-image-resume について
sn-image-resume は、ポートフォリオ風の履歴書を作成する人向けに、履歴書テキストを縦長のデザイン画像に変換します。sn-text-optimize で画像プロンプトを作成し、sn-image-generate で画像を生成します。スタイルやアスペクト比も指定できます。
主な機能
- 01会話から履歴書テキストを受け取る
- 02任意のビジュアルスタイルを指定
- 03テキストを画像プロンプトに変換
- 04デザイン履歴書画像の生成
- 05アスペクト比と画像サイズの設定
活用シーン
- 01ポートフォリオ風履歴書画像の作成
- 02履歴書テキストのビジュアルページ化
- 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_content | string | 必須 | 会話内でユーザーが提供する履歴書のテキストです。氏名、プロフィール、学歴、職歴、スキル、プロジェクト、連絡先などを含みます。 |
style | string | 任意 | ユーザーが指定するビジュアルスタイル、トーン、カラーパレット、職業に合った美的表現、または参考にしたい雰囲気です。resume_content に含めることもできます。 |
aspect_ratio | string | 9:16 | 出力のアスペクト比です。指定できる値は 2:3、3:2、3:4、4:3、4:5、5:4、1:1、16:9、9:16、21:9 です。テンプレートは縦に長いポートフォリオ履歴書ページのため、デフォルトは 9:16(縦向き)です。 |
image_size | string | 2k | 画像サイズのプリセットです。1k または 2k を指定します。 |
output_mode | string | friendly | 出力モードです。friendly または verbose を指定します。 |
API 設定
このスキルのすべての API 呼び出しは、デフォルト値(CLI > 環境変数 > 組み込みのデフォルト値)の認証パラメーターを使用して、sn-image-base スキルの sn_agent_runner.py を通じて実行されるため、通常の使用時に明示的に渡す必要はありません。
| 呼び出しタイプ | ツール | 認証パラメーター | 説明 |
|---|---|---|---|
| LLM | sn-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を通じて直接実行されます
ワークフロー
メインエージェントのワークフロー
- ユーザーのリクエストから
resume_content、省略可能なstyle、aspect_ratio(デフォルトは9:16)、image_size(デフォルトは2k)、output_mode(デフォルトはfriendly)を抽出します resume_contentが空ではなく、意味のあるページを生成するのに十分な履歴書情報が含まれていることを検証します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を使用します- 定型の事前確認メッセージを送信します:「履歴書画像の生成に sn-image-resume スキルを使用しています。しばらくお待ちください……」
- 完全なパラメーターと作業ディレクトリを渡して、ワーカーエージェントを起動します
- ワーカーエージェントから結果が返されたら:
status=ok:簡潔な要約と生成された画像を送信しますstatus=error:実際のerrorフィールドの内容をユーザーに報告します
ワーカーエージェントのワークフロー
ワーカーエージェントは、resume_content、style、aspect_ratio、image_size、output_mode、およびこのスキルの作業ディレクトリ(SKILL_DIR)を受け取ります。
ステップ 0 — 初期化
- タイムスタンプ形式
YYYYMMDD_HHMMSSを使用してtask_idを生成します - 一時ディレクトリ
/tmp/openclaw/sn-image-resume/<task_id>/をTEMP_DIRとして作成します - 正規化した入力を永続化します:
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 パラメーターの詳細