Communitygithub.com

영화 스틸 파인더

자연어 요청을 실제 영화 스틸 이미지 파일로 변환합니다. API 키 없이 모든 AI 에이전트, 모든 OS에서 사용 가능합니다.

영화 스틸 파인더란 무엇인가요?

이 기술은 AI 에이전트(예: Claude Code, Cursor, Codex)가 '말다툼 후 침묵 속에 앉아 있는 두 사람' 같은 자연어 요청을 실제 출처가 명확한 영화 스틸 이미지로 변환할 수 있도록 설계되었습니다. 정확한 프레임을 찾는 단일 API는 없으므로, 이 기술은 검증된 파이프라인을 통해 작동합니다. 즉, 사실 확인, 출처 선택, 후보 이미지 배치 다운로드, 번호가 매겨진 콘택트 시트 생성, 비전 모델을 통한 시각적 프레임 선택, 고해상도 원본 크롭 및 자막 합성(필요시), 최종 전달 및 출처 매니페스트 생성을 단계적으로 수행합니다. Python 스크립트(`scripts/still.py`)를 기반으로 하여 어떤 운영체제에서도 실행 가능하며, API 키나 로그인이 필요 없습니다. 중요한 원칙으로는 시각적 확인 단계를 절대 생략하지 말 것, 요청 전에 장면/대사 사실 확인을 철저히 할 것, 모든 다운로드 이미지의 출처를 명확히 기록할 것, 합성된 자막은 반드시 표시할 것, 해상도(최소 1000px 너비)를 확인할 것 등이 있습니다. 기본 프로파일(minimal)은 범용 파이프라인이며, `profiles/*.json`을 통해 사람 검수, 이중 폴더 전달, 강제 사실 확인 등 추가 동작을 선택적으로 활성화할 수 있습니다.

지원 대상✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/Fitzfeichi/movie-still-finder/tree/master

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

영화 스틸 파인더은(는) 무엇을 하나요?

"말다툼 후 침묵 속에 앉아 있는 두 사람의 스틸 이미지가 필요해"라는 요청을 실제 출처가 명확한 이미지 파일로 바꿔줍니다. 모든 AI 에이전트, 모든 OS, 자격 증명 불필요.

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-100px crop
사용자가 로컬 비디오 파일 보유선택적 로컬 시맨틱 검색, references/optional-adapters.md 참조—
스틸 대신 밈 / 짤선택적 부록, references/meme-optional.md 참조—

probe를 먼저 실행하세요. 무료이며 로그인이 필요 없고, 현재 환경에서 403/연결 불가능한 출처를 알려주어 죽은 호스트를 재시도하지 않도록 합니다.

4. 모든 에이전트가 지켜야 할 규칙

  1. 자격 증명 없음. API 키를 요청하지 마세요. 사용자를 대신해 로그인하지 마세요. 페이월이나 안티봇 보호를 우회하지 마세요. 403은 "출처 전환"을 의미하며, 실행 로그에 기록됩니다.
  2. 실제로 반환된 URL만 다운로드하세요. 이미지 URL을 절대 임의로 생성하지 마세요. 페이지에 접근 가능하다고 해서 해당 이미지 CDN에 접근 가능한 것은 아닙니다: 전체 갤러리를 신뢰하기 전에 이미지 하나를 확인하세요. Referer를 한 번 수정한 후에도 이미지가 403을 반환하면 출처를 전환하세요. 헤더를 계속 변경하지 마세요.
  3. 출처를 기록하세요. 전달된 모든 이미지에는 출처 페이지, 직접 이미지 URL, 영화 제목/연도, 자막이 크롭되었거나 합성되었는지 여부가 필요합니다. grab은 이를 manifest.json에 자동으로 기록합니다.
  4. 합성된 자막을 표시하세요. 원본 프레임에 없던 자막을 추가한 경우, 캡션에 그 사실을 명시하세요. 절대 네이티브 프레임으로 제시하지 마세요.
  5. 해상도를 확인하고 임의로 가정하지 마세요. (기본적으로 너비 >= 1000px) 전달하기 전에 뷰어로 최종 파일을 여세요.
  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전체 종단간 SOP 및 승인 체크리스트가 필요할 때
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에 기록되었습니다.
  • 크롭/합성된 자막이 명시적으로 표시되었습니다.
  • 너비 >= 1000px (또는 편차가 명시됨)
  • 죽은 호스트와 해결 방법이 조용히 재시도되지 않고 기록되었습니다.
  • 후보 이미지가 삭제되지 않았으며 중간 파일이 보존되었습니다.

8. 범위 제한

이 기술은 이미지를 찾고 준비합니다. 어떤 것도 게시하지 않으며, 사용자의 원고를 편집하지 않고, 사용자를 대신해 최종 커버를 결정하지 않으며(프로파일이 사람이 이미 선택했다고 명시하지 않는 한), 영화 스틸을 재배포할 권리를 부여하지 않습니다. 저작권 경계는 references/delivery.md를 참조하세요.

관련 스킬