TG Canvas Mini App

🖼️ Telegram Mini App 动态画布 · 白名单安全管控

Telegram Mini App 专属画布,支持 agent 推送 HTML/Markdown 内容,通过 Telegram initData 认证+用户白名单管控访问,loopback 限制推送接口,适合私域展示 AI 生成内容。

收藏
5.7k
安装
1.6k
版本
0.1.3
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

tg-canvas 是一个 Node.js 服务器 skill,用于在 Telegram Mini App 中渲染 agent 生成的 HTML、Markdown 或 A2UI 内容。它包含三个核心组件:HTTP/WebSocket 服务器 (server.js)、命令行工具 (bin/tg-canvas.js) 和 Mini App 前端 (miniapp/)。

工作流程
1. 部署后通过 Cloudflare 隧道暴露 HTTPS 端点

2. 用户通过 Telegram Bot 的菜单按钮进入 Mini App

3. 前端提交 initData/auth 端点,服务端验证 HMAC-SHA256 并检查用户 ID 是否在 ALLOWED_USER_IDS 白名单中

4. 认证成功后下发 JWT,后续 WebSocket 或轮询获取内容状态

5. Agent 通过本地回环地址调用 POST /push 或 CLI tg-canvas push 实时更新画布内容

显著优点

  • Telegram 原生集成:利用 Mini App 框架,无需额外客户端,用户体验流畅
  • 双重安全边界:Telegram initData 签名验证 + 用户白名单,防止未授权访问
  • 本地化推送防护/push/clear/health 等管理端点强制绑定 127.0.0.1/::1,TCP 层拦截,无法通过 HTTP 头伪造(如 X-Forwarded-For)绕过
  • 实时更新:WebSocket 长连接实现内容秒级同步
  • 多格式支持:原生 HTML、Markdown 转译、A2UI JSON 结构化渲染

潜在缺点与局限性

  • 部署复杂度高:依赖 Node.js + Cloudflare 隧道(或自有 HTTPS 反向代理),需要 Telegram Bot 配置和域名管理
  • 单实例架构:无内置持久化与横向扩展方案,重启后画布内容丢失(内存存储)
  • 网络依赖:Cloudflare 隧道稳定性直接影响可用性,部分地区可能存在连接问题
  • 调试门槛:Telegram Mini App 需 HTTPS,本地开发需隧道工具,调试链路较长

适合人群

  • 已向 Telegram 生态投入的开发者或团队
  • 需要为特定用户群(白名单)私域展示动态 AI 内容的场景
  • 对实时推送有需求,且能接受自托管运维成本的用户

常规风险

  • JWT 泄露:若 JWT_SECRET 强度不足或泄露,攻击者可伪造会话令牌访问状态端点
  • BOT_TOKEN 泄露:可能导致攻击者伪造 Telegram 验证响应(虽 initData 签名仍需 Telegram 服务器密钥,但 Bot API 滥用风险存在)
  • Cloudflare 隧道中间人:隧道 URL 若被猜测或泄露,攻击者可尝试访问公开端点(但 /auth 白名单仍提供防护)
  • 本地推送绕过风险:若服务器被入侵,攻击者可直接调用回环地址推送恶意内容,需配合 PUSH_TOKEN 纵深防御

TG Canvas Mini App 内容

bin文件夹
miniapp文件夹
scripts文件夹
手动下载zip · 17.5 kB
tg-canvas.jstext/javascript
请选择文件