Communitygithub.com

電影劇照搜尋器

將「我需要兩個人在爭吵後沉默坐著的劇照」這樣的描述,轉化為真實且附有來源的圖像檔案。適用於任何 AI 代理、任何作業系統,無需任何憑證。

電影劇照搜尋器 是什麼?

這個技能提供了一個完整的管道,讓 AI 代理能夠根據自然語言描述(例如場景、情緒或台詞)找到並交付高解析度的電影劇照。它會先進行事實查核,然後從多個公開的來源(如 movie-screencaps.com 或 FilmGrab)批次下載候選圖,並產生編號的連絡表(contact sheet),接著需要一個具備視覺能力的模型(或真人)從中挑選最佳幀。最終會裁切掉字幕、合成所需文字,並記錄每張圖片的出處(來源頁面、直接連結、電影年份),確保所有操作都符合版權規範。此技能支援任何作業系統,無需任何 API 金鑰,並且能自動處理 403 錯誤等網路問題。使用者可以透過 JSON 設定檔設定不同的行為模式,例如編輯工作流程或快速成果交付。

相容平台✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/Fitzfeichi/movie-still-finder/tree/master

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

電影劇照搜尋器 是做什麼的?

將「我需要兩個人在爭吵後沉默坐著的劇照」這樣的描述,轉化為真實且附有來源的圖像檔案。任何 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 通常是網站根目錄,而非文章網址。

若要搜尋一句台詞,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 精選幀從觀看截圖 crop 下方 95-100 像素
使用者擁有本地影片檔案可選的本地語意搜尋,請參閱 references/optional-adapters.md—
迷因 / 梗圖而非劇照可選附錄,references/meme-optional.md—

請執行 probe。它是免費的,無需登入,能告訴你哪些來源在你的環境中返回 403 或無法連線,這樣你就不會重試一個已失效的主機。

4. 適用於所有代理的規則

  1. 無需憑證。 不要要求 API 金鑰、不要代表使用者登入、不要繞過付費牆或反機器人保護。收到 403 代表「切換來源」,並記錄在執行日誌中。
  2. 只下載實際回傳的 URL。 絕不憑空偽造圖像 URL。一個可連線的頁面不代表其圖像 CDN 也可連線:在信任整個畫廊之前,先驗證一張圖片。如果在一次 Referer 修正後圖片仍然返回 403,請切換來源 — 不要持續修改標頭。
  3. 記錄來源出處。 每張交付的圖像都需要包含來源頁面、圖像直接網址、電影名稱/年份,以及是否有任何字幕被裁切或合成。grab 會自動將這些資訊寫入 manifest.json。
  4. 標記合成的字幕。 如果你添加了原始幀中不存在的字幕,請在說明中註明。切勿將其呈現為原生幀。
  5. 驗證而非假設解析度(預設寬度 >= 1000 像素),並在交付前使用檢視器開啟最終檔案檢查。
  6. 尊重設定檔。 超出上述範圍的行為(人工介入選擇、雙資料夾交付、強制事實查核、封面裁切預覽)由 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. 驗收清單

  • 在搜尋之前已對台詞/場景進行事實查核
  • 已將編號連絡表提供給視覺模型或人類查看
  • 最終圖像能正確開啟,且符合請求內容,而不僅僅是查詢文字
  • 在 manifest.json 中記錄了來源頁面 + 直接網址 + 電影/年份
  • 已明確標記被裁切或合成的字幕
  • 寬度 >= 1000 像素(或已說明偏差原因)
  • 已記錄失效主機及因應措施,而非靜默重試
  • 未刪除任何候選圖;保留所有中間產物

8. 範圍限制

此技能負責尋找和準備圖像。它不會發布任何內容、編輯使用者的稿件、代表使用者決定最終封面(除非設定檔說明人類已做出選擇),或授予任何重新散佈電影劇照的權利。版權界線請參閱 references/delivery.md。

相關技能