时间
类别
Select All
Videos
Shorts
Country
Select All
US
BR
ID
TH
VN
Other ▾
游戏
Select All
SLG Strategy
Casual Casual
RPG RPG
MOBA
FPS / TPS Shooting
Sandbox Sandbox
Cloud Gaming Cloud Gaming
Other Others
达人
Select All
Review/Analysis
Tutorial/Guide/Play
Highlights/Clips
News/Commentary
本周入库
0
建联漏斗
0
初次建联
0
Opened
0
Replied
启动合作
0
Total Subscribers量
0
库内All达人
Country来源 Top 5
按入库达人数量
订阅段分布
达人数量 × 订阅量级
0
1万-10万
0
10万-50万
0
50万-100万
0
100万-500万
0
500万+
Engagement Rate × View Rate气泡图
气泡大小 = Subscribers;颜色区分内容Type
Videos
Shorts
达人分层归属
按内容Type分类,决定投放优先级
来源Type
长Videos为主
主池
Shorts占比 < 30%
0 位达人
占库内 0%
来源Type
Shorts 为主
Shorts 池
Shorts占比 > 70%
0 位达人
占库内 0%
来源Type
混合 / 低活跃
低健康
Last 30d发布 < 2条
0 位达人
占库内 0%
total 0 creators
Outreach Status
All0
Not Contacted0
Sent0
Opened0
Replied0
In Collaboration0
Declined0
Import Source
Videos0
Shorts0
Content Direction
SLG Strategy0
休闲游戏0
RPG RPG0
MOBA0
FPS / TPS0
Sandbox Sandbox0
云游戏0
Other0
Creator Type
Review/Analysis0
Tutorial/Guide/Play0
Highlights/Clips0
News/Commentary0
Other0
Selected 0
Channel Country Import Source Content Direction Creator Type Subscribers Engagement Rate View Rate Import Date Email Emails Sent
YouTube 达人筛选
Videos / Shorts 双模式 · Local Storage · 参数可实时调整
API 设置
💡 每日免费Quota 10,000 单位,太平洋时间 00:00 重置。12Keyword×4页约 5,800 单位。
API 调取流程 & Quota Usage明细
Step API 端点 Quota/次 Channel A Channel B Description
1.搜索收集 videos.list
(chart=mostPopular)
1/页 4~8 Channel A:获取地区热门游戏Videos
1.搜索收集 search.list
(type=video)
100/页 1200~4800 Channel B:Keyword搜Videos
2.粗筛Channels channels.list 1/50Channels ≈3~4 ≈6~12 批量获取订阅/Country,淘汰50-70%
3.深入分析 playlistItems.list 1/Channels ≈1/Channels ≈1/Channels 仅Pass粗筛的Channels
3.深入分析 videos.list 1/Channels ≈1/Channels ≈1/Channels 获取播放/点赞/评论/品牌合作
Channel A 总计(热门扫描) ≈300~500 4页热门≈8 + Channels处理≈300~400
Channel B 总计(Keyword搜索) ≈3,000~6,000 12Keyword×4页≈4800 + Channels处理
💡 粗筛流程:Subscribers → 注册Country(空值放行)→ 游戏Type(topicDetails,空值放行)→ 仅Pass者进入深入分析
筛选参数
· Channels语言影响搜索结果相关性排序
· 注册Country为注册时填写的Country信息
· 此Fields由创作者自行填写,可能与所在地Mismatch
💡 搜索通道Description
🔥 Channel A(热门Videos扫描):直接获取目标地区当前热门游戏Channels的Videos,regionCode 地区过滤有效,无需Keyword,Quota Usage极低(约 408 单位),适合快速摸底热门达人。覆盖约 150-200 个Channels。
🔍 Channel B(Keyword精准搜索):按Keyword搜索Videos,FromVideos中提取Channels信息,精准度高但Quota Usage大(约 5,224 单位),适合垂直领域深挖。搜索阶段 regionCode 对Keyword搜索无效。
建议:先跑Channel A快速覆盖热门达人,再跑Channel B精准深挖,结果自动去重合并。两个通道同时只能运行一个。
📊 数据分析基数
所有数据分析基数为 maxResults = 50条 Videos,已过滤掉 Shorts(≤60秒)
暂无搜索记录
0
已扫描
0
Passed
0
Does not match
0
有合作记录
0
Quota Usage
实时日志
Passed (0) Does not match (0) All (0)
# Channel Name Subscribers 均播 View Rate Engagement Rate 最新发布 Country Email Keyword 品牌 状态
No Data
转化率参数设置 (修改后自动重算)
点击用户 = 均播 × 点击率
下载量 = 点击用户 × 下载率
总效果 = 下载量 × 单价
建议金额 = 总效果 × 风险区间
点击用户 = 均播 × 点击率 → 下载量 = 点击用户 × 下载率 → 总效果 = 下载量 × 单价 → 建议合作金额 = 总效果 × 风险区间
含Email达人:0  ·  已勾选:0
勾选后邮件会同时发送To测试Email
# Channel Name Subscribers 近10条均播 Engagement Rate Email 来源 状态 建议合作金额 (USD)
暂无达人数据,请先在Creator DB选择达人后点击「Initiate Outreach」
📧 邮件工作区域
📮 腾讯企业Email SMTP 未连接
🏢 服务器:smtp.exmail.qq.com  ·  Port:465(SSL)
请在企业Email「设置 → 客户端设置」开启 SMTP,使用授权码登录
🔍 自建邮件追踪(可选) 未启用
启用自建邮件追踪
邮件仍Pass腾讯企业Email SMTP 发送。
开启后,自建Tracking Service将为每封邮件注入追踪标识,实时记录打开与点击行为。
📮 腾讯 SMTP 发送 🔍 自建追踪层
已Close
✏️ 邮件模板Edit
邮件正文 · [Creator Name] 占位符将在发送时自动替换

Hi [Creator Name],

I've been watching your game videos, and I really love your content style and energy.

We're looking for creators like you to make a paid gameplay / review video for our mobile game—Starparks.

What we offer:

  • Full creative control (keep your own style)
  • Free game support
  • No strict script

If you're interested, I can send you the full collaboration details right away.

Best regards,
Kxun
CEO
300 LIVE

📤 邮件发送
📮
SMTP 直发(腾讯企业Email)
邮件将Pass腾讯企业Email SMTP 直接发送,不含追踪Feature
0
待发送
0
Success
0
Failed
就绪,请勾选目标达人后发送
📊 自建追踪投递统计 Analytics
📊
自建追踪未启用
开启上方「自建邮件追踪」并完成配置后,此处将显示数据
📅 Send History(按日期)
暂无Send History
📧 邮件预览
主题
正文
账号
API 配置
数据刷新
邮件工具
通知
成员管理
API 配置
YouTube Data API Key
用于Channels数据抓取,每日Quota 10,000 units
每日刷新比例
库内存量达人每日刷新的比例
刷新时间(UTC)
每日自动刷新执行时间
Quota监控
Quota预警阈值
Cost超过此比例时发送通知
禁用 search.list
强制禁用高Cost端点(100u/次)
邮件工具同步
Webhook URL
邮件工具推送Outreach Status变更的地址
自动同步
打开/回复状态自动更新ToCreator DB
时区
所有时间戳以此时区为准
系统方案 · Storage
存储集中化方案 — 将所有存储From本地分散统一迁移至腾讯云 PostgreSQL
规划中
一、现有存储全景图
腾讯云服务器(mailer300 / 43.130.49.17)
服务 Port 存储位置 Type 数据量
ai.300live.com 前端443/var/www/ai-tools/ + localStorage静态HTML + 浏览器存储1.4M
storage-api(Creator DB代理)3082/var/www/storage-api/outreach.dbSQLite20K
email-server(Email Outreach)3080/var/www/youtube-tools/email-server/data.dbSQLite4K
track-server(邮件追踪)3081/opt/track-server/track.dbSQLite4K
youtube-storage3082/var/www/youtube-tools/data/*.jsonJSON文件(30天清理)4.8M
langdetect 模型/home/ubuntu/langdetect/lid.176.bin二进制模型125M
Mac Mini(Tailscale: 100.68.146.94)
gamecreator-hub :3000 — PostgreSQL Creator DB核心数据,当前 13达人记录
⚠ Mac Mini 是Creator DB唯一数据源,腾讯云 storage-api Pass Tailscale 内网代理访问
MacBook 本地(浏览器 localStorage,29处读写)
gchub_creators
Creator DB本地缓存
gchub_outreach
Outreach Status追踪
email_send_history
邮件Send History
email_api_token
邮件服务认证
gchub_channel_videos
ChannelsVideos缓存
YouTube API Quota
Quota追踪
服务器资源概览
mailer300 · 43.130.49.17 · Intel Xeon E5-26xx v4 · 2 vCPU
2026-04-23 快照
磁盘 50 GB
Used 9.8G · 可用 38G
19.6%
日志 732M langdetect 126M email-tracking 62M storage-api 29M youtube-tools 45M track-server 19M ai-tools 3M Other ~8.8G
内存 1.9 GiB
Used 504Mi · 可用 1.2Gi · 缓存 1.3Gi
26%
gamecreator-hub
86M
track-server
72M
email-server
72M
storage-api
72M
PM2 daemon (root)
73M
PM2 daemon (ubuntu)
69M
PostgreSQL live300db · 13 MB
16 张表
user_settings
3.2M
filter_results
240K
sent_emails
112K
creators
96K
open_events
80K
Other 11 张表
336K
二、集中化迁移方案(5 个阶段)
Week 1 阶段一:PostgreSQL 部署 + Mac Mini 迁移(最高优先级)
1.1 腾讯云安装 PostgreSQL,创建 300live_db 数据库和用户
1.2 Mac Mini 导出 gamecreator-hub PostgreSQL 数据 → pg_dump → scp 传输To腾讯云
1.3 腾讯云执行 pg_restore 导入Creator DB数据
1.4 gamecreator-hub 部署To腾讯云,修改 .env 指向本地 PostgreSQL
Week 2 前半 阶段二:SQLite → PostgreSQL 迁移
300live_db 建立统一表结构:sent_emails / webhook_events / open_events / click_events / tracked_links / outreach_replies / youtube_filter_results
编写 Node.js 迁移脚本逐一迁移 4 个 SQLite DB + JSON 文件数据
迁移前备份所有 SQLite 文件(改名 .bak),迁移后校验行数
Week 2 后半 阶段三:后端服务改造
storage-api:移除 Mac Mini 代理,直接连接本地 PostgreSQL
email-server:移除 better-sqlite3,改用 pg 驱动
track-server:移除 better-sqlite3,改用 pg 驱动
youtube-storage:JSON 文件读写改为 youtube_filter_results 表(保留30天清理逻辑)
Week 3 前半 阶段四:前端 localStorage 上云
gchub_creators
高优 → 实时查询API
gchub_outreach
高优 → outreach API表
email_send_history
中优 → sent_emails表
email_api_token
中优 → 服务端session
gchub_tag_params
低优 → 保留本地
gchub_filter_history
低优 → 保留本地
Week 3 后半 阶段五:Nginx 配置调整 + 清理
api.300live.com proxy_pass From Tailscale 100.68.146.94 改指向 127.0.0.1:3000
合并重复服务:track-server / email-tracking / youtube-storage-server / storage-api 各保留一个
清理 Mac Mini Tailscale 依赖,确认无服务依赖后可下线
三、迁移后目标架构
腾讯云 mailer300(43.130.49.17)
├── Nginx :443
│ ├── ai.300live.com → /var/www/ai-tools/
│ ├── api.300live.com → 127.0.0.1:3000 (本地,不再走Tailscale)
│ ├── youtube.300live.com → :3080 / :3082
│ └── track.300live.com → :3081
├── gamecreator-hub :3000(本地部署)
└── PostgreSQL :5432 — 300live_db
    ├── creators(Creator DB)
    ├── sent_emails / webhook_events
    ├── open_events / click_events / tracked_links
    ├── outreach_replies
    └── youtube_filter_results
Mac Mini → 可下线(不再被任何服务依赖)
四、风险评估 & 回滚方案
风险 影响 缓解措施
PostgreSQL 迁移数据丢失迁移前备份所有 SQLite 文件,迁移后校验行数
Mac Mini 下线导致服务中断先在腾讯云并行运行,验证后再切换 Nginx
localStorage 数据未同步保留 localStorage 作为降级方案,渐进迁移
50G 磁盘空间不足当前Used 9.3G,PostgreSQL + 数据预估 < 2G,风险低
并发写入冲突SQLite 原为单写,PostgreSQL 并发支持更好
回滚方案:每个阶段保留原始文件和配置 — SQLite DB 文件改名 .bak,Nginx 配置备份后修改,Mac Mini 服务在完全验证前不停止。
系统方案 · 多重语言校对
Comment 语言校验 — 服务端检测方案(v2)
规划中
一、架构概览
浏览器前端                 腾讯云服务器                                    外部
───────────               ────────────────                                  ─────
                            ┌─ gamecreator-hub (:3000)
点击"Comment Lang Verify" ──→ │  POST /api/lang-check                  │
                            │    1. 调 YouTube API 取评论        │──→ YouTube Data API v3
                            │    2. 调 Python fasttext 检测语言 │
                            │    3. 60%规则判定 → 写PG + 返回 │
                            └────────────┬───────────────────┘
                                           │
                                  PostgreSQL
                                comment_lang / lang_verified_at
核心变化:YouTube API 调用 + 语言检测All在服务端完成,前端只发一个请求。API Quota:12 units / 次
二、语言判定规则(核心)
条件 comment_lang 值 前端显示
某语言占比 > 60%该语言代码(如 th、en)Country代码右侧显示 ✅ th
无语言超 60%Country代码右侧显示 ✅ ❓
无评论 / 评论ClosenullCountry代码右侧显示
未校验null(lang_verified_at 也为空)Country代码右侧无任何标识
TH Channels,评论70%泰语 → TH ✅ th
US Channels,45%英语+40%西语 → US ✅ ❓
JP Channels,未校验 → JP
KR Channels,评论被Close → KR —
三、数据库变更
-- creators 表新增两列
ALTER TABLE creators ADD COLUMN comment_lang text;
ALTER TABLE creators ADD COLUMN lang_verified_at timestamptz;
Type Description
comment_langtextnull=未校验或无评论;语言代码=超60%;❓=无语言超60%
lang_verified_attimestamptz最近一次校验时间,null=未校验
四、后端新增 API(gamecreator-hub :3000)
4.1 下载 fasttext 模型
cd /var/www/gamecreator-hub
wget -q https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin \
     -O /var/www/gamecreator-hub/lid.176.bin
4.2 Python 语言检测脚本(/var/www/gamecreator-hub/lang_detect.py
#!/usr/bin/env python3
import sys, fasttext
model = fasttext.load_model('/var/www/gamecreator-hub/lid.176.bin')
for line in sys.stdin:
    t = line.replace(' ',' ').strip()
    if t:
        pred = model.predict(t, k=1)
        print(pred[0][0].replace('__label__',''))
    else: print('und')
4.3 POST /api/lang-check — 处理流程
请求体:{ "channelId": "UCxxxxxx", "apiKey": "AIzaSy..." }
① channels.list → uploadsPlaylistId② playlistItems → 最近10个VideosID③ commentThreads → 各3条(共30条)④ fasttext检测⑤ 60%规则判定 → 写PG
4.4 返回格式
{ "channelId": "UCxxxxxx",
  "comment_lang": "th",
  "lang_verified_at": "2026-04-23T12:00:00Z",
  "detail": { "totalComments":30, "langDistribution":{"th":22,"en":5,"ko":3},
             "topLang":"th", "topLangRatio":0.73, "rule":"th 73% > 60% → th" } }
4.5 异常情况
• 评论Close / 0评论 → comment_lang = nulllang_verified_at = now()
• YouTube API 报错 → HTTP 500 + 错误信息
• PUT /api/creators allowed 扩展:增加 comment_lang, lang_verified_at
五、前端变更
5.1 新增Button
在「Remove」Button后新增 「Comment Lang Verify」 Button:
• 默认 dimmed(灰色半透明),选中达人后激活
• 每次仅允许选中 1 creators进行校验
• 校验中显示 loading 旋转图标
5.2「Country」列显示变更(在Country代码右侧追加标识)
未校验:TH
已校验有主语言:TH ✅ th
已校验无主语言:TH ✅ ❓
已校验无评论:TH —
5.3 新增 JS 函数 langCheckCreator()
① 检查选中达人数量(必须且仅1个)
② 获取选中达人的 channelId
③ 选择Quota最低的 API Key
④ POST /api/lang-check { channelId, apiKey }
⑤ Success后更新本地数据 + 重新渲染列表
⑥ Button恢复状态
六、执行Step(12 步)
# Action 文件 / 置
1下载 fasttext lid.176.bin 模型服务器
2创建 lang_detect.py 脚本/var/www/gamecreator-hub/
3测试 Python 脚本服务器命令行
4PG 增加列 comment_lang + lang_verified_at服务器 psql
5server.js 增加 child_process + detectLanguages()服务器
6server.js 新增 POST /api/lang-check 路由服务器
7server.js PUT allowed 扩展服务器
8pm2 restart gamecreator-hub服务器
9前端 UI + JS 变更ai-tools/index.html
10同步变更youtube-tools/index.html
11node --check 语法验证服务器
12端To端测试浏览器
七、风险与备选
风险 应对
lid.176.bin 下载Failedscp 传输
YouTube Videos无评论comment_lang=null,显示 TH —
评论被Close同"无评论"处理
API Key Quota耗尽前端选Quota最低 Key,耗尽时提示用户
系统方案 · Api方案
4张核心表 × 前端Feature × API端点 关联脑图 — 点击读取Fields查看所有引用Feature
数据库 4 张核心表核实
channels(达人基础数据) 15 Fields
channel_id PK · channel_name · country · subscribers · avg_views_30 · play_rate · engagement_rate · last_published_at · has_sponsorship · email · game_type enum · creator_type enum · content_type · activity_30d · imported_at
outreach(建联记录) 7 Fields
id PK · channel_id →channels · sent_at · opened_at · replied_at · deal_started_at · campaign_id
users(账号体系) 5 Fields
id PK · email · password_hash · role admin/viewer · created_at
sync_logs(同步日志) 5 Fields
id PK · source email_tool/google_api · synced_at · records_count · status
数据库、前端Feature与 YouTube API 端点关联脑图
点击读取FieldsLabel → 查看所有引用该Fields的前端Feature | 点击Feature行 → 查看数据链路Description
channels
outreach
users
sync_logs
本地计算(0 units)
系统方案 · 达人Label参数
Content Direction与Creator Type的匹配Keyword/判定规则 — 入库时自动分类,支持手动修正
Content Direction 游戏Type — 匹配Keyword示例
入库时扫描AllVideos(约50条),统计每个分类的Keyword命中Videos数,取命中最多的分类打标。
Creator Type 匹配Keyword示例
入库时扫描AllVideos(约50条),统计每个Creator Type的Keyword命中Videos数,取命中最多的Type打标。
打标逻辑Description · 计分制
入库时对每位达人的约 50Videos逐条扫描,统计每个分类/Type的Keyword命中Videos数,取命中Videos数最多的作为打标结果(而非第一次命中即打标)。同分时取列表靠前项。无命中时回退为"Other"。打标完成后支持在Creator DB手动修正。