Not in the top 1,000 by GitHub stars
wzj177/ecommerce-image-suite
面向电商商品图生产场景的图片套图 Skill。仓库提供一套从商品图分析、卖点提炼、Prompt 组织到成图输出的脚本与配置,适合用在淘宝、京东、拼多多、抖音等国内平台,以及独立站、Amazon 等跨境场景。
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2d508bd990df → 2d508bd990df
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 2d508bd990df
No earlier version was observed for comparison.
Heat
5.1- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
ecommerce-image-suite
When your agent uses it
电商套图生成助手。用户明确提出需要生成电商套图、商品主图、卖点图、场景图、模特图等图片内容时触发。 支持国内平台(淘宝、京东、拼多多、抖音)与国际跨境平台(Amazon、独立站)的尺寸规范。 触发示例:「帮我生成这件T恤的电商套图」「做一套淘宝主图」「生成亚马逊listing图片」。 不应在用户仅上传图片但未明确提出图片生成需求时触发。
What it loads into context
Frontmatter
252 tokensAlways available to the agent
SKILL.md
20,288 tokensWhen the skill is activated
Reference documents
36,064 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 概览
- ⛔ 前置检查:API Key 验证(必须最先执行)
- 触发入口:判断是否已上传图片
- 第一步:收集输入信息
- 第二步:AI 分析与卖点生成
- 第三步:选择平台与套图配置
- 第四步:准备生图参数(动态填充商品信息)
- 第四步半:模特图判断与模特选择(条件步骤)
- 第四步半 B:视觉风格模板智能推荐
- 第五步:多供应商图像生成
- CLI 执行流程(Agent 调用)
- 第六步:平台文案生成(可选)
- 第七步:详情页 HTML 生成(可选)
- 第八步:产品展示视频生成(可选)
- 执行检查清单
- 参考文件索引
- API Key 配置
Scripts executed separately
scripts/analyze.pyscripts/check_providers.pyscripts/generate.pyscripts/generate_video.py
Files
.gitignoreasset38 bytesBUSINESS.mddoc1,527 bytesEXAMPLES.mddoc10,307 bytesLICENSEasset11,357 bytesREADME.mddoc5,961 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesSKILL.mdcore69,725 bytesassets/models.jsonasset17,751 bytesassets/models/00.pngasset202,631 bytesassets/models/01.pngasset234,991 bytesassets/models/02.pngasset215,576 bytesassets/models/03.pngasset213,262 bytesassets/models/04.pngasset217,979 bytesassets/models/05.pngasset194,087 bytesassets/models/06.pngasset178,774 bytesassets/models/07.pngasset194,894 bytesassets/models/08.pngasset178,699 bytesassets/models/09.pngasset191,462 bytesassets/models/10.pngasset183,429 bytesassets/models/11.pngasset204,356 bytesassets/models/12.pngasset214,107 bytesassets/models/13.pngasset146,872 bytesassets/models/14.pngasset190,222 bytesassets/models/15.pngasset129,147 bytesassets/models/16.pngasset144,491 bytesassets/models/17.pngasset211,012 bytesassets/models/18.pngasset205,011 bytesassets/models/19.pngasset343,443 bytesassets/models/20.pngasset326,262 bytesassets/models/21.pngasset114,312 bytesassets/models/22.pngasset223,910 bytesassets/models/23.pngasset136,694 bytesassets/models/24.pngasset204,127 bytesassets/models/25.pngasset292,064 bytesassets/models/26.pngasset101,742 bytesassets/models/27.pngasset131,422 bytesassets/models/28.pngasset88,353 bytesassets/models/29.pngasset208,364 bytesassets/models/30.pngasset162,032 bytesassets/models/31.pngasset174,765 bytesassets/models/32.pngasset190,868 bytesassets/models/33.pngasset205,321 bytesassets/models/34.pngasset243,116 bytesassets/models/35.pngasset263,474 bytesassets/models/36.pngasset219,314 bytesassets/models/37.pngasset101,928 bytesassets/models/38.pngasset178,346 bytesassets/models/39.pngasset92,094 bytesassets/models/40.pngasset92,679 bytesassets/models/41.pngasset117,439 bytesassets/models/42.pngasset177,158 bytesassets/models/43.pngasset178,013 bytesassets/models/44.pngasset215,373 bytesassets/models/models.jsonasset17,751 bytesexample/agent客户端测试/001.pngasset394,548 bytesexample/agent客户端测试/002.pngasset293,314 bytesexample/agent客户端测试/003.pngasset306,027 bytesexample/agent客户端测试/004.pngasset297,098 bytesexample/agent客户端测试/005.pngasset200,474 bytesexample/agent客户端测试/006.pngasset243,931 bytesexample/agent客户端测试/007.pngasset256,501 bytesexample/agent客户端测试/008.pngasset394,747 bytesexample/agent客户端测试/009.pngasset374,704 bytesexample/agent客户端测试/010.pngasset117,166 bytesexample/agent客户端测试/011.pngasset297,017 bytesexample/agent客户端测试/012.pngasset1,028,804 bytesexample/agent客户端测试/013.pngasset1,028,357 bytesexample/agent客户端测试/014.pngasset664,532 bytesexample/agent客户端测试/015.jpgasset2,394,203 bytesexample/agent客户端测试/016.pngasset898,399 bytesexample/agent客户端测试/017.pngasset545,149 bytesexample/agent客户端测试/018.pngasset1,117,843 bytesexample/商业项目-视频智能文搜/001.pngasset2,483,540 bytesexample/商业项目-视频智能文搜/002.pngasset606,581 bytesexample/商业项目-视频智能文搜/003.jpgasset119,194 bytesexample/女装/002/product.jsonasset1,909 bytesexample/女装/002/三角度拼图.jpgasset4,798,132 bytesexample/女装/002/侧面.jpgasset4,966,907 bytesexample/女装/002/卖点图.jpgasset5,983,125 bytesexample/女装/002/场景展示图.jpgasset6,180,814 bytesexample/女装/002/多场景拼图.jpgasset6,294,130 bytesexample/女装/002/服装原图.jpgasset65,040 bytesexample/女装/002/材质图.jpgasset5,559,884 bytesexample/女装/002/核心卖点图.jpgasset3,460,471 bytesexample/女装/002/模特展示图.jpgasset2,394,203 bytesexample/女装/002/白底主图.jpgasset4,417,950 bytesexample/女装/002/背面侧面视图.jpgasset3,866,981 bytesexample/女装/003/卖点图.jpgasset6,553,826 bytesexample/女装/003/商品原图.jpgasset151,028 bytesexample/女装/003/场景展示图.jpgasset5,650,903 bytesexample/女装/003/材质图.jpgasset6,037,551 bytesexample/女装/003/核心卖点图.jpgasset5,909,506 bytesexample/女装/003/白底主图.jpgasset4,303,679 bytesexample/女装/005/product.jsonasset2,000 bytesexample/女装/005/三角度拼图.jpgasset1,599,131 bytesexample/女装/005/卖点图.jpgasset2,198,186 bytesexample/女装/005/商品原图.jpgasset582,131 bytesexample/女装/005/场景展示图.jpgasset1,774,761 bytesexample/女装/005/多场景拼图.jpgasset2,055,831 bytesexample/女装/005/材质图.jpgasset2,176,640 bytesexample/女装/005/核心卖点图.jpgasset1,550,215 bytesexample/女装/005/模特展示图.jpgasset1,859,144 bytesexample/女装/005/电商详情图.jpgasset1,011,349 bytesexample/女装/005/白底主图.jpgasset931,629 bytesexample/电器/product.jsonasset2,057 bytesexample/电器/三角度拼图.jpgasset5,975,675 bytesexample/电器/卖点图.jpgasset417,479 bytesexample/电器/商品原图.jpgasset111,102 bytesexample/电器/场景展示图.jpgasset450,744 bytesexample/电器/多场景拼图.jpgasset653,497 bytesexample/电器/材质图.jpgasset359,781 bytesexample/电器/核心卖点图.jpgasset418,139 bytesexample/电器/电商详情图.jpgasset6,600,365 bytesexample/电器/白底主图.jpgasset330,688 bytesexample/男装/product.jsonasset1,787 bytesexample/男装/三角度拼图.jpgasset5,123,822 bytesexample/男装/卖点图.jpgasset4,275,620 bytesexample/男装/场景展示图.jpgasset5,206,580 bytesexample/男装/多场景拼图.jpgasset5,720,411 bytesexample/男装/服务原图.jpgasset26,054 bytesexample/男装/材质图.jpgasset4,746,688 bytesexample/男装/核心卖点图.jpgasset4,857,977 bytesexample/男装/模特展示图.jpgasset5,352,671 bytesexample/男装/电商详情图.jpgasset4,568,795 bytesexample/男装/白底主图.jpgasset4,298,253 bytesexample/童装/gemini/卖点图.jpgasset1,646,763 bytesexample/童装/gemini/场景展示图.jpgasset2,423,350 bytesexample/童装/gemini/多场景拼图.jpgasset745,747 bytesexample/童装/gemini/材质图.jpgasset744,324 bytesexample/童装/gemini/核心卖点图.jpgasset466,906 bytesexample/童装/gemini/模特展示图.jpgasset642,456 bytesexample/童装/gemini/白底主图.jpgasset1,140,363 bytesexample/童装/product.jsonasset1,997 bytesexample/童装/卖点图.jpgasset6,353,369 bytesexample/童装/商品原图.jpgasset34,824 bytesexample/童装/场景展示图.jpgasset5,989,709 bytesexample/童装/多场景拼图.jpgasset6,368,050 bytesexample/童装/材质图.jpgasset6,068,146 bytesexample/童装/核心卖点图.jpgasset4,471,427 bytesexample/童装/模特展示图.jpgasset5,484,224 bytesexample/童装/白底主图.jpgasset4,302,935 bytesreferences/analysis-prompts.mddoc8,008 bytesreferences/copy-prompts.mddoc26,163 bytesreferences/dynamic-prompt-architecture.mddoc17,553 bytesreferences/image-types.mddoc44,584 bytesreferences/model-prompts.mddoc6,350 bytesreferences/platforms.mddoc3,911 bytesreferences/providers.mddoc7,861 bytesscripts/analyze.pyruns13,865 bytesscripts/check_providers.pyruns1,615 bytesscripts/generate.pyruns98,602 bytesscripts/generate_video.pyruns9,769 bytes
Read SKILL.md
# 电商套图生成助手
## 概览
本 Skill 实现从「商品原始图片 + 卖点信息」到「完整电商套图」的一键生成流程:
```
① 上传商品图片(必须)+ 输入卖点信息(可选)
↓
② AI 视觉分析:提取商品主体,智能生成卖点文案(可编辑)
↓
③ 选择平台规范 + 套图类型(7种标准图)
↓
④ AI 生成每张图的详细 Prompt(可编辑)View the complete source on GitHubSkills included
- ecommerce-image-suite
Repository facts
- License
- Apache-2.0
- Created
- Apr 24, 2026
- Last pushed
- Aug 27, 2026
- Forks
- 96
- Open issues
- 0
- Project activity
- Slowing
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 7, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 18 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 138 network referencesin 8 files: scripts/generate.py:7 references/providers.md:23 references/copy-prompts.md:251 and 5 more
- 10 obfuscation signalsin 1 file: scripts/generate.py:1183
- No instruction overrides
- 4 executable scriptsin 4 files: scripts/analyze.py:1 scripts/check_providers.py:1 scripts/generate.py:1 and 1 more
- 105 references to secretsin 7 files: SKILL.md:8 scripts/analyze.py:10 README.md:61 and 4 more
- No requests to vote in Hot
Show all 257 signals by file
LICENSE
README.md
- Network accessline 7
## 插个广子 - [丸子GPT超低价中转站&丸子Image2生图公益站](https://ai.wanzij.cn) - Network accessline 8
- [丸子GPT超低价中转站&丸子Image2生图公益站](https://ai.wanzij.cn) - Access to secretsline 61
[Credential-related source omitted] - Access to secretsline 62
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 65
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 75
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Access to secretsline 89
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Access to secretsline 101
[Credential-related source omitted] - Access to secretsline 102
[Credential-related source omitted] - Access to secretsline 108
[Credential-related source omitted] - Access to secretsline 109
[Credential-related source omitted] - Access to secretsline 115
[Credential-related source omitted] - Access to secretsline 116
[Credential-related source omitted] - Network accessline 188
[](https://linux.do)
SKILL.md
- Access to secretsline 8
[Credential-related source omitted] - Access to secretsline 61
[Credential-related source omitted] - Access to secretsline 62
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 65
[Credential-related source omitted] - Access to secretsline 69
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Network accessline 122
> 📋 **CLI 环境(如 Claude Code)**:无法直接拖拽上传图片,请提供以下任一方式: > - 本地文件路径(如 `/Users/me/photos/product.jpg`) > - 远程图片 URL(如 `https://example.com/product.jpg`) - Network accessline 123
> - 本地文件路径(如 `/Users/me/photos/product.jpg`) > - 远程图片 URL(如 `https://example.com/product.jpg`) > - Base64 字符串(`data:image/jpeg;base64,/9j/4AAQ...`) - Network accessline 124
> - 远程图片 URL(如 `https://example.com/product.jpg`) - Access to secretsline 399
[Credential-related source omitted] - Access to secretsline 423
[Credential-related source omitted] - Access to secretsline 432
[Credential-related source omitted] - Access to secretsline 433
[Credential-related source omitted] - Access to secretsline 434
[Credential-related source omitted] - Network accessline 1122
[Credential-related source omitted] - Network accessline 1123
[Credential-related source omitted] - Access to secretsline 1123
[Credential-related source omitted] - Network accessline 1124
GEMINI_BASE_URL="https://my-proxy.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent" \ - Network accessline 1127
[Credential-related source omitted] - Network accessline 1128
[Credential-related source omitted] - Access to secretsline 1128
[Credential-related source omitted] - Network accessline 1129
DASHSCOPE_BASE_URL="https://my-proxy.com/api/v1/services/aigc/multimodal-generation/generation" \ - Access to secretsline 1278
[Credential-related source omitted] - Access to secretsline 1345
[Credential-related source omitted] - Access to secretsline 1351
[Credential-related source omitted] - Access to secretsline 1383
[Credential-related source omitted] - Access to secretsline 1393
[Credential-related source omitted] - Access to secretsline 1394
[Credential-related source omitted] - Access to secretsline 1396
[Credential-related source omitted] - Access to secretsline 1397
[Credential-related source omitted] - Access to secretsline 1398
[Credential-related source omitted] - Access to secretsline 1399
[Credential-related source omitted] - Access to secretsline 1409
[Credential-related source omitted] - Access to secretsline 1410
[Credential-related source omitted] - Access to secretsline 1411
[Credential-related source omitted] - Access to secretsline 1412
[Credential-related source omitted] - Access to secretsline 1413
[Credential-related source omitted] - Network accessline 1415
# 可选:自定义代理地址 export OPENAI_BASE_URL="https://my-proxy.com/v1" - Network accessline 1416
export OPENAI_BASE_URL="https://my-proxy.com/v1" - Network accessline 1417
export GEMINI_BASE_URL="https://my-proxy.com/gemini" - Network accessline 1418
export DASHSCOPE_BASE_URL="https://my-proxy.com/dashscope" - Access to secretsline 1430
[Credential-related source omitted]
references/copy-prompts.md
- Network accessline 251
【字体系统】 @import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600;700&family=Noto+Sans+SC:wght@300;400;500&family=Oswald:wght@500;600&display=swap'); - Network accessline 252
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600;700&family=Noto+Sans+SC:wght@300;400;500&family=Oswald:wght@500;600&display=swap'); - Network accessline 352
【字体系统】 @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700&family=Source+Han+Serif+SC:wght@400;700&family=Roboto+Mono:wght@400;500&display=swap'); - Network accessline 353
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700&family=Source+Han+Serif+SC:wght@400;700&family=Roboto+Mono:wght@400;500&display=swap'); - Network accessline 454
【字体系统】 @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700;900&family=ZCOOL+KuaiLe&display=swap'); - Network accessline 455
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700;900&family=ZCOOL+KuaiLe&display=swap'); - Network accessline 538
【字体系统】 @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700;900&family=JetBrains+Mono:wght@400;700&display=swap'); - Network accessline 539
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700;900&family=JetBrains+Mono:wght@400;700&display=swap'); - Network accessline 627
【Font System】 @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700&family=Source+Sans+Pro:wght@300;400;600&display=swap'); - Network accessline 628
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700&family=Source+Sans+Pro:wght@300;400;600&display=swap'); - Network accessline 682
Include in <script type="application/ld+json">: { "@context": "https://schema.org", - Network accessline 683
{ "@context": "https://schema.org", "@type": "Product", - Network accessline 684
"@context": "https://schema.org", - Network accessline 721
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,400;0,600;1,400&display=swap');
references/providers.md
- Network accessline 23
**Key获取:** https://platform.openai.com/api-keys - Network accessline 36
[Credential-related source omitted] - Access to secretsline 36
[Credential-related source omitted] - Network accessline 38
# export OPENAI_BASE_URL="https://your-proxy.com/v1" # 可选代理 - Network accessline 43
const response = await fetch("https://api.openai.com/v1/images/generations", { - Network accessline 73
const response = await fetch("https://api.openai.com/v1/images/edits", { - Network accessline 88
**API Endpoint:** `https://generativelanguage.googleapis.com/v1beta/models/imagen-3.0-generate-001:predict` - Network accessline 89
**Key获取:** https://aistudio.google.com/app/apikey - Network accessline 92
const response = await fetch( - Network accessline 93
`https://generativelanguage.googleapis.com/v1beta/models/imagen-3.0-generate-001:predict?key=${apiKey}`, - Network accessline 116
**API Endpoint:** `https://api.stability.ai/v2beta/stable-image/generate/core` - Network accessline 117
**Key获取:** https://platform.stability.ai/account/keys - Network accessline 126
const response = await fetch("https://api.stability.ai/v2beta/stable-image/generate/core", { - Network accessline 142
**API Endpoint:** `https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis` - Network accessline 143
**Key获取:** https://dashscope.console.aliyun.com/ - Network accessline 147
// Step 1: 提交任务 const submitRes = await fetch( - Network accessline 148
const submitRes = await fetch( - Network accessline 149
"https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis", - Network accessline 171
for (let i = 0; i < 30; i++) { await new Promise(r => setTimeout(r, 2000)); const pollRes = await fetch( - Network accessline 172
await new Promise(r => setTimeout(r, 2000)); const pollRes = await fetch( `https://dashscope.aliyuncs.com/api/v1/tasks/${task_id}`, - Network accessline 173
const pollRes = await fetch( - Network accessline 174
`https://dashscope.aliyuncs.com/api/v1/tasks/${task_id}`, - Network accessline 179
const imageUrl = pollData.output.results[0].url; // 转base64 const imgBlob = await (await fetch(imageUrl)).blob(); - Network accessline 180
// 转base64 const imgBlob = await (await fetch(imageUrl)).blob(); const base64 = await new Promise(r => { - Network accessline 181
const imgBlob = await (await fetch(imageUrl)).blob(); - Network accessline 197
**API Endpoint:** `https://ark.cn-beijing.volces.com/api/v3/images/generations` - Network accessline 198
**Key获取:** https://console.volcengine.com/ark → API Key管理 - Network accessline 201
const response = await fetch("https://ark.cn-beijing.volces.com/api/v3/images/generations", {
scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 10
[Credential-related source omitted] - Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 12
[Credential-related source omitted] - Network accessline 17
python3 analyze.py ./product.jpg python3 analyze.py ./front.jpg ./back.jpg # 多张图(正面+背面) python3 analyze.py https://example.com/product.jpg - Network accessline 18
python3 analyze.py ./front.jpg ./back.jpg # 多张图(正面+背面) python3 analyze.py https://example.com/product.jpg python3 analyze.py ./product.jpg --provider tongyi - Network accessline 19
python3 analyze.py https://example.com/product.jpg - Access to secretsline 47
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Network accessline 50
"env_model": "DASHSCOPE_VISION_MODEL", "default_model": "qwen-vl-max", "default_url": "https://dashscope.aliyuncs.com/compatible-mode/v1", - Network accessline 51
"default_model": "qwen-vl-max", "default_url": "https://dashscope.aliyuncs.com/compatible-mode/v1", }, - Network accessline 52
"default_url": "https://dashscope.aliyuncs.com/compatible-mode/v1", - Access to secretsline 57
[Credential-related source omitted] - Network accessline 60
"env_model": "ARK_VISION_MODEL", "default_model": "doubao-vision-pro-32k", "default_url": "https://ark.cn-beijing.volces.com/api/v3", - Network accessline 61
"default_model": "doubao-vision-pro-32k", "default_url": "https://ark.cn-beijing.volces.com/api/v3", }, - Network accessline 62
"default_url": "https://ark.cn-beijing.volces.com/api/v3", - Access to secretsline 67
[Credential-related source omitted] - Network accessline 70
"env_model": "OPENAI_VISION_MODEL", "default_model": "gpt-4o", "default_url": "https://api.openai.com/v1", - Network accessline 71
"default_model": "gpt-4o", "default_url": "https://api.openai.com/v1", }, - Network accessline 72
"default_url": "https://api.openai.com/v1", - Access to secretsline 176
[Credential-related source omitted] - Access to secretsline 178
[Credential-related source omitted] - Access to secretsline 180
[Credential-related source omitted] - Access to secretsline 185
[Credential-related source omitted] - Access to secretsline 187
[Credential-related source omitted] - Access to secretsline 195
[Credential-related source omitted] - Access to secretsline 201
[Credential-related source omitted] - Access to secretsline 202
[Credential-related source omitted] - Access to secretsline 216
[Credential-related source omitted] - Access to secretsline 258
[Credential-related source omitted] - Access to secretsline 259
[Credential-related source omitted] - Access to secretsline 273
[Credential-related source omitted] - Access to secretsline 274
[Credential-related source omitted] - Access to secretsline 275
[Credential-related source omitted] - Access to secretsline 280
[Credential-related source omitted] - Access to secretsline 286
[Credential-related source omitted]
scripts/check_providers.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 12
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted]
scripts/generate.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 7
python3 generate.py --product '{"product_description_for_prompt": "white T-shirt...", "selling_points": [...]}' --provider openai --api-key "sk-..." --base-url "https://custom-proxy.example.com/v1" - Network accessline 9
--provider openai \ --api-key "sk-..." \ --base-url "https://custom-proxy.example.com/v1" \ - Network accessline 10
--api-key "sk-..." \ --base-url "https://custom-proxy.example.com/v1" \ --model "dall-e-3" \ - Network accessline 11
--base-url "https://custom-proxy.example.com/v1" \ - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 19
[Credential-related source omitted] - Access to secretsline 20
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Network accessline 134
DEFAULT_URLS = { "openai": "https://api.openai.com/v1/images/generations", - Network accessline 135
"openai": "https://api.openai.com/v1/images/generations", - Network accessline 136
"gemini": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent", - Network accessline 137
"stability": "https://api.stability.ai/v2beta/stable-image/generate/core", - Network accessline 138
"tongyi": "https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation", - Network accessline 139
"doubao": "https://ark.cn-beijing.volces.com/api/v3/images/generations", - Network accessline 1133
return b64, mime if path_or_url.startswith(("http://", "https://")): resp = requests.get(path_or_url, timeout=60) - Network accessline 1134
if path_or_url.startswith(("http://", "https://")): resp = requests.get(path_or_url, timeout=60) resp.raise_for_status() - Network accessline 1135
resp = requests.get(path_or_url, timeout=60) - Network accessline 1175
url = (base_url.rstrip("/") + "/v1/images/generations") if base_url else DEFAULT_URLS["openai"] resp = requests.post( - Network accessline 1176
resp = requests.post( - Possible obfuscationline 1183
return base64.b64decode(_fix_base64_padding(resp.json()["data"][0]["b64_json"])) - Network accessline 1189
# 直接拼接 /images/edits(用户的 BASE_URL 是 https://api.laozhang.ai/v1) - Network accessline 1190
url = base_url_clean + "/images/edits" else: url = "https://api.openai.com/v1/images/edits" - Network accessline 1192
url = "https://api.openai.com/v1/images/edits" - Network accessline 1201
# 使用 image[] 作为字段名(与 curl 示例一致) - Possible obfuscationline 1202
files.append(("image[]", (f"image{i}.{mime.split('/')[-1]}", base64.b64decode(_fix_base64_padding(b64_data)), mime))) - Network accessline 1210
resp = requests.post( - Possible obfuscationline 1226
return base64.b64decode(_fix_base64_padding(b64_value)) - Network accessline 1231
url = (base_url.rstrip("/") + "/v1/images/generations") if base_url else DEFAULT_URLS["openai"] resp = requests.post( - Network accessline 1232
resp = requests.post( - Possible obfuscationline 1239
return base64.b64decode(_fix_base64_padding(resp.json()["data"][0]["b64_json"])) - Network accessline 1274
# 如果 base_url 以 /v1 结尾(如 https://api.example.com/v1),拼接 /images/edits - Possible obfuscationline 1291
files.append(("image[]", (f"image{i}.{mime.split('/')[-1]}", base64.b64decode(_fix_base64_padding(b64_data)), mime))) - Network accessline 1299
resp = requests.post( - Network accessline 1313
return base64.b64decode(_fix_base64_padding(img_data["b64_json"])) elif "url" in img_data: img_resp = requests.get(img_data["url"], timeout=60) - Possible obfuscationline 1313
return base64.b64decode(_fix_base64_padding(img_data["b64_json"])) - Network accessline 1314
elif "url" in img_data: img_resp = requests.get(img_data["url"], timeout=60) img_resp.raise_for_status() - Network accessline 1315
img_resp = requests.get(img_data["url"], timeout=60) - Network accessline 1338
resp = requests.post( - Network accessline 1351
return base64.b64decode(_fix_base64_padding(img_data["b64_json"])) elif "url" in img_data: img_resp = requests.get(img_data["url"], timeout=60) - Possible obfuscationline 1351
return base64.b64decode(_fix_base64_padding(img_data["b64_json"])) - Network accessline 1352
elif "url" in img_data: img_resp = requests.get(img_data["url"], timeout=60) img_resp.raise_for_status() - Network accessline 1353
img_resp = requests.get(img_data["url"], timeout=60) - Network accessline 1362
url = base_url elif model and model != DEFAULT_MODELS["gemini"]: url = f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent" - Network accessline 1363
elif model and model != DEFAULT_MODELS["gemini"]: url = f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent" else: - Network accessline 1364
url = f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent" - Network accessline 1386
resp = requests.post( - Possible obfuscationline 1405
return base64.b64decode(_fix_base64_padding(part["inlineData"]["data"])) - Network accessline 1410
reference_image: str = "", **_kw) -> bytes: url = base_url or DEFAULT_URLS["stability"] resp = requests.post( - Network accessline 1411
url = base_url or DEFAULT_URLS["stability"] resp = requests.post( url, - Network accessline 1412
resp = requests.post( - Possible obfuscationline 1420
return base64.b64decode(_fix_base64_padding(resp.json()["image"])) - Network accessline 1430
import time poll_url = "https://dashscope.aliyuncs.com/api/v1/tasks/" + task_id - Network accessline 1431
poll_url = "https://dashscope.aliyuncs.com/api/v1/tasks/" + task_id - Network accessline 1434
interval = 3 while elapsed < max_wait: resp = requests.get(poll_url, headers=headers, timeout=30) - Network accessline 1435
while elapsed < max_wait: resp = requests.get(poll_url, headers=headers, timeout=30) resp.raise_for_status() - Network accessline 1436
resp = requests.get(poll_url, headers=headers, timeout=30) - Network accessline 1473
url = base_url elif is_wan: url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/image-generation/generation" - Network accessline 1474
elif is_wan: url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/image-generation/generation" else: - Network accessline 1475
url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/image-generation/generation" - Network accessline 1515
resp = requests.post(url, headers=headers, json=body, timeout=request_timeout) - Network accessline 1528
return base64.b64decode(_fix_base64_padding(img_url.split(",", 1)[-1] if "," in img_url else img_url)) return requests.get(img_url, timeout=request_timeout).content - Possible obfuscationline 1528
return base64.b64decode(_fix_base64_padding(img_url.split(",", 1)[-1] if "," in img_url else img_url)) - Network accessline 1529
return requests.get(img_url, timeout=request_timeout).content - Network accessline 1532
img_url = data["output"]["choices"][0]["message"]["content"][0]["image"] return requests.get(img_url, timeout=request_timeout).content - Network accessline 1533
return requests.get(img_url, timeout=request_timeout).content - Access to secretsline 1545
[Credential-related source omitted] - Network accessline 1566
if len(ref_images) > 1: print(f" 📎 已传递 {len(ref_images)} 张参考图", flush=True) resp = requests.post( - Network accessline 1567
print(f" 📎 已传递 {len(ref_images)} 张参考图", flush=True) resp = requests.post( url, - Network accessline 1568
resp = requests.post( - Network accessline 1574
resp.raise_for_status() img_url = resp.json()["data"][0]["url"] return requests.get(img_url, timeout=_kw.get('request_timeout', 180)).content - Network accessline 1576
return requests.get(img_url, timeout=_kw.get('request_timeout', 180)).content - Access to secretsline 1588
[Credential-related source omitted] - Access to secretsline 1589
[Credential-related source omitted] - Access to secretsline 1590
[Credential-related source omitted] - Access to secretsline 1591
[Credential-related source omitted] - Access to secretsline 1592
[Credential-related source omitted] - Access to secretsline 1622
[Credential-related source omitted] - Access to secretsline 1661
[Credential-related source omitted] - Access to secretsline 1662
[Credential-related source omitted] - Access to secretsline 1667
[Credential-related source omitted] - Access to secretsline 1842
[Credential-related source omitted]
scripts/generate_video.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 38
DEFAULT_MODEL = "doubao-seedance-1-5-pro-251215" TASK_URL = "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" - Network accessline 39
TASK_URL = "https://ark.cn-beijing.volces.com/api/v3/contents/generations/tasks" - Access to secretsline 99
[Credential-related source omitted] - Network accessline 110
[Credential-related source omitted] - Network accessline 111
[Credential-related source omitted] - Network accessline 112
[Credential-related source omitted] - Access to secretsline 112
[Credential-related source omitted] - Access to secretsline 120
[Credential-related source omitted] - Access to secretsline 122
[Credential-related source omitted] - Network accessline 124
interval = 5 while elapsed < max_wait: resp = requests.get(url, headers=headers, timeout=30) - Network accessline 125
while elapsed < max_wait: resp = requests.get(url, headers=headers, timeout=30) resp.raise_for_status() - Network accessline 126
resp = requests.get(url, headers=headers, timeout=30) - Network accessline 141
def download_video(video_url: str, output_path: Path): resp = requests.get(video_url, timeout=120, stream=True) - Network accessline 142
resp = requests.get(video_url, timeout=120, stream=True) - Access to secretsline 166
[Credential-related source omitted] - Access to secretsline 167
[Credential-related source omitted] - Access to secretsline 168
[Credential-related source omitted] - Access to secretsline 171
[Credential-related source omitted] - Access to secretsline 200
[Credential-related source omitted] - Access to secretsline 204
[Credential-related source omitted]
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 9 facts
- Contacts dashscope.aliyuncs.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/analyze.py:52High confidence
- Contacts ark.cn-beijing.volces.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/analyze.py:62High confidence
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/analyze.py:72High confidence
- Contacts api.openai.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/generate.py:135High confidence
- Contacts generativelanguage.googleapis.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/generate.py:136High confidence
- Contacts api.stability.ai, which SKILL.md, the README and the plugin manifest do not mentionscripts/generate.py:137High confidence
- Contacts dashscope.aliyuncs.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/generate.py:138High confidence
- Contacts ark.cn-beijing.volces.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/generate.py:139High confidence
- Contacts ark.cn-beijing.volces.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/generate_video.py:39High confidence
Signal confidence: 254 facts
- Network access in prose of documentationREADME.md:7Low confidence
- Network access in prose of documentationREADME.md:8Low confidence
- Access to secrets in prose of documentationREADME.md:61Low confidence
- Access to secrets in prose of documentationREADME.md:62Low confidence
- Access to secrets in prose of documentationREADME.md:63Low confidence
- Access to secrets in prose of documentationREADME.md:64Low confidence
- Access to secrets in prose of documentationREADME.md:65Low confidence
- Access to secrets in code of documentationREADME.md:74Low confidence
- Access to secrets in code of documentationREADME.md:75Low confidence
- Access to secrets in code of documentationREADME.md:81Low confidence
- Access to secrets in code of documentationREADME.md:82Low confidence
- Access to secrets in code of documentationREADME.md:89Low confidence
- Access to secrets in code of documentationREADME.md:90Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueREADME.md:101Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueREADME.md:102Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueREADME.md:108Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueREADME.md:109Low confidence
- Access to secrets in code of documentationREADME.md:115Low confidence
- Access to secrets in code of documentationREADME.md:116Low confidence
- Network access in prose of documentationREADME.md:188Low confidence
- Access to secrets in the frontmatter of the SKILL.mdSKILL.md:8Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:61Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:62Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:63Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:64Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:65Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:69Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:71Low confidence
- Network access in prose of the SKILL.mdSKILL.md:122Low confidence
- Network access in prose of the SKILL.mdSKILL.md:123Low confidence
- Network access in prose of the SKILL.mdSKILL.md:124Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:399Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valueSKILL.md:423Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:432Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:433Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:434Low confidence
- Network access in code of the SKILL.mdSKILL.md:1122High confidence
- Network access in code of the SKILL.mdSKILL.md:1123High confidence
- Access to secrets in code of the SKILL.mdSKILL.md:1123High confidence
- Network access in code of the SKILL.mdSKILL.md:1124High confidence
- Network access in code of the SKILL.mdSKILL.md:1127High confidence
- Network access in code of the SKILL.mdSKILL.md:1128High confidence
- Access to secrets in code of the SKILL.mdSKILL.md:1128High confidence
- Network access in code of the SKILL.mdSKILL.md:1129High confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:1278Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:1345Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:1351Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:1383Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:1393Low confidence
- Access to secrets in prose of the SKILL.mdSKILL.md:1394Low confidence
and 204 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.