<p align="center"><img src="https://raw.githubusercontent.com/Shaitrish/37studio/HEAD/brand/37studio-mark.svg" width="72" alt="37Studio"></p>
<h1 align="center">37Studio</h1>
<p align="center"><b>사용자 컴퓨터에서 실행되는 AI 비디오 스튜디오 및 소셜 미디어 데스크입니다.</b><br>
월별 요금 청구 없이 자체 키를 사용하여 제작, 게시 및 응답하는 비디오.</p>
<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-d4502a" alt="MIT License"></a>
<a href="https://studio.shaitrish.com"><img src="https://img.shields.io/badge/website-studio.shaitrish.com-1f1c27" alt="Website"></a>
<img src="https://img.shields.io/badge/runs%20on-Windows%20%C2%B7%20macOS%20%C2%B7%20Linux%20%C2%B7%20cloud-555" alt="Windows, macOS, Linux, cloud">
<img src="https://img.shields.io/badge/docker-amd64%20%C2%B7%20arm64-2496ed" alt="Docker image for amd64 and arm64">
</p>
<p align="center">
<a href="https://studio.shaitrish.com/#intro"><b>▶ 인트로 비디오 시청하기</b></a> ·
<a href="https://studio.shaitrish.com/setup">설정 가이드</a> ·
<a href="https://github.com/Shaitrish/37studio/issues">이슈</a> ·
<a href="https://studio.shaitrish.com/donate">기부하기</a>
</p>
37Studio in 14 seconds: one person, many clients, every Page posted
The project page: the editor agent's chat beside a live preview of a reel
37Studio는 사용자의 컴퓨터에 있는 단일 앱에서 비즈니스를 위한 비디오를 제작하고 소셜 계정을 운영합니다. 웹사이트에서 브랜드를 추가하면 브랜드 라이브러리와 지식 기반을 구축합니다. 비디오 개요(Brief)를 작성하면 에디터 에이전트인 Claude Code가 해당 브랜드 내에 [HyperFrames] 구성을 만들어내고, 자체 프레임을 확인한 후 사용자의 기기에서 렌더링합니다. 각 플랫폼에 맞는 캡션을 추가하여 브랜드 계정에 게시할 수 있으며, 즉시 또는 예약/자동 파일럿(Autopilot)으로 설정 가능합니다. 메시지와 댓글은 하나의 받은 편지함에 도착하며, 지식 기반을 바탕으로 답장이 초안 작성됩니다.
사용자가 직접 API 키를 가져와서(Claude 플랜 또는 Anthropic API 키; 선택적으로 OpenAI, xAI, OpenRouter 또는 OpenCode를 다른 에이전트 모델용으로, 이미지 및 비디오는 Gemini 또는 fal.ai로, 음성은 ElevenLabs로) 제공업체에 직접 비용을 지불합니다. 모든 프로젝트에서는 AI 사용 비용이 기본적으로 USD 기준으로 표시됩니다. 37Studio는 MIT 라이선스 하에 무료 오픈 소스로, 다카에 위치한 소프트웨어 팀인 Shaitrish에서 제작했습니다.
주요 기능 (What it does)
-
웹사이트 또는 폴더 기반 브랜드 라이브러리: URL을 붙여넣거나 브랜드 자체 프로젝트 폴더를 선택하면, 로고, 인물 사진, 일반 사진, 글꼴(폰트), 정확한 색상 등이 분류되고 캡션이 지정되며, 디자인 시스템(design.md)과 지식 기반(knowledge.md)까지 제공받을 수 있습니다.
-
에디터 에이전트: Claude Opus 5.5는 각 비디오를 애니메이션 HyperFrames 컴포지션으로 구축하고, 자체 프레임을 점검하며, 일반적인 언어로 변경 사항을 받아들입니다. 원하는 경우 실제 타임라인에서 직접 편집할 수 있습니다.
-
다양한 출력 종류: 릴스(reels), 자막 클립, 모션 그래픽 설명 영상, 팟캐스트 클립, 홍보 광고, 정사각형 및 세로 게시물, 그리고 썸네일 등 다양한 결과물을 만들 수 있습니다. 완성된 비디오는 다음 작업을 위한 템플릿으로 저장할 수 있습니다.
-
긴 녹화본을 여러 비디오로: 2시간짜리 수업 영상이 열 개의 릴스로 변환됩니다. 전사(Transcription) 작업은 faster-whisper를 사용하여 로컬에서 실행되며, 무료이고 개인 정보 보호가 가능하며 약 100개 언어를 지원합니다. YouTube 및 Google Drive 링크를 직접 가져올 수 있습니다.
-
생성 미디어: Gemini 이미지를 활용하거나, Gemini 또는 fal.ai를 통해 Seedance, Kling, Veo, Wan 등에서 비디오 클립을 얻고, ElevenLabs 음성 녹음, 효과음 및 음악을 사용할 수 있습니다. 이 에이전트는 한 프로젝트의 미디어 비용이 '설정(Settings) → 지출(Spending)'에서 설정된 한도를 초과하는지 사전에 묻고, 여러 샷에 걸쳐 하나의 참조 이미지를 재사용하여 인물이나 제품의 일관성을 유지합니다. 에이전트는 영상 및 브랜드 라이브러리만으로는 작업을 수행할 수 없을 때만 이를 사용하며, 무엇을 생성했는지 알려줍니다.
-
게시 및 자동 운행(Autopilot): 9개 플랫폼 중 원하는 조합에 맞춰 브랜드 계정에 게시하거나 스케줄링할 수 있으며, 콘텐츠 계획이 각 슬롯 전에 새로운 비디오를 만들고 원클릭 승인을 기다리도록 할 수도 있습니다.
-
단일 인박스(One inbox). 고객의 언어로 초안이 작성되며, 브랜드 자체 규칙을 따르는 메신저, 인스타그램 및 왓츠앱 메시지, 그리고 페이스북 및 인스타그램 댓글 관리가 가능합니다. 기능은 브랜드별로 '승인 대기 초안' 또는 '완전 자동화' 방식으로 설정할 수 있습니다.
-
어시스턴트와 MCP. 사이드바의 어시스턴트와의 채팅을 통해 모든 것을 실행하거나, 사용자의 AI 에이전트(Claude Code, Claude Desktop, Cursor)를 통해 37Studio의 MCP 서버에서 브랜드, 캠페인, 비디오, 게시물 발행, Autopilot, 설정 및 연결 등 모든 작업을 처리할 수 있습니다.
-
실제 비용. 모든 프로젝트, 캠페인, 브랜드별 AI 지출액이 사용자의 통화로 표시됩니다. 가산세는 없으며, Anthropic, Google, ElevenLabs에 직접 비용을 지불합니다.
모든 것이 사용자 컴퓨터 또는 자체 서버에서 단일 Docker 컨테이너 내에서 실행됩니다. 영상 자료, 브랜드 정보 및 메시지는 그곳에 보관되며, API 키와 플랫폼 자격 증명은 디스크에 암호화됩니다.
| 플랫폼 | 게시물 발행 | 인박스 | 연결 방식 |
|---|
| Facebook Pages | 릴스 및 페이지 비디오 | 메신저, 댓글 | 자체 Meta 앱을 통한 페이스북 로그인 |
| ... | | | |
| 불가능한 플랫폼: Threads (API가 공개 URL의 비디오만 받기 때문에 로컬 우선(local-first) 앱에서는 지원 불가), 페이스북 그룹 및 개인 프로필 (Meta에서 제거됨), Reddit 및 Snapchat (사용 가능한 공개 비디오 게시 API 없음). 각 플랫폼별 설정 방법: 소셜 게시물 발행. | | | |
빠른 시작(Quick start)
Docker Desktop(Windows 10 또는 11의 WSL 2, Intel 또는 Apple Silicon용 macOS) 또는 Docker Engine(Linux), RAM 16GB 및 최소 20GB의 여유 디스크 공간, 그리고 Claude 플랜 또는 Anthropic API 키가 필요합니다.
컴퓨터에서: 준비된 앱
- Docker Desktop을 설치하고 한 번 실행합니다.
- 37studio.zip를 다운로드하여
Documents/37Studio와 같이 보관할 폴더에 압축을 풉니다.
start.bat(Windows) 또는 start.command(Mac; 처음 실행 시 마우스 오른쪽 버튼 클릭 → 열기), 또는 ./start.sh(Linux)를 실행합니다.
런처는 Docker를 시작하고 최신 이미지(최초 실행 시 약 3GB)를 다운로드한 다음, http://localhost:8080에서 앱을 열어줍니다. 이 주소는 사용자의 로컬 컴퓨터에서 오는 연결만 허용합니다. 이후의 모든 시작은 먼저 업데이트 여부를 확인합니다. 작업 파일은 런처 옆에 있는 data 폴더에 저장되므로 백업해 두십시오. Windows, Mac, Linux 환경별 상세 단계는 설정 가이드를 참고하십시오.
소스 코드로부터 실행하기 (From source)
git clone https://github.com/Shaitrish/37studio.git && cd 37studio
cp .env.example .env
docker compose up --build
...
- 에이전트 권한 (Agent permissions). 소스 코드로부터 실행하는 경우, 에이전트는 기본적으로 화이트리스트(
safe: 파일 편집, ffmpeg, npx hyperframes, 37studio 및 기본적인 셸 명령어 일부)를 사용합니다. 다만, .env 파일에 STUDIO37_AGENT_PERMISSIONS=bypass를 설정하면 컨테이너 내부의 모든 명령을 실행할 수 있게 됩니다. 런처와 클라우드 파일은 '바이패스(bypass)'로 설정되어 있는데, 이는 컨테이너 자체가 샌드박스 역할을 하기 때문입니다. safe 모드는 실수로 에이전트가 임의 코드를 실행하는 것을 방지하지만, 이것이 보안 경계는 아닙니다. 에이전트는 환경 변수에 있는 AI 키와 /data 폴더의 파일에 접근할 수 있으며, ffmpeg와 WebFetch는 인터넷에 접속할 수 있습니다. 이 화이트리스트에는 Claude Code 실행이 포함되며, OpenCode 실행은 자체 권한 설정을 따릅니다.
- Windows. WSL 2 백엔드를 사용하는 Docker Desktop을 사용하십시오.
./data 아래의 영상 파일(Footage)은 바인드 마운트(bind mount) 방식이므로, 수 GB에 달하는 파일을 다룰 때는 C:\ 대신 WSL 파일 시스템(\wsl$\...) 내부에 저장소를 유지하는 것이 좋습니다.
핫 리로드(hot reload) 기능을 사용하여 코드를 작업하려면 CONTRIBUTING.md를 참조하십시오.
클라우드에서 실행하기 (Run it in the cloud)
팀이 공유하거나, 노트북을 잠가도 Autopilot 및 자동 응답 기능이 계속 작동해야 할 때 서버에 배포하여 실행할 수 있습니다. docker-compose.cloud.yml은 Caddy 뒤에서 앱을 실행하며, Caddy가 도메인에 대한 HTTPS 인증서를 자동으로 가져오고 갱신합니다.
서버 설정(Server). 16GB의 RAM을 갖춘 Linux VPS이며 (권장), 최소 4개 이상의 vCPU가 필요합니다: 렌더링 및 전사(transcription) 작업은 CPU에서 실행되므로 코어 수가 많을수록 속도가 빨라집니다. 이미지, 영상 소스(footage), 그리고 렌더 결과물을 위해 디스크 공간으로 50GB 이상을 할당해야 합니다. amd64와 arm64 서버 모두 작동합니다.
-
도메인에 대한 DNS A 레코드 (그리고 서버가 IPv6를 지원하는 경우 AAAA)를 해당 서버로 지정합니다. 예를 들어 studio.example.com과 같습니다.
-
Docker를 설치합니다: curl -fsSL https://get.docker.com | sh.
-
서버의 방화벽(및 클라우드 제공업체의 방화벽이 있는 경우)에서 TCP 포트 80, 443 및 3100–3109를 열어줍니다.
-
compose 파일을 가져오고 그 옆에 .env 파일을 생성합니다:
mkdir 37studio && cd 37studio
curl -fsSLO https://raw.githubusercontent.com/Shaitrish/37studio/main/docker-compose.cloud.yml
printf 'STUDIO37_DOMAIN=studio.example.com\nSTUDIO37_PASSWORD=%s\n' "$(openssl rand -base64 24)" > .env
...
-
https://studio.example.com을 열고 아무 사용자 이름과 비밀번호로 로그인합니다. **설정(Settings) → 키(Keys)**에서 Claude 키를 추가합니다 (구독 토큰의 경우, docker compose -f docker-compose.cloud.yml exec studio claude setup-token 명령어를 실행하세요).
서버에서 다른 점은 다음과 같습니다:
-
비밀번호(Password). 클라우드 파일은 STUDIO37_PASSWORD가 없으면 시작할 수 없습니다. 이 비밀번호는 모든 페이지, API 호출 및 타임라인 에디터에서 HTTPS를 통해 HTTP basic auth 방식으로 작동합니다. 길고 무작위적인 비밀번호를 사용하고, 에이전트(agent)와 신뢰하는 사람에게만 공유하세요 (다음 항목 참조).
-
에이전트 권한(Agent permissions). 클라우드 파일은 STUDIO37_AGENT_PERMISSIONS=bypass로 설정하며, 이는 런처(launcher)와 같습니다. 즉, 에이전트는 컨테이너 내부에서 모든 명령을 실행할 수 있습니다. 따라서 로그인할 수 있는 사람은 누구나 거기서 명령을 실행하고, /data에 있는 모든 브랜드의 파일을 읽고, 인터넷에 접속할 수 있게 됩니다. 이 컨테이너는 비특권 사용자(unprivileged user, uid 1000)로 실행되며, Docker 소켓이나 ./data를 넘어서는 호스트 파일에는 접근할 수 없습니다. 대신 allowlist를 사용하려면 compose 파일에서 해당 줄을 safe로 변경하세요. 이렇게 하면 allowlist 외의 명령은 거부되지만, 이 역시 일부 작업이 차단될 수 있습니다. 이는 에이전트가 실행하는 범위를 좁히지만, 여전히 로그인할 수 있는 사람은 에이전트를 조종할 수 있으므로, 어쨌든 비밀번호는 컨테이너 내 모든 것에 대한 접근 권한으로 취급해야 합니다.
-
로그인 리디렉션(Sign-in redirects). 클라우드 파일은 STUDIO37_PUBLIC_URL=https://<your domain>으로 설정하므로, 각 플랫폼에 대해 https://<your domain>/api/oauth/<platform>/callback을 등록해야 합니다. TikTok의 경우 Web 플랫폼을 사용하세요.
-
타임라인 에디터(Timeline editor). UI는 각 프로젝트의 에디터를 페이지 자체 주소의 3100부터 3109 포트 사이에서 열어줍니다 (https://studio.example.com:3100, ...). Caddy는 동일한 인증서로 해당 포트에 HTTPS를 제공하고 이를 앱의 같은 포트로 전달하므로, 포트만 열리면 에디터가 작동합니다. 브라우저는 다른 포트는 다른 사이트로 간주하기 때문에 처음에는 비밀번호를 다시 요청할 것입니다. 최대 10개의 에디터를 한 번에 열 수 있습니다. 만약 이 포트들을 여는 것이 꺼려진다면, 다른 모든 기능은 정상적으로 작동하므로 에이전트와 채팅하여 변경 사항을 적용하세요.
-
업데이트(Updates). 사이드바에서 새 버전 출시 시점을 알려줍니다. 이후 다음 명령어를 실행하세요: docker compose -f docker-compose.cloud.yml pull && docker compose -f docker-compose.cloud.yml up -d
-
백업(Backups). 모든 것은 ./data에 저장됩니다: 데이터베이스, secret.key(내부 키를 복호화하는 파일), 브랜드 파일, 푸티지 및 비디오입니다. 이 데이터베이스는 WAL 모드의 SQLite를 사용하므로, 앱을 중지한 상태에서 복사하거나 전체 디스크를 스냅샷으로 찍어야 합니다:
docker compose -f docker-compose.cloud.yml stop studio
tar czf 37studio-$(date +%F).tgz data
docker compose -f docker-compose.cloud.yml start studio
이 아카이브에는 플랫폼 토큰과 키가 포함되어 있으므로, 반드시 사적인 곳에 보관해야 합니다. 에이전트 채팅 세션은 `claude-home` 볼륨에 저장되며, 이전 채팅을 재개하는 데만 필요합니다.
런처와 클라우드 파일은 `latest` 이미지를 사용하므로, 재시작 시 앱이 업데이트될 수 있습니다. 업데이트를 선택할 때까지 특정 릴리스에 머무르려면, `latest`를 해당 버전(`ghcr.io/shaitrish/37studio:0.5.0`) 또는 다이제스트(digest)로 대체하십시오.
서버에서 자체 체크아웃으로 이미지를 빌드하려면, 레포지토리를 클론하고 `docker-compose.cloud.yml` 파일의 `image:` 줄을 `build: .`로 대체하십시오.
## 첫 단계