Claude Code로 구동되는 오픈소스 하늘 카메라를 만들었습니다. 토요일 밤에 유성 17개를 포착해서 일어나기 전에 분류까지 끝냈네요.
I built an open source sky camera that Claude Code can actually run. Saturday night it caught 17 meteors and had them sorted before I woke up.
핵심 요약
Claude Code를 활용해 유성을 자동으로 감지하고 분류하는 오픈소스 하늘 카메라 시스템을 구축했습니다.
- 자동화된 유성 감지 — 4K 카메라 영상을 분석해 유성, 비행기, 새 등을 자동으로 분류함
- Claude Code 연동 — MCP 서버를 통해 Claude가 워크플로우를 제어하고 모델을 재학습함
- 서버 측 가드레일 — 프롬프트가 아닌 서버 수준에서 안전 장치를 구현해 오작동을 방지함
- 오픈소스 프로젝트 — 카메라 감지 및 도구 모음이 깃허브에 공개되어 누구나 설치 가능함

하늘 카메라로 유성을 찾는답시고 밤새 찍힌 영상 수 시간씩 돌려보고, 프레임 일일이 따서 라벨링하고, 모델 재학습시키고, 별만 보이면 죄다 유성이라고 띄우는 거 때문에 매번 처음부터 다시 하느라 진짜 골치 아팠거든. 그래서 Claude가 그 짓을 대신하게 하려고 openskycam을 만들었어.
이건 4K 카메라로 하늘을 24시간 내내 녹화해서 네 디스크에 저장해 주는 놈이야. 워크플로우가 프레임을 샘플링하고, 탐지 모델을 돌리고, 탐지된 것들을 추적(움직이는 거 vs 고정된 거)으로 연결한 다음, 유성, 비행기, 고정된 불빛 같은 버킷으로 분류해. 웹사이트에서 하는 모든 작업은 API 호출로도 가능하고, MCP 서버도 있어서 Claude Code가 이 모든 걸 다 조종할 수 있어.
Claude가 하는 일
- 야간 워크플로우를 만들었는데, 이제 영상이 들어올 때마다 매일 밤 자동으로 돌아가.
- 뭐가 찍혔는지 검토하고, 탐지된 것들을 하나씩 보면서 승인하거나 거절해.
- 모델이 자꾸 별을 비행 물체라고 우겨대길래, 내가 승인한 탐지 결과들로 데이터셋을 만들어서 재학습시켰어. 학습 안 했던 날에도 별 때문에 오작동하는 비율이 절반에서 7%까지 줄었고, 유성 탐지율은 여전히 90%를 유지해.
- 매일 아침 쓰레기 같은 건 다 버리고 괜찮은 것들만 나한테 문자로 보내줘. 구름 낀 밤에는 눈치껏 아무 말도 안 하고 조용히 있어.
Claude Code와 잘 돌아가게 만든 비결
MCP 서버가 자체 가이드랑 스킬(워크플로우 만들기, 탐지 결과 찾기, 변경 사항 검증하기)을 내장하고 있어서, Claude는 내 프롬프트가 아니라 서버에서 규칙을 배워.
안전장치도 프롬프트가 아니라 서버에서 강제로 걸어놨어. 키 생성 권한이 있는 키는 없고, 삭제할 때는 미리보기를 보여주고 확인을 받아야 하며, 편집할 때도 최신 버전을 덮어쓰는 대신 실패하게 만들어 놨지.
설치는 사람 손 안 거치고도 가능해. npm run setup -- --yes를 치면 .env에서 필요한 걸 다 읽어오고, 설정이 빠진 게 있으면 딱 멈춰서 알려줘. Cloudflare 터널이랑 로그인 앱, API 키 만드는 건 사람이 직접 해야 하지만 말이야.
아키텍처 검사 기능인 make check는 Claude가 코드를 엉뚱한 레이어에 처박으면 바로 실패를 띄워버려.
영상은 밤 9시 30분부터 다음 날 오후 6시까지 돌아가. 밤새 찍힌 모든 유성이랑 비행기를 4K 카메라 원본 영상이랑 같이 보여주고, 낮에는 새가 찍히면 분홍색 점으로 표시해 줘. 10번 탐지될 때마다 실제 새 사진을 확대해서 보여주기도 하고. 마지막엔 전체 기록을 한 프레임에 담은 요약이랑 차트 몇 개로 마무리돼.


