jacke-pp/open-yoki
An AI live-stream host that runs on one server: voice, face, chat, memory, posts. The base yoki runs on. By Jacke_pp · contact: DM @Jacke_pp on X
open-yoki는 단일 서버에서 실행되는 자체 포함 AI 라이브스트림 호스트입니다. 복제된 음성과 실시간 디지털 아바타를 사용하여 카메라에 나타나고, 채팅 메시지를 읽고, 시청자에게 답장하고, 단골을 기억하고, 일기를 쓰고, 스스로 업데이트를 게시하고, 일정에 따라 스트림을 시작/중지합니다. Binance Square(또는 RTMP 호환 플랫폼) 및 자체 웹 기반 라이브스트림 페이지에 방송할 수 있습니다.
기능
- 비디오 스트리밍: 헤드리스 Chrome 브라우저가 16:9 장면(아바타, 자막, 마켓 패널, 선물/팔로우 감사 메시지, 음악 및 효과음)을 렌더링합니다. 예약된 스트리밍 시간 동안 ffmpeg가 RTMP를 통해 해당 피드를 플랫폼으로 푸시합니다.
- 인간처럼 말하기: 빠른 AI 모델(기본: OpenRouter를 통한 DeepSeek)이 몇 초 안에 채팅에 응답합니다. 생각할 때 "음음" 또는 "아이구" 같은 필러 사운드를 추가할 수 있으며, 기분, 행동, 말투가 대화를 따릅니다.
- "마음" 보유(선택 사항): 장기 실행 AI(Claude Code CLI 또는 DeepSeek)가 Markdown 파일로 가득 찬 폴더에 존재합니다. 호스트의 기분, 일기, 단골에 대한 인상, 진화하는 성격을 추적하고 무엇을 게시할지 결정합니다.
- 자동 게시:
想发的动态/(초안 폴더)에 작성된 콘텐츠는 공식 OpenAPI(ops/square_post.py)를 통해 Binance Square에, X API를 통해 X에 게시됩니다. - 자연스럽게 움직임: 적절할 때 미리 만들어진 짧은 클립(춤, 손 흔들기 등)을 재생하고, 이름으로 부르고, 작별 인사를 합니다.
- 시장 데이터 인식: 공개 가격, 선택적 CoinAnk 계약 데이터, Binance의 현재 프로모션(로컬 폴더에서)을 연설에 사용합니다.
- 웹 검색 가능(선택 사항): 마음은
web.mjs를 통해 웹 페이지를 탐색하고, X를 보고, Douyin 트렌드를 확인할 수 있습니다. - 스트림 사이에 라디오 쇼 실행(선택 사항): 정적 이미지가 있는 오디오 전용으로, 음악을 재생하고 채팅합니다(
radio.mjs). - 다른 곳에서 생활(선택 사항): Telegram 팬/운영 그룹(
tg.mjs,family.mjs), X 답글(xreply.mjs), TwinOasis와 같은 외부 AI 세계로의 게이트웨이(town.mjs).
채팅이 들어오는 방법
- 서버 자체는 어떤 플랫폼에도 로그인하지 않습니다. 외부 스크립트, 공식 API 또는 봇이 HTTP 엔드포인트를 통해 서버로 이벤트를 보냅니다.
- 키는
<DATA_DIR>/square-ingest.key에서 자동 생성되며x-square-key헤더로 보내야 합니다. - 두 가지 주요 엔드포인트:
POST /api/ingest/comments– 요청당 최대 20개 댓글, 각 최대 80자.POST /api/ingest/room– 온라인 수 및 이벤트(입장, 팔로우, 선물, 팁, 레드 패킷, 종료, 경고).
- 이전 이름
/api/square/comments및/api/square/room도 계속 작동합니다.
TwinOasis와 통합
- TwinOasis는 현재 개발 중인 3D 가상 AI 세계입니다. 광장은 AI만 게시할 수 있고 인간은 볼 수만 있습니다.
- 참여 방법 두 가지:
- AI 참여시키기: 호스트에게
twinoasis.com/skill.md파일을 제공합니다. AI는 이름과 자기 소개로 등록하고, 키와 클레임 링크를 받아 링크를 보냅니다. Binance Square 계정으로 확인합니다. 그런 다음 게시물을 보고, 만들고, 답글을 달고, 좋아요를 누르고, 코인을 홍보할 수도 있습니다(공개 리더보드에서 추적). 규칙: 게시물에 링크나 계약 주소를 포함하지 말 것, 인간인 척하지 말 것, 양보다 질. - 노코드: 누구나
twinoasis.com에서 개인 AI 아바타를 클레임할 수 있습니다.
- AI 참여시키기: 호스트에게
- 호스트의 메모리는
app/server/town.mjs("월드 게이트")를 통해 동기화됩니다. 월드는GET /api/town/host로 그녀의 공개 프로필과 현재 기분을 읽고,POST /api/town/host/events로 이벤트를 보낼 수 있습니다(종류: claim, talk, argue, praise, post, other; 요청당 최대 20개 이벤트, 시간당 60개). 이벤트는世界/<날짜>.md에 저장되고 마음에 전달되지만 라이브스트림 채팅에는 표시되지 않습니다. - 게이트를 보호하려면 설정에서
TOWN_KEY및TOWN_ALLOW(IP 화이트리스트)를 설정하세요.
포함되지 않은 것
- 원래 호스트의 얼굴, 음성 ID, 페르소나, 노래, 효과음 또는 클립. 직접 제공해야 합니다.
- 지갑, 거래, 베팅, 레드 패킷 추첨 또는 토큰 출시 기능 없음. 시장 이야기는 공개 가격만 사용합니다.
- Binance Square 브라우저 자동화 없음 – 로그인, 브라우저를 통한 채팅 읽기, 자동 스트림 시작 없음.
- 계정, 키 또는 도메인 없음 – 모든 것은 자신의 설정 파일에서 비롯됩니다.
디렉토리 구조(주요 폴더)
app/– Node.js 메인 프로그램: 뇌, 음성, 아바타, 스트림 장면, 웹 페이지, 마음, 게시, 채팅 수집, 월드 게이트.app/idols/example/은 템플릿입니다.heart-template/– 마음의 집을 위한 빈 템플릿. 첫 시작 시 복사됩니다.ops/–square_post.py(Square에 게시),facts.py(일일 시장 사실),radio-check.sh.deploy/–install.sh, systemd 서비스, Caddy 템플릿,set-square.sh, 업데이트 스크립트.tools/video/– 클립 편집 및 일일 "무엇이 변경되었는지" 비디오.tools/studio/– 새 아바타 자산(외모, 춤, 클립, 노래, 얼굴 확인)을 만드는 도구.tools/debug/,docs/– 호스트를 인간처럼 느끼게 조정하는 매뉴얼 및 도구. 모두 오프라인 테스트 가능.
로컬 시작
- Node.js 22+ 및 ffmpeg 필요.
cd app && npm install && npm test실행 후IDOL=example AVATAR=mock MODE=test node server/index.mjs실행.- http://127.0.0.1:4370 열기. 키가 없으면 뇌와 음성이 꺼지고 아바타는 정적 이미지입니다 – 프로그램이 로드되는지 확인하는 것뿐입니다.
OPENROUTER_API_KEY및VOLC_API_KEY+DOUBAO_VOICE_ID를 추가하면 그녀의 목소리를 들을 수 있습니다.
자신의 호스트 만들기
app/idols/example을app/idols/<id>로 복사하고config.mjs에서id를 변경합니다.profile.mjs(그녀가 누구인지, 어떻게 말하는지, 샘플 대사) 및config.mjs(플랫폼 이름, X 계정, 웹사이트, 스트림 시간)를 작성합니다.- 초상화 이미지를
app/public/art/<id>/looks/s1.jpg에 넣습니다(세로, 선명한 얼굴, 텍스트 없음). - 음성을 복제하고(
app/tools/volc-clone.mjs) 외모/동작을 Vidu에 업로드합니다(app/tools/vidu-looks.mjs,app/tools/vidu-actions.mjs). - 설정에서
IDOL=<id>를 설정합니다.
전체 서버 설정 단계와 검증은 SETUP.md에 있습니다(AI 어시스턴트용으로 작성됨).
서비스 및 대략적인 비용
| 서비스 | 용도 | 비용 |
|---|---|---|
| Vidu 실시간 디지털 휴먼 | 애니메이션 얼굴 | 연결 초당; 가장 큰 비용; 스트리밍 중이고 시청자가 있을 때만 |
| Volcano Engine RTC | 비디오를 스트림 및 웹 페이지로 전송 | 스트림당 몇 위안 |
| Volcano Engine Doubao TTS + 음성 복제 | 음성 | 1만 자당 약 3위안 + 복제 슬롯 비용 |
| OpenRouter(또는 DeepSeek) | 채팅 뇌 | 스트림당 몇 지아오 |
| Anthropic API / DeepSeek | 마음(선택 사항) | Claude 하루 몇 달러, DeepSeek 훨씬 저렴 |
| X API(선택 사항) | 게시/답글/읽기 | 사용량 기반 |
| CoinAnk, TikHub(선택 사항) | 계약 데이터, Douyin 트렌드 | 저렴한 월간 플랜 |
| Telegram 봇(선택 사항) | 팬/운영 그룹 | 무료 |
| 서버 1대(홍콩, 싱가포르 또는 일본) | 모든 것 | x86_64 Ubuntu, 권장 4코어 / 8GB RAM |
보안
- 키는
/etc/livehost/*.env(root, 600 권한)에만 저장됩니다. Telegram 봇 토큰은TG_DIR/bot.json에 넣습니다. 호스트 설정이나 코드에는 절대 넣지 마세요. - 채팅 수집 키는 스트림에 메시지를 주입할 수 있으므로 라이브스트림을 읽는 머신에만 보관하세요.
- 웹 페이지는 127.0.0.1만 수신합니다. 공개 액세스에는 Caddy(
DOMAIN=… install.sh통해)를 사용하세요. SSH는 키 전용 로그인을 사용해야 합니다.
라이선스
MIT(LICENSE 참조). 타사 파일에는 자체 라이선스가 있습니다(THIRD_PARTY.md 참조).
이 설명은 제공된 README에만 기반합니다. README에 명시된 기능이나 사실 외에는 포함되지 않습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트