search-images
根据关键词从 DuckDuckGo 搜索并下载图片。DuckDuckGo 对中文关键词效果极佳,能直接找到相关的动漫截图、人物配图等。若 DuckDuckGo 触发限速,自动降级到 Bing 抓取。无需任何 API Key。
脚本用法
python skills/search-images/scripts/search_images.py \
--keywords "凡人修仙传 银月" \
--output projects/myvideo/images/contestant_02/ \
[--count 5] \
[--config config.yaml]
参数说明:
--keywords— 搜索关键词,优先使用中文(如"凡人修仙传 银月"、"灌篮高手 流川枫")--output— 图片保存目录(不存在时自动创建)--count— 下载数量(默认取 config 中的images_per_slide,通常为 5)--config—config.yaml路径(默认:当前目录下的config.yaml)
标准输出(JSON):
{
"images": [
{"path": "projects/myvideo/images/contestant_02/photo_00.jpg", "source": "duckduckgo", "url": "...", "title": "凡人修仙传 银月 角色介绍"},
{"path": "projects/myvideo/images/contestant_02/photo_01.jpg", "source": "duckduckgo", "url": "...", "title": "..."},
{"path": "projects/myvideo/images/contestant_02/photo_02.jpg", "source": "duckduckgo", "url": "...", "title": "..."}
]
}
每张图片包含 title 字段(来自 DuckDuckGo 的页面标题),供 agent 判断图片内容。
工作流
对每个缺少 image 字段的片段:
- 使用片段的
keywords字段。若也没有 keywords,则根据text和项目topic生成 2-4 个中文关键词。 - 执行脚本,保存到
projects/{name}/images/contestant_{index:02d}/,下载 3-5 张候选图。 - agent 根据
title和url选择最相关的图片(通常 DuckDuckGo 默认排在最前的最佳,但 title 明显不符时应选其他)。 - 更新
project.yaml中对应片段的image路径(填入选中的图片路径)。
关键词技巧
- 中文关键词效果远好于英文:搜索
"凡人修仙传 银月"直接返回动漫截图;"silver wolf spirit Chinese mythology"只能返回泛图。 - 格式:
"{作品名} {角色名}"或"{作品名} {场景/事件}"。 - 对于非动漫话题,也可用中文描述视觉内容:
"NBA 詹姆斯 扣篮"、"深圳 城市夜景"。 - 避免用 webp 图(脚本已自动过滤)。
常见错误与修复
| 错误信息 | 原因 | 修复方法 |
|---|---|---|
ModuleNotFoundError: No module named 'requests' |
Python 依赖未安装 | 在项目根目录执行 uv sync(或 pip install requests) |
Ratelimited by DuckDuckGo, falling back to Bing |
DuckDuckGo 触发限速 | 脚本会自动降级到 Bing,无需手动干预 |
All sources failed / 下载 0 张图 |
两个图源均被限速或关键词太冷僻 | 等待 30 秒后重试;或换一组关键词;或手动将图片放入 materials/contestant_XX/ 目录 |
| 下载的图片全是错误的内容 | 关键词不够具体 | 加入更多限定词,如作品名、角色全名、场景描述 |
SSLError / 证书错误 |
网络环境问题 | 检查是否使用了代理,或尝试更换网络 |