diff --git a/README.md b/README.md
index cbc5e2a..453b33d 100644
--- a/README.md
+++ b/README.md
@@ -22,23 +22,45 @@ cd /Users/kris/code/StoryForge-gitea/android-app
## Douyin Browser Capture
```bash
-cd /Users/kris/code/StoryForge-gitea/scripts/douyin-browser-capture
-npm install
-npx playwright install chromium
-npm run control-panel
+cd /Users/kris/code/StoryForge-gitea
+./scripts/start_douyin_workbench.sh
```
-打开:
+业务页:
+
+```text
+http://127.0.0.1:3618/workbench
+```
+
+完整采集控制台:
```text
http://127.0.0.1:3618
```
-这个本地页面现在包含两部分:
+常用脚本:
-- 上半部分是浏览器辅助采集控制台
-- 下半部分是 `Douyin Workbench`,可直接查看账号列表、商业化账号分析、快照详情、相似账号和对标关系
-- 作品工作台支持按 `高分作品 / 最新作品 / 全部作品` 切换,并可按综合分、商业价值、发布时间、播放、点赞、分享、评论排序
+```bash
+./scripts/start_douyin_workbench.sh
+./scripts/status_douyin_workbench.sh
+./scripts/stop_douyin_workbench.sh
+./scripts/cleanup_debug_ui.sh
+```
+
+如果第一次使用,还需要先安装浏览器依赖:
+
+```bash
+cd /Users/kris/code/StoryForge-gitea/scripts/douyin-browser-capture
+npm install
+npx playwright install chromium
+```
+
+当前本地页面已经拆成两个入口:
+
+- `/workbench`:业务优先的 `Douyin Workbench`,可直接查看账号列表、商业化账号分析、快照详情、相似账号和对标关系
+- `/`:完整浏览器辅助采集控制台,同时保留工作台能力
+- 作品工作台支持按 `高分作品 / 最新作品 / 全部作品` 切换,并可按综合分、受欢迎程度、商业价值、发布时间、播放、点赞、分享、评论排序
+- 作品列表支持 `视频 / 图文` 类型筛选,并可直接打开原作品链接
- 高分作品支持自动化分析,每条作品卡片下都会展示商业判断、复刻计划、运营动作和风险提醒
或者继续用命令行:
diff --git a/scripts/douyin-browser-capture/control_panel.mjs b/scripts/douyin-browser-capture/control_panel.mjs
index bd9f18f..26119e0 100644
--- a/scripts/douyin-browser-capture/control_panel.mjs
+++ b/scripts/douyin-browser-capture/control_panel.mjs
@@ -342,7 +342,8 @@ function sendHtml(res, html) {
res.end(html);
}
-function renderPage() {
+function renderPage(mode = "full") {
+ const isWorkbenchMode = mode === "workbench";
return `
@@ -375,6 +376,36 @@ function renderPage() {
padding: 32px 20px 48px;
}
h1, h2, h3 { margin: 0; }
+ .topbar {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ gap: 12px;
+ margin-bottom: 16px;
+ flex-wrap: wrap;
+ }
+ .topbar-links {
+ display: inline-flex;
+ gap: 10px;
+ flex-wrap: wrap;
+ }
+ .nav-link {
+ display: inline-flex;
+ align-items: center;
+ padding: 9px 14px;
+ border-radius: 999px;
+ background: rgba(255, 255, 255, 0.78);
+ border: 1px solid rgba(22, 49, 61, 0.1);
+ color: var(--ink);
+ text-decoration: none;
+ font-size: 13px;
+ font-weight: 600;
+ }
+ .nav-link.active {
+ background: rgba(31, 110, 95, 0.12);
+ color: var(--accent);
+ border-color: rgba(31, 110, 95, 0.24);
+ }
.hero {
background: linear-gradient(135deg, #0b3c5d, #1f6e5f 58%, #b97524);
color: white;
@@ -827,20 +858,31 @@ function renderPage() {
background: rgba(22, 49, 61, 0.1);
margin: 4px 0;
}
+ .business-mode .capture-grid,
+ .business-mode .recent-runs-section,
+ .business-mode .capture-footnote {
+ display: none;
+ }
@media (max-width: 900px) {
.grid, .row, .checks, .workbench-layout, .metric-grid, .two-col, .analysis-grid, .video-grid, .video-layout, .toolbar-grid { grid-template-columns: 1fr; }
}
-
+
+
+
${isWorkbenchMode ? "StoryForge / Douyin Workbench" : "StoryForge / Douyin Browser Assist"}
+
+
- StoryForge / Douyin Browser Assist
- 用网页点按钮,驱动真实浏览器采集抖音账号
- 这不是无头绕反爬,而是一个可控的半自动流程。你点击“开始采集”后,脚本会打开真实 Chromium,会话沿用同一份登录态。你在浏览器里登录或过滑块后,回到这里点“已完成登录,继续采集”,系统就会继续抓取主页、creator-center,并按安全规则同步进 StoryForge。
+ ${isWorkbenchMode ? "用业务工作台直接查看账号结论、作品榜单和运营分析" : "用网页点按钮,驱动真实浏览器采集抖音账号"}
+ ${isWorkbenchMode ? "这是面向日常运营的业务页。登录后即可查看账号列表、Agent 结论、完整作品工作台、快照和对标结果。只有在需要抓取新账号时,再切到“采集控制台”。" : "这不是无头绕反爬,而是一个可控的半自动流程。你点击“开始采集”后,脚本会打开真实 Chromium,会话沿用同一份登录态。你在浏览器里登录或过滑块后,回到这里点“已完成登录,继续采集”,系统就会继续抓取主页、creator-center,并按安全规则同步进 StoryForge。"}
-
+
开始新采集
@@ -923,7 +965,7 @@ function renderPage() {
-
+
最近运行
@@ -1096,6 +1138,7 @@ function renderPage() {
+