{"slug":"jimliu-baoyu-image-gen-bd04d2","title":"\u591a\u4f9b\u5e94\u5546AI\u914d\u56fe\u751f\u6210\u4e0e\u6279\u91cf\u51fa\u56fe","description":"\u901a\u8fc7\u7edf\u4e00CLI\u8c03\u7528OpenAI\u3001Azure\u3001Google\u3001OpenRouter\u3001DashScope\u3001Z.AI\u3001MiniMax\u3001\u5373\u68a6\u3001Seedream\u3001Replicate\u3001Agnes\u7b49\u56fe\u50cf\u63a5\u53e3\uff0c\u652f\u6301\u6587\u751f\u56fe\u3001\u53c2\u8003\u56fe\u8eab\u4efd\u4fdd\u6301\u3001\u6bd4\u4f8b\u4e0e\u8d28\u91cf\u9884\u8bbe\u3001\u6279\u91cf\u5e76\u884c\u3002\u9996\u6b21\u4f7f\u7528\u9700\u914d\u7f6eEXTEND.md\u4e0e\u5bf9\u5e94API\u5bc6\u94a5\uff1b\u53c2\u8003\u56fe\u8eab\u4efd\u4fdd\u6301\u7ed9\u51fa\u5177\u4f53\u63d0\u793a\u8bcd\u5199\u6cd5\u3002","category":"\u526a\u8f91\u4e0e\u5305\u88c5","tags":["JimLiu","\u5b9d\u7389","\u526a\u8f91\u4e0e\u5305\u88c5"],"author":"\u5b9d\u7389 \u00b7 JimLiu","source_url":"https://github.com/JimLiu/baoyu-skills/blob/0a27d7d40e79cfe42334e2e9130a1e41a499ca54/skills/baoyu-image-gen/SKILL.md","license":"MIT","status":"published","verification":"source_reviewed","verification_notes":"\u5df2\u6838\u5bf9\u539f\u59cb\u4ed3\u5e93\u3001\u56fa\u5b9a\u63d0\u4ea4\u3001\u8bb8\u53ef\u3001\u6280\u80fd\u6b63\u6587\u4e0e\u5305\u7ed3\u6784\uff0c\u5e76\u8865\u5145\u4e2d\u6587\u6267\u884c\u9a8c\u6536\u8bf4\u660e\uff1b\u672a\u8fd0\u884c\u5305\u5185\u811a\u672c\u3002","revision":"c2c739356c54437c978dd4236ff5486d","created_at":"2026-11-02T14:47:08+00:00","updated_at":"2026-11-02T14:47:08+00:00","source_repo":"JimLiu/baoyu-skills","source_path":"skills/baoyu-image-gen/SKILL.md","source_commit":"0a27d7d40e79cfe42334e2e9130a1e41a499ca54","source_updated_at":"2026-11-02T14:46:04+00:00","stars":0,"proxy_score":null,"score":null,"grade":null,"dimensions":{},"evaluation":{},"installs":0,"platforms":[],"formats":[],"category_slug":"packaging","category_name":"\u526a\u8f91\u4e0e\u5305\u88c5","quality":{"review_type":"text_and_package_review","readiness":"requires_setup","reviewed_at":"2026-11-02T14:46:04+00:00","review_summary":"\u914d\u56fe\u4efb\u52a1\u65b9\u6cd5\u5177\u4f53\u3001\u4f9b\u5e94\u5546\u4e0e\u6279\u91cf\u6d41\u7a0b\u8bf4\u660e\u5145\u5206\uff0c\u4f46\u9700\u7528\u6237\u81ea\u5907API\u5bc6\u94a5\u5e76\u5b8c\u6210EXTEND.md\u914d\u7f6e\uff1b\u811a\u672c\u4e0e\u6a21\u578b\u53ef\u7528\u6027\u672a\u7ecf\u5b9e\u6d4b\uff0c\u4f7f\u7528\u524d\u5e94\u5148\u7528\u5355\u5f20\u4f4e\u98ce\u9669\u4efb\u52a1\u9a8c\u8bc1\u94fe\u8def\u3002","cost_notes":"\u5404\u4f9b\u5e94\u5546\u6309\u8c03\u7528\u8ba1\u8d39\uff0c\u5177\u4f53\u4ef7\u683c\u4e0e\u989d\u5ea6\u9700\u7528\u6237\u81ea\u884c\u5411\u4f9b\u5e94\u5546\u786e\u8ba4\uff1b\u672c\u5ba1\u9605\u4e0d\u63d0\u4f9b\u62a5\u4ef7\uff0c\u4e5f\u672a\u9a8c\u8bc1\u4efb\u4f55\u8d26\u6237\u989d\u5ea6\u3002","source_sha256":"c92cc35968807c179015f5f5751bb060bd6d64624dd4631bcaeb1f3378d33e8e","prerequisites":["bun \u6216 npx \u8fd0\u884c\u73af\u5883","\u81f3\u5c11\u4e00\u4e2a\u56fe\u50cf\u4f9b\u5e94\u5546\u7684API\u5bc6\u94a5\u6216\u5df2\u767b\u5f55\u7684 codex CLI\uff08codex-cli \u4f9b\u5e94\u5546\uff09","\u9996\u6b21\u4f7f\u7528\u9700\u521b\u5efa EXTEND.md \u914d\u7f6e\u6587\u4ef6","\u6279\u91cf\u6a21\u5f0f\u9700\u51c6\u5907 batch.json\uff08\u53ef\u7528 build-batch.ts \u4ece outline.md + prompts/ \u751f\u6210\uff09"],"checks":["\u751f\u6210\u524d\u8f93\u51fa\u4e2d\u660e\u786e\u663e\u793a provider \u4e0e model\uff0c\u4e14\u4e0e EXTEND.md/CLI \u53c2\u6570\u4e00\u81f4","\u8f93\u51fa\u56fe\u7247\u6587\u4ef6\u5b58\u5728\u4e8e\u6307\u5b9a\u8def\u5f84\uff0c\u6570\u91cf\u4e0e --n \u6216 batch \u4efb\u52a1\u6570\u4e00\u81f4","\u6279\u91cf\u62a5\u544a\u5217\u51fa\u6210\u529f\u6570\u3001\u5931\u8d25\u6570\u4e0e\u9010\u9879\u5931\u8d25\u539f\u56e0\uff0c\u4e0d\u9690\u7792\u5931\u8d25","\u4f7f\u7528 --ref \u65f6\u786e\u8ba4\u6240\u9009\u4f9b\u5e94\u5546\u5728\u652f\u6301\u5217\u8868\u5185\uff0c\u5426\u5219\u5e94\u62a5\u9519\u5e76\u7ed9\u51fa\u4fee\u6b63\u63d0\u793a","\u53c2\u8003\u56fe\u8eab\u4efd\u4fdd\u6301\u63d0\u793a\u8bcd\u91c7\u7528\u77ed\u786c\u8eab\u4efd\u8bed\u8a00\uff0c\u800c\u975e\u957f\u5916\u8c8c\u63cf\u8ff0"],"limitations":["\u811a\u672c\u4e0e\u5404\u4f9b\u5e94\u5546\u9002\u914d\u4ee3\u7801\u672a\u5728\u672c\u5ba1\u9605\u4e2d\u8fd0\u884c\uff0c\u5b9e\u9645\u53ef\u7528\u6027\u3001\u6a21\u578bID\u6709\u6548\u6027\u5f85\u6838\u5b9e","\u4e0d\u540c\u4f9b\u5e94\u5546\u5bf9\u53c2\u8003\u56fe\u3001\u6bd4\u4f8b\u3001\u5c3a\u5bf8\u7684\u652f\u6301\u4e0d\u4e00\u81f4\uff0c\u8de8\u4f9b\u5e94\u5546\u7ed3\u679c\u4e0d\u53ef\u76f4\u63a5\u6bd4\u8f83","\u751f\u6210\u8d28\u91cf\u53d7\u6a21\u578b\u4e0e\u63d0\u793a\u8bcd\u5f71\u54cd\uff0c\u4e0d\u4fdd\u8bc1\u98ce\u683c\u7edf\u4e00\u6216\u8eab\u4efd\u5b8c\u5168\u4e00\u81f4","codex-cli \u4f9b\u5e94\u5546\u4f9d\u8d56\u672c\u673a codex \u767b\u5f55\u72b6\u6001\uff0c\u65e0\u6cd5\u5728\u65e0\u767b\u5f55\u73af\u5883\u4f7f\u7528"],"issues":["SKILL.md \u5217\u51fa\u5927\u91cf\u6a21\u578bID\uff08\u5982 gpt-image-2.5-flare\u3001gemini-3-pro-image\uff09\uff0c\u5176\u771f\u5b9e\u53ef\u7528\u6027\u672a\u6838\u5b9e\uff0c\u9700\u4ee5\u4f9b\u5e94\u5546\u6587\u6863\u4e3a\u51c6","Step 0 \u5f3a\u5236\u8981\u6c42 EXTEND.md \u5b58\u5728\u624d\u53ef\u751f\u6210\uff0c\u9996\u6b21\u4f7f\u7528\u95e8\u69db\u8f83\u9ad8\uff0c\u9700\u786e\u8ba4\u9996\u6b21\u914d\u7f6e\u6d41\u7a0b\u53ef\u987a\u5229\u5b8c\u6210","\u73af\u5883\u53d8\u91cf\u4e0e\u5bc6\u94a5\u8f83\u591a\uff0c\u6587\u6863\u672a\u96c6\u4e2d\u8bf4\u660e\u6700\u5c0f\u53ef\u7528\u914d\u7f6e\u7ec4\u5408"],"missing_files":[]},"quality_url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/SHILIU-QUALITY.md","usage_guide":{"task":"\u4e3a\u6587\u7ae0\u6216\u9879\u76ee\u751f\u6210\u914d\u56fe\uff0c\u5305\u62ec\u5355\u5f20\u6587\u751f\u56fe\u3001\u57fa\u4e8e\u53c2\u8003\u56fe\u4fdd\u6301\u4eba\u7269/\u7269\u4f53\u8eab\u4efd\u7684\u51fa\u56fe\uff0c\u4ee5\u53ca\u4ece\u5df2\u4fdd\u5b58\u63d0\u793a\u8bcd\u6587\u4ef6\u6279\u91cf\u5e76\u884c\u751f\u6210\u591a\u5f20\u56fe\u3002","inputs":"\u63d0\u793a\u8bcd\u6587\u672c\u6216\u63d0\u793a\u8bcd\u6587\u4ef6\uff1b\u8f93\u51fa\u56fe\u7247\u8def\u5f84\uff1b\u6240\u9009\u4f9b\u5e94\u5546\u4e0e\u6a21\u578b\uff1b\u53ef\u9009\u53c2\u8003\u56fe\uff082-4\u5f20\u7cbe\u9009\uff09\uff1b\u6bd4\u4f8b\u4e0e\u8d28\u91cf\u9884\u8bbe\uff1b\u9996\u6b21\u4f7f\u7528\u9700\u521b\u5efaEXTEND.md\u5e76\u914d\u7f6e\u5bf9\u5e94\u73af\u5883\u53d8\u91cf\u5bc6\u94a5\uff1bbun\u6216npx\u8fd0\u884c\u73af\u5883\u3002","outputs":"\u6307\u5b9a\u8def\u5f84\u7684\u56fe\u7247\u6587\u4ef6\uff1b\u6279\u91cf\u6a21\u5f0f\u4e0b\u8f93\u51fa\u6210\u529f\u6570\u3001\u5931\u8d25\u6570\u4e0e\u6bcf\u5f20\u5931\u8d25\u539f\u56e0\uff1bJSON\u6a21\u5f0f\u8f93\u51fa\u7ed3\u6784\u5316\u7ed3\u679c\uff1b\u751f\u6210\u524d\u663e\u793a\u6240\u7528provider/model\u53ca\u5207\u6362\u65b9\u5f0f\u3002","example_input":"\u7528 baoyu-image-gen \u7ed9\u8fd9\u7bc7\u8bb2\u57ce\u5e02\u591c\u8dd1\u7684\u6587\u7ae0\u914d3\u5f20\u56fe\uff1a16:9\u30012k\u8d28\u91cf\uff0c\u98ce\u683c\u7edf\u4e00\u4e3a\u7eaa\u5b9e\u6444\u5f71\uff0c\u63d0\u793a\u8bcd\u6211\u653e\u5728 prompts/ \u76ee\u5f55\uff0c\u6279\u91cf\u751f\u6210\u5230 attachments/\u3002","example_output":"\u793a\u610f\uff1a\u5148\u786e\u8ba4EXTEND.md\u4e0eprovider/model\uff0c\u9010\u6761\u663e\u793a\u201cUsing google / gemini-3-pro-image\u201d\uff1b\u751f\u6210 attachments/01.png \u7b493\u4e2a\u6587\u4ef6\uff1b\u6279\u91cf\u62a5\u544a\u5199\u201c\u6210\u529f3\uff0c\u5931\u8d250\u201d\uff0c\u6216\u5217\u51fa\u5931\u8d25\u9879\u4e0e\u539f\u56e0\u3002\u56fe\u7247\u5185\u5bb9\u4e0e\u6570\u91cf\u4e3a\u793a\u610f\uff0c\u975e\u771f\u5b9e\u751f\u6210\u7ed3\u679c\u3002"},"read_url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2","skill_url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/SKILL.md","download_url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/download","install_url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/install","files":[{"path":"LICENSE","bytes":1064,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/LICENSE"},{"path":"SHILIU-QUALITY.md","bytes":2215,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/SHILIU-QUALITY.md"},{"path":"SKILL.md","bytes":16622,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/SKILL.md"},{"path":"references/codex-image2-fallback.md","bytes":1680,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/codex-image2-fallback.md"},{"path":"references/codex-oauth-vs-openai-api-key.md","bytes":1433,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/codex-oauth-vs-openai-api-key.md"},{"path":"references/config/first-time-setup.md","bytes":9012,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/config/first-time-setup.md"},{"path":"references/config/preferences-schema.md","bytes":2579,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/config/preferences-schema.md"},{"path":"references/providers/agnes.md","bytes":1991,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/providers/agnes.md"},{"path":"references/providers/codex-cli.md","bytes":5152,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/providers/codex-cli.md"},{"path":"references/providers/dashscope.md","bytes":4309,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/providers/dashscope.md"},{"path":"references/providers/minimax.md","bytes":1115,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/providers/minimax.md"},{"path":"references/providers/openrouter.md","bytes":707,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/providers/openrouter.md"},{"path":"references/providers/replicate.md","bytes":1476,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/providers/replicate.md"},{"path":"references/providers/zai.md","bytes":953,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/providers/zai.md"},{"path":"references/usage-examples.md","bytes":4994,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/references/usage-examples.md"},{"path":"scripts/build-batch.test.ts","bytes":4575,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/build-batch.test.ts"},{"path":"scripts/build-batch.ts","bytes":7593,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/build-batch.ts"},{"path":"scripts/codex-imagegen/cache.ts","bytes":2300,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/codex-imagegen/cache.ts"},{"path":"scripts/codex-imagegen/logger.ts","bytes":1356,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/codex-imagegen/logger.ts"},{"path":"scripts/codex-imagegen/main.ts","bytes":12193,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/codex-imagegen/main.ts"},{"path":"scripts/codex-imagegen/parser.ts","bytes":2072,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/codex-imagegen/parser.ts"},{"path":"scripts/codex-imagegen/spawn.ts","bytes":6659,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/codex-imagegen/spawn.ts"},{"path":"scripts/codex-imagegen/types.ts","bytes":1632,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/codex-imagegen/types.ts"},{"path":"scripts/codex-imagegen/validator.ts","bytes":2353,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/codex-imagegen/validator.ts"},{"path":"scripts/main.test.ts","bytes":18799,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/main.test.ts"},{"path":"scripts/main.ts","bytes":46560,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/main.ts"},{"path":"scripts/providers/agnes.test.ts","bytes":6810,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/agnes.test.ts"},{"path":"scripts/providers/agnes.ts","bytes":5002,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/agnes.ts"},{"path":"scripts/providers/azure.test.ts","bytes":5425,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/azure.test.ts"},{"path":"scripts/providers/azure.ts","bytes":5828,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/azure.ts"},{"path":"scripts/providers/codex-cli.test.ts","bytes":1674,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/codex-cli.test.ts"},{"path":"scripts/providers/codex-cli.ts","bytes":5892,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/codex-cli.ts"},{"path":"scripts/providers/dashscope.test.ts","bytes":11671,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/dashscope.test.ts"},{"path":"scripts/providers/dashscope.ts","bytes":18543,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/dashscope.ts"},{"path":"scripts/providers/google.test.ts","bytes":4212,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/google.test.ts"},{"path":"scripts/providers/google.ts","bytes":10754,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/google.ts"},{"path":"scripts/providers/jimeng.test.ts","bytes":2737,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/jimeng.test.ts"},{"path":"scripts/providers/jimeng.ts","bytes":12845,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/jimeng.ts"},{"path":"scripts/providers/minimax.test.ts","bytes":5254,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/minimax.test.ts"},{"path":"scripts/providers/minimax.ts","bytes":6331,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/minimax.ts"},{"path":"scripts/providers/openai.test.ts","bytes":6179,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/openai.test.ts"},{"path":"scripts/providers/openai.ts","bytes":12687,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/openai.ts"},{"path":"scripts/providers/openrouter.test.ts","bytes":5450,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/openrouter.test.ts"},{"path":"scripts/providers/openrouter.ts","bytes":9957,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/openrouter.ts"},{"path":"scripts/providers/replicate.test.ts","bytes":7190,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/replicate.test.ts"},{"path":"scripts/providers/replicate.ts","bytes":17822,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/replicate.ts"},{"path":"scripts/providers/seedream.test.ts","bytes":6544,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/seedream.test.ts"},{"path":"scripts/providers/seedream.ts","bytes":9855,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/seedream.ts"},{"path":"scripts/providers/zai.test.ts","bytes":5274,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/zai.test.ts"},{"path":"scripts/providers/zai.ts","bytes":8950,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/providers/zai.ts"},{"path":"scripts/types.ts","bytes":2337,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/scripts/types.ts"},{"path":"shiliu-quality.json","bytes":2119,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/shiliu-quality.json"},{"path":"shiliu-source.json","bytes":271,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/shiliu-source.json"},{"path":"usage.json","bytes":1126,"url":"https://shiliuai.cn/api/v2/skills/jimliu-baoyu-image-gen-bd04d2/files/usage.json"}],"content":"---\nname: baoyu-image-gen\ndescription: AI image generation with OpenAI GPT Image 2.5, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs. Supports text-to-image, reference images, aspect ratios, and batch generation from saved prompt files. Sequential by default; use batch parallel generation when the user already has multiple prompts or wants stable multi-image throughput. Use when user asks to generate, create, or draw images.\nversion: 2.2.0\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-image-gen\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Image Generation (AI SDK)\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime \u2014 e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples \u2014 substitute the local equivalent in other runtimes.\n\n## Script Directory\n\n`{baseDir}` = this SKILL.md's directory; `scripts/...` paths are relative to it. Main script: `{baseDir}/scripts/main.ts`. Batch payload helper: `{baseDir}/scripts/build-batch.ts`. Resolve `${BUN_X}`: prefer `bun`; else `npx -y bun`; else suggest `brew install oven-sh/bun/bun`.\n\n## Step 0: Load Preferences (blocking)\n\nNo image generation until EXTEND.md exists. Check in order; first hit wins:\n\n| Path | Scope |\n|------|-------|\n| `.baoyu-skills/baoyu-image-gen/EXTEND.md` | Project |\n| `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-image-gen/EXTEND.md` | XDG |\n| `$HOME/.baoyu-skills/baoyu-image-gen/EXTEND.md` | User home |\n\n- **Found** \u2192 load and apply. If `default_model.[provider]` is null \u2192 ask model only.\n- **Not found** \u2192 run first-time setup (`references/config/first-time-setup.md`) via AskUserQuestion to collect provider + model + quality + save location. Save EXTEND.md, then continue.\n\nLegacy: if `.baoyu-skills/baoyu-imagine/EXTEND.md` exists and the new path doesn't, the runtime renames it to `baoyu-image-gen`. If both exist, the runtime leaves them alone and uses the new path.\n\n**EXTEND.md keys**: default provider, quality, aspect ratio, image size, OpenAI image API dialect, default models, batch worker cap, provider-specific batch limits. Schema: `references/config/preferences-schema.md`.\n\n## Usage\n\nMore examples (per provider, batch file format): `references/usage-examples.md`.\n\n```bash\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image cat.png\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A landscape\" --image out.png --ar 16:9 --quality 2k\n${BUN_X} {baseDir}/scripts/main.ts --promptfiles system.md content.md --image out.png\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"Make blue\" --image out.png --ref source.png\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image out.png --provider dashscope --model qwen-image-2.0-pro\n${BUN_X} {baseDir}/scripts/main.ts --prompt \"A cat\" --image out.png --provider codex-cli --ar 16:9   # Codex login, no OPENAI_API_KEY; needs `codex` on PATH\n\n# Batch; build the payload from outline.md + prompts/ (e.g. baoyu-article-illustrator output)\n${BUN_X} {baseDir}/scripts/build-batch.ts --outline outline.md --prompts prompts --output batch.json --images-dir attachments\n${BUN_X} {baseDir}/scripts/main.ts --batchfile batch.json --jobs 4\n```\n\n## Reference-Image Identity Preservation\n\nWhen a real person/character/object must be preserved from reference images:\n\n- Use short, hard identity language instead of a long generic description: \"Use the person/object in the reference image(s) as the same identity. Do not redesign it or create a similar-looking new subject. Only change scene, clothing, pose, lighting, rendering style, and composition. Keep the face/proportions/hair/key accessories/overall identity from the references.\" With multiple refs, say they are the same subject and jointly define identity.\n- Long feature descriptions (\"young East Asian woman, oval face, clear eyes...\") make the model synthesize a new matching person instead.\n- Prefer 2\u20134 curated existing source refs; many or multi-megabyte refs can destabilize streaming providers.\n- Don't use newly generated outputs as refs unless the user asks (drift compounds).\n- Too polished/influencer-like \u2192 reduce stylized refs, add anti-beautification constraints (no face slimming, eye enlargement, heavy makeup, commercial travel shoot, over-smoothing).\n- Younger/older look \u2192 keep the face; express age via clothing, posture, scene, styling. Never ask to change facial identity.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--prompt <text>`, `-p` | Prompt text |\n| `--promptfiles <files...>` | Read prompt from files (concatenated) |\n| `--image <path>` | Output image path (required in single-image mode) |\n| `--batchfile <path>` | JSON batch file for multi-image generation |\n| `--jobs <count>` | Worker count for batch mode (default: auto, max from config, built-in default 10) |\n| `--provider google\\|openai\\|azure\\|openrouter\\|dashscope\\|zai\\|minimax\\|jimeng\\|seedream\\|replicate\\|codex-cli\\|agnes` | Force provider (default: auto-detect; `codex-cli` is never auto-selected \u2014 must be pinned via CLI or EXTEND.md) |\n| `--model <id>`, `-m` | Model ID \u2014 see provider references for defaults and allowed values |\n| `--ar <ratio>` | Aspect ratio (`16:9`, `1:1`, `4:3`, \u2026) |\n| `--size <WxH>` | Explicit size (e.g., `1024x1024`; for `gpt-image-2.5-*` and `gpt-image-2`, width/height must be multiples of 16, max edge 3840px, ratio no wider than 3:1) |\n| `--quality normal\\|2k` | Quality preset (default: `2k`) |\n| `--imageSize 1K\\|2K\\|4K` | Image size for Google/OpenRouter (default: from quality) |\n| `--imageApiDialect openai-native\\|ratio-metadata` | OpenAI-compatible endpoint dialect \u2014 use `ratio-metadata` for gateways that expect aspect-ratio `size` plus `metadata.resolution` |\n| `--ref <files...>` | Reference images. Supported by Google multimodal, OpenAI GPT Image edits, Azure OpenAI edits (PNG/JPG only), OpenRouter multimodal models, Replicate supported families, MiniMax subject-reference, Seedream 5.0/4.5/4.0, DashScope `wan2.7-image-pro`/`wan2.7-image`. Not supported by Jimeng, Seedream 3.0, SeedEdit 3.0, or any DashScope model outside the `wan2.7-image*` family |\n| `--n <count>` | Number of images. Replicate requires `--n 1` (single-output save semantics) |\n| `--json` | JSON output |\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `OPENAI_API_KEY` | OpenAI API key |\n| `AZURE_OPENAI_API_KEY` | Azure OpenAI API key |\n| `OPENROUTER_API_KEY` | OpenRouter API key |\n| `GOOGLE_API_KEY` | Google API key |\n| `DASHSCOPE_API_KEY` | DashScope API key |\n| `ZAI_API_KEY` (alias `BIGMODEL_API_KEY`) | Z.AI API key |\n| `MINIMAX_API_KEY` | MiniMax API key |\n| `REPLICATE_API_TOKEN` | Replicate API token |\n| `JIMENG_ACCESS_KEY_ID`, `JIMENG_SECRET_ACCESS_KEY` | Jimeng (\u5373\u68a6) Volcengine credentials |\n| `ARK_API_KEY` | Seedream (\u8c46\u5305) Volcengine ARK API key |\n| `<PROVIDER>_IMAGE_MODEL` | Per-provider model override (`OPENAI_IMAGE_MODEL`, `GOOGLE_IMAGE_MODEL`, `DASHSCOPE_IMAGE_MODEL`, `ZAI_IMAGE_MODEL`/`BIGMODEL_IMAGE_MODEL`, `MINIMAX_IMAGE_MODEL`, `OPENROUTER_IMAGE_MODEL`, `REPLICATE_IMAGE_MODEL`, `JIMENG_IMAGE_MODEL`, `SEEDREAM_IMAGE_MODEL`, `AGNES_IMAGE_MODEL`) |\n| `AZURE_OPENAI_DEPLOYMENT` (alias `AZURE_OPENAI_IMAGE_MODEL`) | Azure default deployment |\n| `<PROVIDER>_BASE_URL` | Per-provider endpoint override |\n| `AZURE_API_VERSION` | Azure image API version (default `2025-04-01-preview`) |\n| `JIMENG_REGION` | Jimeng region (default `cn-north-1`) |\n| `OPENAI_IMAGE_API_DIALECT` | `openai-native` \\| `ratio-metadata` |\n| `OPENROUTER_HTTP_REFERER`, `OPENROUTER_TITLE` | Optional OpenRouter attribution |\n| `BAOYU_IMAGE_GEN_MAX_WORKERS` | Override batch worker cap |\n| `BAOYU_IMAGE_GEN_<PROVIDER>_CONCURRENCY` | Per-provider concurrency (e.g., `BAOYU_IMAGE_GEN_REPLICATE_CONCURRENCY`; for codex-cli use `BAOYU_IMAGE_GEN_CODEX_CLI_CONCURRENCY`) |\n| `BAOYU_IMAGE_GEN_<PROVIDER>_START_INTERVAL_MS` | Per-provider start-gap |\n| `BAOYU_CODEX_IMAGEGEN_BIN` | Override the codex-imagegen wrapper path for the `codex-cli` provider (default: bundled `scripts/codex-imagegen/main.ts`; accepts `.ts` or legacy `.sh`/binary) |\n| `BAOYU_CODEX_IMAGEGEN_CACHE_DIR` | Enable idempotency cache for the `codex-cli` provider (off by default) |\n| `BAOYU_CODEX_IMAGEGEN_TIMEOUT_MS` | Per-attempt `codex exec` timeout for the `codex-cli` provider (default: 300000 ms) |\n| `BAOYU_CODEX_IMAGEGEN_RETRIES` | Wrapper-side retry attempts on retryable errors for the `codex-cli` provider (default: 2) |\n| `BAOYU_CODEX_IMAGEGEN_LOG_FILE` | Append JSONL diagnostic log for the `codex-cli` provider |\n\n**Load priority**: CLI args > EXTEND.md > env vars > `<cwd>/.baoyu-skills/.env` > `~/.baoyu-skills/.env`\n\n## Codex/ChatGPT OAuth Is Not an OpenAI API Key\n\n`--provider openai` calls the standard OpenAI Images API (`/v1/images/generations`, `/v1/images/edits`) and requires `OPENAI_API_KEY`. A Codex/ChatGPT login is a different entitlement: never paste a Codex OAuth token into `OPENAI_API_KEY` or just point `OPENAI_BASE_URL` at a Codex backend. Do not modify the `openai` provider to silently consume Codex OAuth.\n\nTo use a Codex subscription without an API key:\n\n- Codex runtime: native `imagegen` skill/tool.\n- Non-Codex runtime with `codex` CLI installed and logged in: `--provider codex-cli` (preferred; same retry/cache/batch flow). It spawns the bundled `scripts/codex-imagegen/main.ts` (upstream: `packages/baoyu-codex-imagegen/src/main.ts`).\n- Hermes runtime with native `image_generate`: use as fallback; state whether refs were passed directly or reconstructed from extracted traits.\n\n**Fallback**: if `--provider openai` fails only because `OPENAI_API_KEY` is missing and one of the backends above is available, use it rather than leaving the user waiting, and say whether it was true reference-image generation or a text reconstruction from visual traits. Details: `references/codex-oauth-vs-openai-api-key.md`, `references/codex-image2-fallback.md`.\n\n## Model Resolution\n\nPriority for every provider: CLI `--model <id>` > EXTEND.md `default_model.[provider]` > env `<PROVIDER>_IMAGE_MODEL` > built-in default.\n\n- **OpenAI**: default `gpt-image-2.5-flare` (fastest). `gpt-image-2.5-sunburst` is most capable for complex scenes and precise edits; `gpt-image-2`, `gpt-image-1.5`, `gpt-image-1` and dated snapshots (e.g. `gpt-image-2.5-flare-2026-09-08`, `gpt-image-2-2026-04-21`) stay selectable.\n- **Google**: default `gemini-3-pro-image`. `gemini-3.1-flash-image` is faster/cheaper; `gemini-3.1-flash-lite-image` is cheapest and 1K-only (`--quality 2k` / `--imageSize 2K|4K` clamp to 1K with a warning).\n- **DashScope**: default `qwen-image-2.0-pro`; `qwen-image-3.0-pro` is the newest flagship with the same sizing rules.\n- **Azure**: `--model` / `default_model.azure` is the deployment name (`AZURE_OPENAI_DEPLOYMENT`, alias `AZURE_OPENAI_IMAGE_MODEL`). Use `gpt-image-2.5-flare` if the deployment is named after the model, else the exact custom name.\n\nBefore each generation, display:\n\n- `Using [provider] / [model]`\n- `Switch model: --model <id> | EXTEND.md default_model.[provider] | env <PROVIDER>_IMAGE_MODEL`\n\n## OpenAI-Compatible Gateway Dialects\n\n`provider=openai` only means OpenAI-compatible auth/routing, not native image semantics. Set `default_image_api_dialect` (EXTEND.md), `OPENAI_IMAGE_API_DIALECT`, or `--imageApiDialect`:\n\n- `openai-native`: pixel `size` (`1536x1024`) and native quality fields \u2014 OpenAI and strict clones\n- `ratio-metadata`: aspect-ratio `size` (`16:9`) + `metadata.resolution` (`1K|2K|4K`) + `metadata.orientation` \u2014 gateways fronting Gemini or similar. Text-to-image only; reference edits need `openai-native` or a provider with first-class edit support.\n\n## Provider-Specific Guides\n\nRead when the user picks that provider or asks for non-default behavior:\n\n| Provider | Reference |\n|----------|-----------|\n| DashScope (Qwen-Image families, custom sizes) | `references/providers/dashscope.md` |\n| Z.AI (GLM-Image, cogview-4) | `references/providers/zai.md` |\n| MiniMax (image-01, subject-reference) | `references/providers/minimax.md` |\n| OpenRouter (multimodal models, `/chat/completions` flow) | `references/providers/openrouter.md` |\n| Replicate (nano-banana, Seedream, Wan) | `references/providers/replicate.md` |\n| Codex CLI (wraps bundled `scripts/codex-imagegen/`; Codex login, no `OPENAI_API_KEY`) | `references/providers/codex-cli.md` |\n| Agnes (agnes-image-2.5-flash, reference-image support) | `references/providers/agnes.md` |\n\n## Provider Selection\n\n1. `--ref` provided + no `--provider` \u2192 auto-select Google \u2192 OpenAI \u2192 Azure \u2192 OpenRouter \u2192 Replicate \u2192 Seedream \u2192 MiniMax \u2192 Agnes (MiniMax subject reference is specialized for character/portrait consistency)\n2. `--provider` specified \u2192 use it (with `--ref`, must be google/openai/azure/openrouter/replicate/seedream/minimax/codex-cli/agnes)\n3. Only one API key present \u2192 that provider\n4. Multiple keys \u2192 Google \u2192 OpenAI \u2192 Azure \u2192 OpenRouter \u2192 DashScope \u2192 Z.AI \u2192 MiniMax \u2192 Replicate \u2192 Jimeng \u2192 Seedream \u2192 Agnes\n5. `codex-cli` is **never auto-selected** \u2014 pin via `default_provider: codex-cli` or `--provider codex-cli`. Runs `codex exec` through the bundled `scripts/codex-imagegen/main.ts` (with `bun`) on the user's Codex subscription; requires `codex` on `PATH` with an active `codex login`.\n\n## Quality Presets\n\n| Preset | Google imageSize | OpenAI size | OpenRouter size | Replicate resolution | Use case |\n|--------|------------------|-------------|-----------------|----------------------|----------|\n| `normal` | 1K | 1024px target | 1K | 1K | Quick previews |\n| `2k` (default) | 2K | 2048px target | 2K | 2K | Covers, illustrations, infographics |\n\nGoogle/OpenRouter `imageSize` can be overridden with `--imageSize 1K|2K|4K`.\n\nOpenAI native `gpt-image-2.5-*` / `gpt-image-2`: `normal` \u2192 `quality=medium` + low-latency valid size near the ratio; `2k` \u2192 `quality=high` + 2048px-class sizes (`2048x2048`, `2048x1152`, `1152x2048`). Use explicit `--size` for custom or 4K (e.g. `3840x2160`).\n\n## Aspect Ratios\n\nSupported: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `2.35:1`.\n\n- Google multimodal: `imageConfig.aspectRatio`\n- OpenAI: `gpt-image-2.5-*` / `gpt-image-2` use the closest valid custom size; older GPT Image and DALL\u00b7E use the closest fixed size\n- OpenRouter: `imageGenerationOptions.aspect_ratio`; with only `--size <WxH>`, the ratio is inferred\n- Replicate: model-specific \u2014 `google/nano-banana*` uses `aspect_ratio`, `bytedance/seedream-*` uses documented Replicate ratios, Wan 2.7 maps `--ar` to a concrete `size`\n- MiniMax: official `aspect_ratio` values; `--size <WxH>` without `--ar` sends `width`/`height` for `image-01`\n\n## Generation Mode\n\n**Default**: sequential. **Batch parallel**: automatic when `--batchfile` has 2+ pending tasks.\n\n| Situation | Prefer |\n|-----------|--------|\n| One image, or 1-2 simple images | Sequential |\n| Multiple images with saved prompt files | Batch (`--batchfile`) \u2014 shared throttling/retries |\n| Each image still needs its own reasoning / prompt writing / style exploration | Subagents |\n| Input is `outline.md` + `prompts/` (e.g. from `baoyu-article-illustrator`) | Batch, payload built with `{baseDir}/scripts/build-batch.ts` |\n\nOnce prompt files are saved and the task is \"generate all of these\", prefer batch over subagents.\n\n**Parallel behavior**: worker count auto, capped by config (built-in default 10), override with `--jobs <count>`; provider-specific throttling applies only in batch mode; each image retries up to 3 attempts; final output reports success count, failure count, and per-image failure reasons.\n\n## Error Handling\n\n- Missing API key \u2192 error with setup instructions (for OpenAI see the Codex fallback above)\n- Generation failure \u2192 auto-retry up to 3 attempts per image\n- Invalid aspect ratio \u2192 warning, proceed with default\n- Reference images with unsupported provider/model \u2192 error with fix hint\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See Step 0 for paths and schema.\n","usage":"\u8bfb\u53d6 SKILL.md\uff0c\u5e76\u6309\u9700\u8bfb\u53d6\u914d\u5957\u6587\u4ef6\uff1b\u4e0b\u8f7d ZIP \u83b7\u53d6\u5b8c\u6574\u5305\u3002\u6280\u80fd\u662f\u4efb\u52a1\u65b9\u6cd5\uff0c\u4e0d\u6388\u4e88\u65b0\u589e\u8d26\u6237\u3001\u4ed8\u8d39\u6216\u7cfb\u7edf\u6743\u9650\u3002"}
