---
title: "5년 된 맥북으로 1년치 영상을 로컬 인덱싱해보니, 진짜 병목은 편집기가 아니라 색인이었음"
published: 2026-05-21T14:01:37.000Z
canonical: https://jeff.news/article/3105
---
# 5년 된 맥북으로 1년치 영상을 로컬 인덱싱해보니, 진짜 병목은 편집기가 아니라 색인이었음

저자는 2021년형 M1 Max 맥북에서 Gemma 4 31B Q4를 로컬로 돌려 1년치 영상 아카이브를 영어로 검색 가능한 색인으로 만들었음. 파일명만 있는 원본 영상에 프레임 분석, GPS, 음성 전사, 얼굴 임베딩, YAML 메타데이터를 붙여 사이드카 파일로 저장하는 방식임. 결론은 AI 영상 편집기의 핵심 가치는 편집 자체보다 먼저 ‘아카이브를 검색 가능하게 만드는 인덱스’에 있다는 것임.

## 문제는 편집 시간이 아니라 “뭐가 어디 있는지 모르는 것”이었음

- 저자는 케냐 마사이 마라에서 반년쯤 지내며 엄청난 양의 영상을 쌓아둔 상태였음
  - iPhone, DJI Pocket, 드론, Nikon Z8, Ray-Ban Meta까지 촬영 장비가 계속 늘어남
  - 숙소와 사파리, 마을, 친구들, 아이들, 동물 영상은 많았지만 대부분 IMG_*.mov, DJI_*.mp4 같은 이름으로 SSD에 묻혀 있었음
  - 동시에 개발 일도 바빠져서 숙소 소셜 채널은 3개월 동안 멈춰 있었음

- 처음 생각한 해결책은 SaaS 영상 편집 스택이었지만 금방 접었음
  - Eddie AI, Higgsfield MCP, Submagic, Buffer 조합으로 월 140달러짜리 자동화 스택을 구상함
  - 하지만 실제 여행 브랜드에 생성형 AI B-roll을 섞는 건 신뢰를 깨기 쉬움. 손님이 1박 300달러 이상 내고 보는 건 “실제 장소”라서, AI 컷이 섞이면 바로 문제 됨
  - DaVinci Resolve Studio 21에는 이미 IntelliSearch, Smart Bins, Voice to Subtitle이 있어서 Eddie가 파는 기능의 상당 부분은 대체 가능했음

- 진짜 병목은 AI 편집기가 아니라 인덱스였음
  - 대부분의 AI 영상 편집 도구는 영상이 이미 라벨링되어 있다고 가정함
  - 그런데 실제 아카이브는 “황금빛 시간대 언덕 위 코끼리”, “마라 숙소 내부에서 사바나로 패닝하는 샷” 같은 정보를 파일명에서 알 수 없음
  - 뭔가가 실제 픽셀을 보고 설명을 붙여야, 그다음에야 편집기가 쓸 수 있음

> [!IMPORTANT]
> 이 글의 핵심은 “로컬 LLM으로 영상 분석했다”보다 “편집 자동화의 1단계는 편집기가 아니라 검색 가능한 아카이브를 만드는 것”에 가까움.

## 그래서 로컬 우선 영상 색인기를 만듦

- 설계 제약은 꽤 실용적임
  - 수천 개의 대용량 영상을 클라우드에 올리는 건 비용도, 프라이버시도, 네트워크도 말이 안 됨
  - 중앙 DB 대신 각 클립 옆에 .description.md 사이드카를 두기로 함. 텍스트라서 grep 가능하고, 파일을 다른 SSD로 옮겨도 같이 이동함
  - 비전 모델 호출은 비싼 단계라, 한 번 볼 때 나중에 필요할 정보를 최대한 다 뽑는 스키마를 설계함

- 클립 하나당 파이프라인은 꽤 빡빡함
  - ffprobe로 영상 메타데이터를 읽음
  - exiftool로 GPS 위도, 경도, 고도 정보를 뽑음
  - Nominatim으로 역지오코딩을 해서 위치명을 붙임
  - ffmpeg로 1920px 프레임 5장을 균등 간격으로 추출함
  - WhisperX로 음성을 전사하고 단어 단위 정렬과 화자 분리까지 수행함
  - insightface로 얼굴을 감지하고 512차원 ArcFace 임베딩을 SQLite 얼굴 DB에 저장함
  - 마지막으로 비전 모델이 프레임, 전사 일부, 폴더 맥락을 읽고 YAML 프론트매터와 설명문을 생성함

- 결과물은 영상 옆에 붙는 설명 파일임
  - 조명, 시간대, 색감, 얼굴 임베딩, GPS, 오디오 품질, 사람 수, 키워드, 위치, 전사, 설명문이 한 파일에 들어감
  - 예시로 IMG_1103.MOV라는 이름만 있던 클립에서, 모델은 사파리 텐트 데크, 내부에서 사바나로 패닝하는 구도, 마케팅 릴이나 여행 브이로그 B-roll로 쓸 수 있다는 점까지 잡아냈음
  - 폴더 상단에는 _INDEX.json과 _INDEX.md도 만들어 빠른 검색과 LLM 전달용 롤업으로 사용함

```mermaid
sequenceDiagram
    participant 영상 as 원본 영상
    participant 추출기 as ffmpeg·exiftool·WhisperX
    participant 로컬모델 as Gemma 4 31B
    participant 사이드카 as .description.md
    participant 편집기 as DaVinci Resolve
    영상->>추출기: 프레임·GPS·음성·메타데이터 추출
    추출기->>로컬모델: 프레임과 문맥 전달
    로컬모델->>사이드카: YAML 메타데이터와 설명 생성
    사이드카->>편집기: 영어 검색으로 필요한 클립 선택
    편집기->>영상: 컷 편집 자동화에 활용
```

## 2021년 맥북이 Gemma 4 31B를 굴린 게 제일 웃긴 포인트

- 하드웨어는 2021년형 16인치 MacBook Pro M1 Max, RAM 64GB임
  - 저자는 원래 크롬 탭, DaVinci Resolve, Slack, Discord, Drive 때문에 32GB 한계를 겪어서 RAM을 올렸다고 함
  - 5년 뒤 같은 노트북에서 Gemma 4 31B Q4를 LM Studio로 띄워 1년치 영상 색인을 돌림
  - 모델은 메모리에 28.40GB를 차지했고, REST API는 127.0.0.1:1234에서 돌았음

- 피크 시점에는 스왑이 50.89GB까지 올라감
  - 물리 RAM 64GB로는 부족해서 macOS 스왑까지 크게 밀어붙인 셈임
  - 메모리 압박은 노란색 영역이었고 팬은 크게 돌았지만, 사이드카 생성은 계속 진행됐음
  - 저자는 SSD 수명 걱정도 했지만, 하루 이틀 정도 강하게 쓰는 건 괜찮다는 쪽으로 판단함

- 로컬 31B 모델은 생각보다 쓸 만한 품질을 냈음
  - Gemma 4 31B Q4 thinking-off에 구조화된 스키마 프롬프트를 주면 대부분의 테스트 클립에서 Sonnet 4.6과 구분하기 어려운 결과가 나왔다고 함
  - 어려운 10~20%는 클라우드 모델이 돈값을 하지만, 대량 색인은 로컬이 맡고 클라우드는 재평가 패스로 쓰는 2단 구성이 현실적이라는 결론임
  - 수천 개 클립을 밤새 처리하는 작업에서는 호출 비용이 없는 로컬 모델이 확실히 유리함

> [!TIP]
> 대량 AI 처리에서 “최고 모델 하나로 전부 처리”보다 “로컬 모델로 1차 처리, 애매한 것만 클라우드 재검토”가 비용과 품질의 균형점이 될 수 있음.

## 버그 4개가 더 좋은 교훈을 줌

- WhisperX 3.8에서 diarization API가 바뀌며 깨짐
  - whisperx.DiarizationPipeline이 whisperx.diarize 하위 모듈로 이동했고, use_auth_token 인자가 token으로 바뀜
  - 해결은 생성자 시그니처를 방어적으로 처리하는 방식이었음. token=을 먼저 시도하고 TypeError가 나면 use_auth_token=으로 fallback함
  - AI 라이브러리는 API가 빨리 바뀌니, 이런 방어 코드가 싸고 효과적인 보험이라는 얘기임

- Claude CLI는 권한 오류를 성공 응답처럼 돌려줬음
  - 비대화형 모드에서 --permission-mode bypassPermissions 없이 실행하자 “이미지 프레임을 읽으려면 권한이 필요하다”는 텍스트가 정상 출력처럼 반환됨
  - exit code는 0이고 출력도 비어 있지 않으니 스크립트는 성공으로 착각함
  - 해결은 플래그 추가와 함께, 짧은 응답에 “I need permission” 같은 문구가 있으면 에러로 처리하는 방어 검사였음

- people_count 스키마를 “정수 또는 many”로 둔 것도 문제였음
  - Gemma가 people_count: "many"를 반환했는데, 사실 프롬프트가 그렇게 허용했기 때문에 모델 잘못은 아니었음
  - 수정은 0~99 정수로 추정하라고 강제하고, 과거 many 응답은 파서에서 보정하는 방식임
  - 스키마 필드는 유니온 타입으로 만들지 말라는 교훈이 꽤 현실적임

- 영상 아카이브의 cull 기준도 사진 포트폴리오처럼 잡으면 안 됐음
  - 초반 프롬프트는 흔들림, 모션 블러, 소프트 포커스를 강하게 감점해서 야간 오토바이 영상을 버리려 했음
  - 하지만 추억용 영상에서는 흐림과 흔들림이 분위기일 수 있음
  - 결국 cull 기준을 렌즈캡, 주머니 속 촬영, 2초 테스트 클립, 완전히 날아간 노출처럼 “진짜 기록이 아닌 것”으로 좁힘

## 저자의 실제 결론은 꽤 개발자스럽다

- enum 제약은 환각 방지에 강함
  - Gemma 4 E4B는 밤에 찍은 코워킹스페이스 사진을 “밝은 자연광, 바닥부터 천장까지 이어진 창문”처럼 묘사했음
  - 반면 31B에 golden_hour, bright_daylight, overcast, dim_interior, nighttime, mixed, unclear 중 하나를 고르게 하자 thinking-off와 thinking-on 모두 nighttime을 맞힘
  - 자유 서술은 그럴듯한 거짓말을 만들 수 있지만, enum은 최소한 invent를 막음

- 로컬 모델은 구조화된 프롬프트와 만났을 때 가치가 커짐
  - 그냥 “영상 설명해줘”가 아니라, 조명·시간대·품질·용도·사람 수·위치 같은 스키마를 강하게 준 게 핵심임
  - 모델이 모든 걸 산문으로 풀어내게 하면 후처리가 어려워지고, 필드 타입이 흔들리면 downstream이 전부 비용을 냄
  - 실제 자동화에서는 모델 성능만큼 스키마 설계가 중요하다는 얘기임

- 다음 단계는 색인을 기반으로 편집기를 붙이는 것임
  - Claude Code를 오케스트레이터로 쓰고, DaVinci Resolve MCP로 컷 편집을 조작하며, ElevenLabs는 정보성 voiceover에만 제한적으로 쓸 계획임
  - 추천사나 창업자 메시지에는 음성 클론을 쓰지 않는다는 룰도 명시함. 2026년에는 공개 의무와 신뢰 문제가 실제 리스크라서임
  - 저자도 아직 소셜 채널이 살아난 건 아니라고 인정함. 색인은 “좋은 클립 찾기” 문제를 풀었고, 완성 릴을 만드는 편집 자동화는 다음 절반임

---

## 기술 맥락

- 이 글에서 제일 중요한 기술 선택은 중앙 데이터베이스가 아니라 사이드카 파일을 고른 거예요. 왜냐하면 영상 아카이브는 SSD를 옮기고 폴더 구조가 바뀌기 쉬운데, 메타데이터가 원본 옆에 있으면 시스템이 망가져도 설명 파일은 계속 살아남거든요.

- 로컬 모델을 쓴 이유도 단순한 비용 절감만은 아니에요. 수천 개의 대용량 개인 영상과 숙소 영상을 클라우드에 올리면 업로드 시간, API 비용, 프라이버시 문제가 한 번에 터져요. 그래서 Gemma 4 31B가 완벽하지 않아도 대량 1차 패스로는 충분히 매력적인 선택이 돼요.

- 파이프라인이 여러 도구로 나뉜 것도 꽤 합리적이에요. ffprobe는 영상 메타데이터, exiftool은 GPS, WhisperX는 음성, insightface는 얼굴, 비전 모델은 장면 설명을 맡아요. LLM 하나에 모든 걸 시키기보다 잘하는 도구를 조합해야 결과가 안정적이에요.

- enum과 스키마를 강조한 부분은 실제 프로덕션 AI 자동화에서 특히 중요해요. 모델에게 자유롭게 설명하라고 하면 그럴듯한 문장을 만들지만, 나중에 검색·필터·편집 자동화에 쓰려면 lighting=nighttime 같은 안정적인 필드가 필요하거든요. 이게 “데모”와 “쓸 수 있는 도구”를 가르는 지점이에요.

## 핵심 포인트

- 2021년형 M1 Max 맥북 64GB RAM에서 Gemma 4 31B Q4를 LM Studio로 로컬 실행함
- 피크 시점에 스왑이 50.89GB까지 올라갔지만 영상 설명 사이드카를 계속 생성함
- 각 클립마다 ffprobe, exiftool, Nominatim, ffmpeg, WhisperX, insightface, 비전 모델을 거치는 파이프라인을 구성함
- 중앙 DB 대신 영상 옆에 .description.md 사이드카를 두어 grep 가능하고 이동에도 강한 구조를 택함
- AI 영상 편집 도구들은 라벨이 이미 붙은 영상을 가정하지만, 실제 병목은 라벨 없는 아카이브를 먼저 색인화하는 데 있었음

## 인사이트

로컬 LLM 활용 사례 중에서 꽤 현실적인 편임. 모델 성능 자랑보다 ‘어떤 레이어를 자동화해야 일이 실제로 풀리는가’를 보여줘서, 개발자들이 자기 업무 자동화 설계를 할 때 참고할 만함.
