时间
类别
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 Influencer Filter
Videos / Shorts Dual Mode · Local Storage · Parameters Adjustable in Real Time
API Settings
💡 Free daily quota 10,000 units, resets at PT 00:00. 12 Keywords x 4 pages approx 5,800 units.
API Flow & Quota Usage Details
Step API Endpoint Quota/Call Channel A Channel B Description
1. Search & Collect videos.list
(chart=mostPopular)
1/page 4~8 Channel A: Get Regional Popular Game Videos
1. Search & Collect search.list
(type=video)
100/page 1200~4800 Channel B: Search Videos by Keyword
2. Coarse Filter Channels channels.list 1/50Channels ≈3~4 ≈6~12 Bulk fetch subscribers/Country, eliminate 50-70%
3. In-Depth Analysis playlistItems.list 1/Channels ≈1/Channels ≈1/Channels Only pass-coarse-filtered Channels
3. In-Depth Analysis videos.list 1/Channels ≈1/Channels ≈1/Channels Get views/likes/comments/brand deals
Channel A Total (Hot Scan) ≈300~500 4 hot pages approx 8 + Channels processing approx 300-400
Channel B Total (Keyword Search) ≈3,000~6,000 12 Keywords x 4 pages approx 4800 + Channels processing
💡 Coarse filter flow: Subscribers → Registered Country (pass if empty) → Game Type (topicDetails, pass if empty) → Only passed channels enter in-depth analysis
Filter Criteria
· Channel language affects search result relevance ranking
· Registered Country is the country set at channel registration
· This field is set by the creator and may not match actual location
💡 Search Channel Description
🔥 Channel A (Hot Videos Scan): Directly get current popular game Channel Videos for target region. regionCode region filter effective, no Keywords needed, very low Quota Usage (approx 408 units), suitable for quick scan of popular influencers. Covers approx 150-200 Channels.
🔍 Channel B (Keyword Precision Search): Search Videos by Keyword, extract Channel info from Videos. High precision but larger Quota Usage (approx 5,224 units), suitable for deep vertical search. At the search stage regionCode has no effect for keyword search.
Tip:Run Channel A first to quickly cover popular influencers, then Channel B for precise deep search. Results auto-dedup and merge. Only one channel can run at a time.
📊 Data Analysis Base
All data analysis based on maxResults = 50 Videos, Shorts filtered out (<=60s)
No search records yet
0
Scanned
0
Passed
0
Does not match
0
Has Brand Deal
0
Quota Usage
Live Log
Passed (0) Does not match (0) All (0)
# Channel Name Subscribers Avg Views View Rate Engagement Rate Latest Upload Country Email Keyword Brand Status
No Data
Conversion Rate Settings (auto-recalculates on change)
Click Users = Avg Views x Click Rate
Downloads = Click Users x Download Rate
Total Revenue = Downloads x Unit Price
Suggested Budget = Total Revenue x Risk Factor
Click Users = Avg Views x Click Rate → Downloads = Click Users x Download Rate → Total Revenue = Downloads x Unit Price → Suggested Budget = Total Revenue x Risk Factor
Creators with Email:0  ·  Checked:0
When checked, emails will also be sent to the test email
# Channel Name Subscribers Recent 10 Avg Views Engagement Rate Email Source Status Suggested Budget (USD)
No creator data. Select influencers in Creator DB first, then click Initiate Outreach
📧 Email Sending Area
📮 Tencent Enterprise Email SMTP Not Connected
🏢 Server: smtp.exmail.qq.com  ·  Port: 465 (SSL)
Please enable SMTP in Tencent Enterprise Mail: Settings → Client Settings, use auth code to login
🔍 Custom Email Tracking (optional) Not Enabled
Enable Custom Email Tracking
Emails still sent via Tencent SMTP.
When enabled, custom Tracking Service injects tracking identifiers into each email and records open/click events in real time.
📮 Tencent SMTP Send 🔍 Custom Tracking Layer
Closed
✏️ Email Template Editor
Email Body · [Creator Name] placeholder will be auto-replaced when sending

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

📤 Email Sending
📮
SMTP Direct Send (Tencent Enterprise Mail)
Emails will be sent via Tencent SMTP directly without tracking features
0
Pending
0
Success
0
Failed
Ready. Check target influencers then send
📊 Custom Tracking Delivery Stats Analytics
📊
Custom tracking not enabled
Enable "Custom Email Tracking" above and complete setup to see data here
📅 Send History (by Date)
No Send History yet
📧 Email Preview
Subject
Body
账号
API 配置
数据刷新
邮件工具
通知
成员管理
API 配置
YouTube Data API Key
用于Channels数据抓取,每日Quota 10,000 units
每日刷新比例
库内存量达人每日刷新的比例
刷新时间(UTC)
每日自动刷新执行时间
Quota监控
Quota预警阈值
Cost超过此比例时发送通知
禁用 search.list
强制禁用高Cost端点(100u/次)
邮件工具sync
Webhook URL
邮件工具推送Outreach Status变更的地址
自动sync
打开/回复状态自动更新ToCreator DB
时区
所有时间戳以此时区为准
系统方案 · Storage
存储集中化方案 — 将所有存储From本地分散统一迁移至腾讯云 PostgreSQL
规划中
一、现有存储全景图
腾讯云Server(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 YesCreator 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追踪
Server资源概览
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 数据未sync保留 localStorage 作为降级方案,渐进迁移
50G 磁盘空间不足当前Used 9.3G,PostgreSQL + 数据预估 < 2G,风险低
并发写入冲突SQLite 原为单写,PostgreSQL 并发支持更好
回滚方案:每个阶段保留原始文件和配置 — SQLite DB 文件改名 .bak,Nginx 配置备份后修改,Mac Mini 服务在完全验证前不停止。
系统方案 · 多重语言校对
Comment 语言校验 — 服务端检测方案(v2)
规划中
一、架构概览
浏览器前端                 腾讯云Server                                    外部
───────────               ────────────────                                  ─────
                            ┌─ 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在服务端Done,前端只发一个请求。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后更新本地数据 + 重新渲染List
⑥ Button恢复状态
六、执行Step(12 步)
# Action 文件 / 置
1下载 fasttext lid.176.bin 模型Server
2创建 lang_detect.py 脚本/var/www/gamecreator-hub/
3测试 Python 脚本Server命令行
4PG 增加列 comment_lang + lang_verified_atServer psql
5server.js 增加 child_process + detectLanguages()Server
6server.js 新增 POST /api/lang-check 路由Server
7server.js PUT allowed 扩展Server
8pm2 restart gamecreator-hubServer
9前端 UI + JS 变更ai-tools/index.html
10sync变更youtube-tools/index.html
11node --check 语法验证Server
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(sync日志) 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数最多的作为打标结果(而非第一次命中即打标)。同分时取List靠前项。无命中时回退为"Other"。打标Done后支持在Creator DB手动修正。