Communitygithub.com

reolink/reolink-cli

Reolink IP 카메라, 초인종 및 NVR을 위한 공식 명령줄 도구로, LAN 전용이며 클라우드가 필요 없습니다. 스냅샷, PTZ, RTSP/RTMP 스트림 URL, 양방향 오디오(talkback/TTS), 모션 및 AI 감지, 이벤트 모니터링, VOD 다운로드를 지원합니다. JSON 출력과 내장 MCP 서버를 제공하며, Home Assistant, Frigate 및 go2rtc와 함께 작동합니다.

reolink-cli란 무엇인가요?

이 스킬은 Reolink IP 카메라, 초인문, NVR을 위한 공식 명령줄 도구인 `reolink-cli`를 완전히 제어할 수 있게 해줍니다. LAN 전용으로 작동하며 클라우드 의존성이 없어 로컬 환경에서 지연 시간을 최소화하고 데이터 주권을 보장합니다. 주요 기능은 스냅샷 캡처, PTZ 제어, RTSP/RTMP 스트림 URL 검색, 양방향 오디오(talkback/TTS), 모션 및 AI 객체 감지, 이벤트 모니터링, VOD 다운로드 등입니다. 모든 명령은 JSON 형식으로 출력되며, 내장 MCP(Master Control Program) 서버를 통해 외부 애플리케이션(브라우저, curl 등)에서도 REST API로 접근할 수 있습니다. 이 스킬은 Claude Code, Codex, Cursor, Copilot, Gemini 등 다양한 AI 에이전트 플랫폼에서 최적화되어 있습니다. Claude Code 환경에서는 미리 정의된 슬래시 명령(`/reolink-cli:status`, `/reolink-cli:scan` 등)을 우선 사용하여 LLM 지연 시간을 줄이고 결정적 동작을 보장합니다. 다른 플랫폼에서는 동등한 `reolink-cli ...` CLI 명령을 직접 실행합니다. '문자가 감지되면 알림'과 같은 복합적이거나 모호한 의도는 스킬 기반 명령어 체이닝으로 처리됩니다. 게이트웨이는 대부분의 제어 명령에 필수적이며, 기본적으로 `127.0.0.1:9000`에서 실행됩니다. 게이트웨이가 없어도 디바이스 추가, 검색, 캐시 정리 등 로컬 설정이나 네트워크 직접 통신 명령은 작동합니다. 에러는 CLI와 게이트웨이에서 각각 표준 형식으로 반환되며(성공 시 `{ok: true}`, 실패 시 `{ok: false}`), `references/` 디렉토리에는 작업별 레시피와 문제 해결 가이드가 마련되어 있습니다. 주의할 점은 지원되지 않는 명령이나 절전 모드인 배터리 카메라는 400 오류를 반환할 수 있으므로, `capabilities` 명령으로 실제 기능을 확인해야 합니다.

지원 대상✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI
npx skills add reolink/reolink-cli

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

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

문서

Reolink 카메라 운영자

개요

주요 인터페이스: reolink-cli (기본 JSON stdout). 요청받지 않는 한 MCP 서버를 시작하지 마십시오. 사용자에게 CLI가 아닌 접근(브라우저, curl, 다른 언어)이 필요하면 게이트웨이의 POST /api를 안내하십시오.

슬래시 명령 (Claude Code 전용) — 고정/단일 액션 의도에는 이를 선호하고, 의도 매핑 오버헤드를 피하십시오:

슬래시동등 명령사용 시점
/reolink-cli:statusreolink-cli status사용자가 현재 상태 / 대시보드 / "어떻게 되어가나"를 물을 때
/reolink-cli:featuresreolink-cli features사용자가 플러그인이 무엇을 할 수 있는지 / "무엇을 할 수 있나"를 물을 때
/reolink-cli:scanreolink-cli discover로컬 네트워크 스캔 / "스캔"
/reolink-cli:devicesreolink-cli device list등록된 카메라 목록
/reolink-cli:cache-cleanreolink-cli cache clean dry-run→apply오래된 스냅샷 제거 / "캐시 지우기"
/reolink-cli:updatereolink-cli self-update최신 릴리스로 업그레이드 (GitHub 확인, 현재 버전이면 무효)
/reolink-cli:uninstallreolink-cli setup --uninstall --purge --no-interactive완전 제거

Claude Code 런타임: 사용자의 의도가 위의 7가지 중 하나와 정확히 일치하면 반드시 슬래시 명령을 사용해야 합니다. 더 빠르고(LLM 지연 시간 없음), 결정적이며, / 자동 완성으로 검색 가능합니다.

다른 에이전트 (Codex / Cursor / Copilot / Gemini): 이러한 플랫폼은 플러그인 정의 슬래시 명령을 지원하지 않으므로 "슬래시 우선" 규칙이 적용되지 않습니다. 바로 동등한 reolink-cli … CLI 명령을 실행하십시오. 스킬 기반 의도 매핑이 나머지를 처리합니다.

모든 에이전트: 위의 슬래시 목록/7가지 고정 액션으로 처리되지 않는 복합/모호한 의도("사람이 감지되면 알림", "더 밝게 해줘")는 스킬 기반 CLI 체이닝으로 대체하십시오.

대부분의 제어 명령에는 게이트웨이가 필수입니다. CLI는 기본적으로 127.0.0.1:9000을 통해 라우팅됩니다(플랫폼 설정 디렉토리 아래 config.toml에 gateway-addr로 설정 — Linux: ~/.config/reolink-cli/config.toml, macOS: ~/Library/Application Support/reolink-cli/config.toml, Windows: %APPDATA%\reolink-cli\config.toml). gateway connect failed: Connection refused 메시지가 보이면 게이트웨이가 실행 중이지 않은 것입니다 — 한 번 시작하십시오:

reolink-cli gateway start --addr 127.0.0.1:9000 &

게이트웨이 없이 작동: device add|list|update|remove|resolve|show, config init, discover, features, doctor, cache status|clean — 로컬 설정을 읽거나 네트워크에 직접 연결하는 모든 명령입니다. (게이트웨이 없이 각각 실행하여 확인 완료.) 나머지(ping, login, info, config get/set, image, osd, ptz, detect, light, audio, preview, snapshot, vod, events, users, system reboot, system upgrade)는 게이트웨이가 실행 중이어야 합니다.

응답 래퍼 — CLI에서는 .ok, 게이트웨이에서는 .status를 파싱하십시오:

인터페이스성공에러
CLI{ok:true, command, protocol, data}{ok:false, error:{code, message, retryable}} (stderr)
CLI 배치{command, summary, results:[{camera, host, ok, data, error}]}대상별 ok
게이트웨이 /api{status:"success", data}{status:"error", code, message} (HTTP status == code)

references/에는 주제별 레시피 파일이 있습니다. 작업과 일치하는 파일만 로드해야 합니다 — references/index.md가 라우터입니다. references/troubleshooting.md에는 실패에 대한 진단 의사 결정 트리가 있습니다.

실제 근거 (바인딩)

다음을 사실로 진술하거나 암시하는 것은 금지됩니다: 장치 접근성, 로그인 상태, 설정 값, 기능, 감지/AI 유형, 이벤트 수, VOD 파일 존재 여부, 사용자 계정 또는 관찰 가능한 카메라 상태 — 단, 현재 작업 내에서 실행된 reolink-cli 명령 또는 게이트웨이 POST /api 응답의 JSON 출력에서 파생된 경우는 예외입니다.

금지: 데모 스타일 목록, 추측 레이아웃, 합성 값, 오류/시간 초과 후 가짜 성공, 실제 응답 없이 CLI 출력을 흉내내는 일반 텍스트/JSON, 또는 get/info/inventory/capabilities를 실행하지 않고 "장치에 X가 있습니다"라고 말하는 것.

데이터가 누락된 경우 반드시: 무엇이 누락되었고 그 원인(등록된 카메라 없음, 게이트웨이 다운, 인증 실패, 장치 오프라인)을 진술한 후, 하나의 구체적인 복구 단계(에러 복구 표에서)를 수행하거나 하나의 명확한 질문을 하십시오. 그럴듯해 보이는 기본값으로 채우는 것은 금지됩니다.

의도 해석

명령을 선택하기 전에 모호성을 해결하십시오. 여전히 불명확하면 옵션과 함께 질문하십시오.

사용자 발화명령이유 / 주의 사항
사용자 추가users add장치 계정, CLI 카메라 항목이 아님
카메라 추가device addCLI 카메라 항목(~/.config/reolink-cli/aliases.toml), 장치 계정이 아님
비밀번호 변경users passwd (기본) 또는 device update (CLI 자격 증명)어느 쪽인지 질문
깜박이는 불light statusled본체 LED
야간 투시경light ir보이지 않는 IR LED
스포트라이트light spotlight (수동) 또는 light whiteled (알람 트리거)동일한 전구, 다른 배선
너무 어두움먼저 image tune --bright, 밤이면 light ir get 확인이미지 튜닝, 스포트라이트 아님
거꾸로image flip set --flip수직
좌우 반전image flip set --mirror수평
마스크privacy mask먼저 현재 영역 읽기
이름 변경osd set --name (화면 표시) 또는 config set device-name (앱)어느 쪽인지 질문
재시작 / 리부트system reboot30~60초 오프라인
업그레이드 / 펌웨어 플래시 / OTAsystem upgrade <file.pak>⚠️ 벽돌 위험. info로 모델+hw_ver 확인; 게이트웨이가 로컬 파일을 읽음; 자동 윈도우/stop-and-wait. 자세한 내용은 references/admin.md
공장 초기화— 독립 실행형; system upgrade --factory-reset은 플래시 중에 리셋독립 실행형 리셋은 CLI에 없음; 사용자에게 Reolink 앱 사용 요청
추방users remove (영구) 또는 users passwd + system reboot (세션 종료)활성 세션은 users remove 후에도 재부팅까지 유지됨
스냅샷snapshot [--file PATH]JPEG. 상위 디렉토리는 바이너리(v0.5.0부터)가 자동 생성하므로 대상 디렉토리를 mkdir -p로 미리 만들지 마십시오. vod download 및 preview capture --file도 동일합니다.
느림 / 얼마나 걸리나 / 시간 / 성능 / 지연 시간 / 벤치마크benchmark [--iterations N] [--phases ...] [--reuse-session]단계별 p50/p95/p99: 연결, 로그인, 정보, 스냅샷. --reuse-session은 warm-path용. 자세한 내용은 references/index.md.
CPU / 메모리 / 장치 부하 / 카메라 과부하 / 끊김config get performance장치의 실시간 판독값: cpuUsedPercent, codeRate, netDataRate. 읽기 전용이며 즉각적 — 1초 간격의 두 호출은 정당하게 다를 수 있음. 모든 모델이 구현하는 것은 아니며, 구현된 모델은 장치 수준의 거부를 응답함. 클라이언트 왕복 시간을 측정하는 benchmark와는 다릅니다.
rtsp / rtmp / flv 주소 / 스트림 URL / HA / Frigate / go2rtc / VLCstream url [--kind rtsp,rtmp,flv] [--stream main,sub,ext] [--with-auth]기본값 --kind rtsp --stream main. --with-auth는 사용자가 명시적으로 한 번 붙여넣기용 URL을 원할 때만 사용. NVR: device expand 후 --tag <nvr>. 자세한 내용은 references/media.md.
8채널 NVR / RLN 하위 카메라 / 채널 N`device expand [--yes--names A,B,C]`
명령 거부 400 / "모델이 지원하지 않음" / 허브의 배터리 카메라 / 일시 중지 후 첫 명령아무것도 하지 않음 — 게이트웨이가 이미 재시도합니다. 응답의 attempts가 몇 번째 시도에서 성공했는지 알려줍니다(일시 중지 후에는 3이 정상, 연속 사용 중에는 1)허브 뒤의 배터리 자식 장치는 절전 모드로 전환된 후 명령을 지원되지 않는 것과 구별할 수 없는 bare 400으로 거부합니다. 절전 모드가 언제 시작되는지는 유휴 시간만으로 예측할 수 없으므로(어느 날은 ~2분, 나중에는 더 긴 시간 동안 깨어 있음) 미리 대비하려 하지 마십시오. 일관된 점은 절전 중인 카메라는 깨우는 데 평균 3번의 시도(~1.6초)가 필요하며, 거부된 요청 자체가 깨우기 신호라는 것입니다. 예산 내에서도 계속 실패하면 info → channel.loginState = standby가 설명하지만 — 이 필드는 지연되어 실패를 설명할 뿐, 미리 확인하는 데 사용할 수 없습니다.
듀얼 렌즈 / 두 개의 렌즈 / 하나의 카메라에 총+PTZ / 광각과 망원 / 두 번째 렌즈먼저 info (channel.views, channel.dualLens), 그런 다음 설정 명령에 --view N 사용--view는 세 번째 축입니다: --channel은 카메라를 선택하고, --view는 렌즈를 선택하며, --stream은 해당 렌즈의 인코딩 프로필을 선택합니다. 뷰별 확인 완료: encode, privacy mask, detect motion, PTZ. 뷰별 아님: snapshot(뷰≥1에서 400 응답), preview/stream url(프로토콜에 선택자가 없음 — 이제 --view N을 조용히 무시하는 대신 거부), 이미지/ISP(공유). 기본값 0 = 일반 카메라의 유일한 뷰입니다.
미리보기 / 한번 보기 / N분 보기 / 실시간 보기preview play (ffplay 창 열림)기본값은 play, capture가 아닙니다. 사용자는 파일이 아닌 실시간 창을 원합니다.
N초 녹화 / 클립 저장 / 저장preview capture --packets ≈N×25사용자가 명시적으로 저장/녹화/내보내기를 말할 때만. 패킷 수, 초가 아님; ~25fps 메인, ~10fps 서브
60초 미리보기 (모호함!)사용자가 "N초/분 동안 미리보기"라고 말하면 → preview play --packets N×fps. 사용자가 "N초 녹화"라고 말하면 → preview capture. 정말 불명확하면 물어보십시오.동사가 "미리보기/보기"이면 play, "녹화/저장/내보내기"이면 capture를 기본값으로 합니다.
볼륨audio volume set (마스터)음소거를 의미하는지 물어보십시오: audio mute
알람 음소거audio mute알람 오디오만, 미리보기는 아님
사이렌 / 알람 소리 / 알람 울리기 / 쫓아내기 / 경고음 울리기**`audio siren play [--duration N--times N] [--wait]`**
무장 / 해제 / 외출 / 귀가 / 나가요 / 장면 모드 / 내가 있을 때 녹화 중지scene set <id> (scene list로 id 확인, scene set --schedule로 시간표로 돌아가기)허브/NVR 전용. 하나의 스위치가 모든 채널을 재무장합니다 — 카메라별 감지 설정에는 영향을 주지 않습니다. 먼저 scene show: currentSceneId 0은 시간표가 작동 중임을 의미합니다. 자세한 내용은 references/scene-mode.md.
해상도 / 비트레이트 / fps / 프레임 속도 / h265 / h264 / 스트림 품질 / 스트림 줄이기**`encode set --stream mainsub
사람 감지detect ai --type person먼저 device inventory --capabilities 확인
차량detect ai --type vehicle모든 모델 아님
녹화 켜기record schedule set --enable
녹화 설정 / 녹화 매개변수 / 사전 녹화 초 / 클립 크기record config get읽기 전용; 주기 / 사전/사후 녹화 / 패키지 시간
SD 카드 / 저장 카드 / 용량 / 여유 공간storage status읽기 전용; totalGB / remainGB / formatted / mounted
수동 녹화 / 지금 녹화 / 녹화 시작—Reolink IPC에서는 지원되지 않음; record schedule set --enable/--disable로 대체
어제 다운로드 / 녹화 다운로드vod search --since 24h → vod download NAME
09:45–09:55 다운로드 / 해당 클립만 / 시간 범위vod download --from 2026-09-02T09:45:00 --to 2026-09-02T09:55:00카메라 측 절단 — 전체 시간을 다운로드하여 자르지 마십시오
알람 / 오늘 알람events query --since 24h게이트웨이 필요
라이브 버퍼보다 과거 이벤트 기록 / 지난 주에 무슨 일이 있었나 / 허브 이벤트 로그--channel N events history --since 7d [--types people,motion] (허브/NVR 전용)장치의 기록된 이벤트 로그(cmd 516/517)를 읽으며, ~500개 항목 라이브 링 버퍼가 아닙니다. 독립형 IPC는 400. 빈 목록 = 일치하는 이벤트 없음; 허브는 과도한 사용 후 잠시 조용해질 수 있으므로 잠시 후 재시도하십시오.
음성 알림 / 음성 안내 / 누군가 도착하면 알림 / 사람이 감지되면 음성 재생audio talk (references/voice-alert.md 참조)PCM16 LE 모노만; capabilities.audioTalk=1 필요
X 감지 시 Y 수행 / 자동화 / 이벤트 트리거 / 감지 후 수행반드시 TOML 규칙과 함께 events monitor init/check/run을 사용하십시오. 임시 while + events query 루프는 금지 — references/event-monitor.md 참조.
모니터가 실행 중인가 / 규칙이 실행되었나 / 모니터 상태 / 최근 실행된 것events monitor status (pid + cursor + lastFires + 규칙별 expired/secondsRemaining) 또는 events monitor history --last N [--rule NAME] [--since 30m]재시작 없이 실행 중인 데몬을 검사합니다. 필터는 --last 전에 적용되므로 --rule watch --last 20은 해당 규칙의 마지막 20번 실행이며, 전역 꼬리에서 살아남은 것이 아닙니다.
이 카메라 감시events monitor init [...]TOML 규칙 파일 생성/검증; 자세한 내용은 references/event-monitor.md

(번역 참고: 원문이 중간에 잘려서 나머지 내용이 없습니다. 잘린 부분이 있으면 추가 번역이 필요합니다.)

관련 스킬