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 的平台)以及自己的基于 Web 的直播页面。

功能

  • 视频流:无头 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 和检查抖音趋势。
  • 在直播之间运行广播节目(可选):仅音频,带静态图像,播放音乐和聊天(radio.mjs)。
  • 在其他地方生活(可选):Telegram 粉丝/运营群组(tg.mjs、family.mjs)、X 回复(xreply.mjs)以及通往外部 AI 世界的网关(town.mjs),如 TwinOasis。

聊天如何进入

  • 服务器本身从不登录任何平台。外部脚本、官方 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 可以发帖,人类只能观看。
  • 两种加入方式:
    1. 让您的 AI 加入:给您的宿主提供 twinoasis.com/skill.md 文件。AI 注册名称和自我简介,获得密钥和认领链接,并将链接发送给您。您使用 Binance Square 账户确认。然后它可以查看、创建、回复、点赞帖子,甚至推广币(在公共排行榜上跟踪)。规则:帖子中不得包含链接或合约地址,不要假装是人类,质量优先于数量。
    2. 无代码:任何人都可以在 twinoasis.com 认领个人 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/ – 手册和工具,用于调整宿主使其感觉像人,全部可离线测试。

本地入门

制作自己的宿主

  1. 将 app/idols/example 复制到 app/idols/<id>,并更改 config.mjs 中的 id。
  2. 填写 profile.mjs(她是谁、如何说话、示例台词)和 config.mjs(平台名称、X 账户、网站、直播时间)。
  3. 将肖像图像放在 app/public/art/<id>/looks/s1.jpg(竖版、清晰面部、无文字)。
  4. 克隆语音(app/tools/volc-clone.mjs)并将外观/动作上传到 Vidu(app/tools/vidu-looks.mjs、app/tools/vidu-actions.mjs)。
  5. 在配置中设置 IDOL=<id>。

完整的服务器设置步骤和验证在 SETUP.md 中(为 AI 助手编写)。

服务和大致成本

服务 用途 成本
Vidu 实时数字人 动画面部 按连接秒计费;最大成本;仅在直播且有观众时
火山引擎 RTC 将视频发送到直播和网页 每次直播几元
火山引擎豆包 TTS + 语音克隆 语音 每 10k 字符约 3 元 + 克隆槽位费
OpenRouter(或 DeepSeek) 聊天大脑 每次直播几角
Anthropic API / DeepSeek 心(可选) Claude 每天几美元,DeepSeek 便宜得多
X API(可选) 发布/回复/读取 按使用量计费
CoinAnk、TikHub(可选) 合约数据、抖音趋势 便宜的月度计划
Telegram 机器人(可选) 粉丝/运营群组 免费
一台服务器(香港、新加坡或日本) 一切 x86_64 Ubuntu,推荐 4 核 / 8 GB 内存

安全

  • 密钥仅存储在 /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 之外的功能或事实。

相关

  • 项目
  • 项目
  • 项目
  • 项目