电影剧照查找器 是做什么的?
将“我需要两人争吵后静坐沉默的剧照”转化为真实、可溯源的高清图片文件。适用于任何AI代理、任何操作系统,无需任何凭证。
1. 先读这个:实际能做什么
不存在免费的公共API,能直接接收一句自然语言描述并返回精确的电影帧画面,尤其是带有对白字幕的画面。追求这种“银弹”只会浪费时间。有效的方法是一个流水线,由代理编排,并由具备视觉能力的模型挑选帧:
请求 -> 事实核查 -> 选择来源 -> 批量下载候选图片
-> 编号联系表 -> 视觉帧挑选 -> 高清原图
-> 裁剪字幕 / 合成字幕 -> 视觉复核
-> 交付 + 来源清单
两个不可妥协的推论:
- 视觉步骤不可跳过。 仅凭文件名或文本猜测帧必定失败。向具备视觉能力的模型(或人类)展示联系表。
- 先事实核查。 关于电影的广泛流传的“事实”常常是错误的(参见
references/fact-check.md)。在搜索前先核实台词/场景/剧集。
2. 快速开始(最小配置,默认方式)
pip install -r requirements.txt
python scripts/still.py probe # 测试当前哪些来源可达
python scripts/still.py grab --out ./work \
--page "https://movie-screencaps.com/avatar-2009/page/114" \
--image-referer "https://movie-screencaps.com/" \
--limit 40
# -> ./work/candidates/*.jpg, ./work/contact_1.jpg, ./work/manifest.json
# 向视觉模型展示 contact_1.jpg,记下获胜的编号,然后:
python scripts/still.py sheet ./work/candidates # 重新生成带编号的缩略表
python scripts/still.py crop ./work/candidates/p1_02.jpg --bottom 100 -o ./work/clean.jpg
python scripts/still.py deliver ./work --picks examples/sample-picks.json \
--profile profiles/minimal.json --out ./delivery
始终先运行 probe:来源可用性会变化。如需完全离线运行,请参见 examples/quickstart.md 的D章节。--image-referer 通常设为网站根路径,而非文章URL。
如需对白台词,quote 可提供影片名称和毫秒时间戳:
python scripts/still.py quote "I see you" --title Avatar
完整演练:examples/quickstart.md。命令参考:scripts/still.py --help。
3. 在接触网络前先决定路线
| 请求类型 | 首选来源 | 备用来源 |
|---|---|---|
| 场景/氛围(“争吵后的沉默”、“两人背对背”) | 带说明的剧照文章,或FilmGrab策展帧(grab) | 逐帧画廊 + 视觉挑选 |
| 引述的台词 / “X说Y的那帧” | quote → 时间戳 → 帧画廊 → subtitle(标记为合成) | 带原生字幕的文章截图 |
| 需要宽幅、干净、无字幕的封面图 | FilmGrab策展帧 | 从观看截图裁剪底部 95-100 像素 |
| 用户有本地视频文件 | 可选的本地语义搜索,参见 references/optional-adapters.md | — |
| 梗图而非剧照 | 可选附录,references/meme-optional.md | — |
先运行 probe。它免费、无需登录,并能告诉你当前环境下哪些来源返回403/不可达,从而避免重复请求失效的主机。
4. 对所有代理都适用的规则
- 无凭证。 不要索要API密钥,不要代用户登录,不要绕过付费墙或反爬虫保护。收到403意味着“切换来源”,并在运行日志中记录。
- 只下载实际返回的URL。 永远不要编造图片URL。一个页面可达并不意味着其图片CDN可达:在信任整个画廊前先验证一张图片。如果图片在修改一次Referer后仍返回403,则切换来源——不要持续更换请求头。
- 记录溯源。 每张交付的图片都需要包含来源页面、直接图片URL、影片名称/年份,以及是否裁剪或合成了字幕。
grab会自动将这些信息写入manifest.json。 - 标记合成的字幕。 如果你添加了原始帧中没有的字幕,必须在说明中注明。绝不要将其呈现为原生帧。
- 验证分辨率(默认宽度 >= 1000 像素)并在交付前用查看器打开最终文件。
- 尊重配置文件。 超出上述范围的行为(如人工介入选择、双文件夹交付、强制事实核查、封面裁剪预览)由
profiles/*.json控制。不要静默启用额外规则。
5. 配置文件(可选行为)
默认的 profiles/minimal.json 是一个简单的通用流水线:寻找候选、挑选一个、附带溯源交付。其他一切均为可选。
python scripts/still.py rules --profile profiles/editorial-wechat.json
python scripts/still.py deliver ./work --picks picks.json \
--profile profiles/editorial-wechat.json --out ./delivery
editorial-wechat.json 捆绑了人类编辑的工作流:带编号的预览和人工选择(绝不自动终选)、双文件夹交付且不删除任何候选、强制事实核查、强制字幕/来源标注,以及 2.35:1 封面裁剪预览。参见 profiles/README.md 了解完整模式。
6. 参考索引(渐进式披露)
只阅读当前步骤所需的内容。
| 文件 | 何时阅读 |
|---|---|
references/workflow.md | 需要完整的端到端标准作业程序和验收清单 |
references/sources.md | 选择来源,或某个来源停止工作 |
references/pitfalls.md | 某步操作失败;包含已知的死主机和确切的失败模式 |
references/image-ops.md | 联系表、裁剪、字幕合成、字体 |
references/fact-check.md | 任何涉及引述台词或描述特定场景的请求 |
references/delivery.md | 溯源模式、双文件夹布局、版权边界 |
references/meme-optional.md | 用户要求梗图而非剧照 |
references/optional-adapters.md | 本地视频库,或其他基于登录/CLI的工具 |
7. 验收清单
- 在搜索前已对台词/场景进行事实核查
- 编号联系表已由视觉模型或人类查看过
- 最终图片能正常打开且符合请求,而不仅仅是查询
- 来源页面 + 直接图片URL + 影片/年份已在
manifest.json中记录 - 裁剪/合成的字幕已明确标注
- 宽度 >= 1000 像素(或已说明偏差)
- 已记录死主机和变通方案,而非静默重试
- 未删除任何候选;中间文件已保留
8. 范围限制
本技能负责查找和准备图片。它不发布任何内容、不编辑用户稿件、不代用户决定最终封面(除非配置文件说明人类已选择),也不授予任何重新分发电影剧照的权利。参见 references/delivery.md 了解版权边界。