클로드코드 · 커서에
Sidekit 을 붙이기

에이전트는 머리, Sidekit 은 몸. 에이전트가 Sidekit 의 도구를 직접 불러 로그인된 진짜 크롬에서 읽고·누르고·캡처하고·녹화하고·영상을 받습니다. 결과는 파일로 돌아오니 에이전트가 스스로 검증합니다.

지금 되는 것 · 다음 판

솔직한 현재 위치

지금 v0.7.3

MCP 로 한 줄 연결

Sidekit 은 MCP 서버(app/mcp/server.js)를 같이 줍니다. 클로드코드는 claude mcp add sidekit -- node …/mcp/server.js 한 줄, 커서는 .cursor/mcp.json 한 토막. 그러면 sidekit_read_screen · sidekit_click · sidekit_screenshot · sidekit_save_video … 가 에이전트의 네이티브 도구로 보이고, 캡처는 이미지로 바로 옵니다. 앱이 안 떠 있으면 서버가 제어 모드로 띄웁니다.

그 밑은 127.0.0.1 에 열쇠가 걸린 제어 통로입니다. 명령줄 sk.js 로 직접 두드려도 됩니다. 지금은 소스 실행(개발 모드)에서 통로가 열립니다.

다음 판 준비 중

배포본 토글 · 주도권 · 절차

배포본에서도 설정 화면의 토글 하나로 통로를 켭니다. 에이전트가 붙어 있는 동안 Sidekit 자체 루프·예약은 그 탭을 건드리지 않습니다(주도권 잠금). 성공한 작업은 절차로 저장돼 다음부터 에이전트 없이 반복됩니다.

붙이기 — MCP

한 줄

소스 폴더가 있으면 됩니다(Node·Chrome). 설치 명령은 node app/mcp/server.js --print-config 가 경로를 채워 찍어 줍니다.

# 클로드코드 claude mcp add sidekit -- node "<소스 경로>\app\mcp\server.js" # 커서 — .cursor/mcp.json { "mcpServers": { "sidekit": { "command": "node", "args": ["<소스 경로>\\app\\mcp\\server.js"] } } } # 그다음은 그냥 시키면 된다. 도구는 sidekit_ 로 시작한다. "사이드킥으로 이 페이지 캡처해서 저장해줘" → sidekit_status → sidekit_save_screenshot "이 유튜브 영상 받아줘" → sidekit_find_media → sidekit_save_video

앱이 안 떠 있으면 MCP 서버가 제어 모드로 스스로 띄웁니다. 안 띄우게 하려면 SIDEKIT_NO_AUTOSTART=1. 코딩 에이전트 셸의 ELECTRON_RUN_AS_NODE 함정도 서버가 처리합니다.

붙이기 — 명령줄 (MCP 없이)

세 줄로 시작

MCP 를 못 쓰는 환경이나 손으로 검사할 때. 소스 폴더 app/ 에서.

# 1. 제어 모드로 띄운다 (이미 떠 있으면 그대로) node dev/up.js # 2. 붙었나 node dev/sk.js state # 3. 도구를 모델 없이 직접 — 비용 0 node dev/sk.js nav https://example.com node dev/sk.js tool read_screen node dev/sk.js tool save_screenshot --name 검사 --fullPage node dev/sk.js tool record_screen --seconds 6 --wait node dev/sk.js tool find_media --waitMs 4000 node dev/sk.js tool save_video --url <m3u8 · mp4 · 유튜브 페이지 주소> --waitSec 60 # 모델을 끼워 진짜 흐름으로 (Sidekit 계정의 월 한도를 씁니다) node dev/sk.js ask "지금 화면 캡처해서 저장해줘" # 코드를 고쳤으면 / 끝나면 node dev/up.js --restart node dev/up.js --quit

VS Code 확장 안의 터미널은 ELECTRON_RUN_AS_NODE=1 이 걸려 있어 electron 을 직접 부르면 안 뜹니다. up.js 가 지우고 띄웁니다.

에이전트에게 주는 말

붙여 넣을 프롬프트

클로드코드·커서 새 세션의 첫 메시지로 이 블록을 통째로 주면 됩니다. 마지막 줄에 시킬 일을 적으세요.

Sidekit 앱을 직접 조종해서 검사해줘. - 앱 폴더: <소스 경로>\app (여기서 명령을 돌린다) - 띄우기: node dev/up.js (고쳤으면 --restart, 끝나면 --quit). electron 을 직접 부르지 마라. - 붙었나: node dev/sk.js state - 도구를 모델 없이 직접(비용 0): node dev/sk.js tool <도구> --인자 값 read_screen · click --text "글자" · type --text "…" --into "css" · scroll --dy 800 save_screenshot --name 검사 --fullPage · record_screen --seconds 6 --wait find_media --waitMs 4000 · save_video --url <주소> --waitSec 60 · downloads - 모델을 끼운 진짜 흐름(꼭 필요할 때만): node dev/sk.js ask "…" - 결과 파일은 %USERPROFILE%\Downloads\Sidekit\. PNG 는 열어 눈으로 확인하고, mp4 는 ffmpeg -ss 3 -i 파일 -frames:v 1 out.png 로 프레임을 뽑아 본다. - 검사 전에 node dev/sk.js eval "innerWidth+'x'+innerHeight" 로 크롬 창 크기가 정상인지 본다. - 검사용 파일은 이름에 "검사" 를 붙이고 끝나면 지운다. 검사할 것: <시나리오>
도구

에이전트가 부를 수 있는 것

Sidekit 자체 모델이 쓰는 도구와 같습니다. 이름과 인자는 앱과 서버가 함께 정의합니다.

묶음도구
화면 읽기·조작read_screen click type/write_text scroll press navigate wait_for analyze_page page_source collect_list extract_table fill_fields find_editor select_option ask_pick
탭list_tabs activate_tab open_tab read_tab
보기·남기기screenshot(에이전트가 보는 용) save_screenshot(파일) record_screen record_stop record_status
동영상find_media save_video video_status video_cancel get_ffmpeg get_ytdlp
파일download downloads save_file upload_file
작업공간·기억·예약ws_save ws_find ws_read ws_list remember recall forget schedule
확인창·감시·채팅dialogs dialog_policy dialog_answer watch_start watch_stop watch_status collect reply_chat
실측

클로드코드가 이 방식으로 한 것 (2026-09)

동영상 저장 기능 개발 · 검증

임베드 HLS 를 다른 출처 iframe 에서 잡고 쿠키·Referer 를 실어 403 없이 저장. 유튜브는 후보가 안 잡히는 원인을 코드에서 찾아 yt-dlp 경로를 만들고, 1분 34초 영상을 23초에 1080p+음성으로 받는 것까지 확인.

캡처·녹화 기능 개발 · 검증

전체 페이지 캡처(1920×6315), 6초 녹화 mp4(스크롤 동작 포함)를 도구로 직접, 그리고 프롬프트만 주고 Sidekit 자체 루프가 record_screen → scroll → record_stop 을 잇는 것까지 확인.

서버 · 배포까지

도구 정의와 안내문을 서버에 얹고 배포하고, 헬스와 도구 수를 다시 확인. 사람이 패널을 누른 일은 없었습니다.

배운 것

싼 모델은 유튜브에서 19걸음을 맴돌았습니다. 처음 보는 일은 큰 모델이, 풀린 일은 싼 모델이 — 이 분업이 다음 판(절차 저장)의 이유입니다.

몸이 필요하신가요

앱을 받고, 소스 폴더에서 node dev/up.js. 에이전트에게 위 프롬프트를 주면 됩니다.

⬇  다운로드 (Windows)