[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92319":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":15,"starSnapshotCount":15,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},92319,"creatorhub","3441293738\u002Fcreatorhub","3441293738","多平台内容监控·采集·搬运 —— 纯 Python(FastAPI + Playwright),一个 Web 面板管起抖音 \u002F 小红书 \u002F 快手",null,"Python",145,33,56,3,0,69,48.49,false,"main",true,[22,23,24,25,26,27,28,29,30,31,32,33],"automation","content-monitoring","crawler","douyin","fastapi","kuaishou","playwright","python","rednote","tiktok","web-scraping","xiaohongshu","2026-07-22 04:02:05","# CreatorHub\n\n> 多平台内容监控 · 采集 · 搬运 —— 纯 Python，一个 Web 面板管起 **抖音 \u002F 小红书 \u002F 快手**。\n\n用真实浏览器（Playwright）驱动，**免手写签名**：登录态由浏览器持有，抓取靠拦截平台自己发出的接口响应。顶部一键切换平台，每个平台各自独立的账号、监控目标、内容与评论数据；通知渠道与下载设置全局共用。\n\n平台代码统一收纳在 `app\u002Fplatforms\u002F\u003C平台>\u002F` 下，新增平台只需在此目录加一个子包。\n\n---\n\n## 界面预览\n\n**总览面板** —— 顶部一键切换 **抖音 \u002F 小红书 \u002F 快手**，深浅主题随平台自动切换，近 7 天采集趋势与关键指标一屏看全：\n\n![总览面板 · 抖音（深色）](assets\u002Fscreenshots\u002Foverview-douyin.png)\n\n![总览面板 · 小红书（浅色）](assets\u002Fscreenshots\u002Foverview-xiaohongshu.png)\n\n**账号 + 代理池** —— 扫码 \u002F 创作者 \u002F Cookie 多方式登录，多账号登录态检测与一键重登；一号一代理固定绑定防关联，支持批量导入与自动分配：\n\n![账号登录与代理池](assets\u002Fscreenshots\u002Faccounts-proxy.png)\n\n**作品监控** —— 粘贴主页链接即可轮询新作品并自动下载，可选画质与下载目录；最新作品列表带下载状态，支持一键搬运到小红书：\n\n![作品监控与下载](assets\u002Fscreenshots\u002Fmonitor-posts.png)\n\n**评论监控** —— 订阅单条视频或整个账号的评论区，定时抓取新评论并落库，支持公开评论区来源与自动识别：\n\n![评论监控](assets\u002Fscreenshots\u002Fmonitor-comments.png)\n\n**本账号管理** —— 打通本账号的作品 \u002F 关注 \u002F 粉丝 \u002F 私信；私信支持无头历史拉取与浏览器实时收发（imapi protobuf，纯 Cookie 免签名）：\n\n![本账号管理与私信](assets\u002Fscreenshots\u002Faccount-hub-dm.png)\n\n---\n\n## 功能一览\n\n| 能力 | 抖音 | 小红书 | 快手 |\n|---|:---:|:---:|:---:|\n| 登录 | 扫码 \u002F 创作者 \u002F Cookie | 扫码（读取态 + 创作态） | 扫码 \u002F 创作者 |\n| 作品监控（新作品轮询） | ✅ 用户作品 | ✅ 创作者笔记 \u002F 关键词 | ✅ 用户作品 |\n| 自动下载（含断点续传\u002F重试） | ✅ 可选画质 | ✅ 图集\u002F视频原图原视频 | ✅ |\n| 评论监控 | ✅ 公开 \u002F 创作中心 | ✅ 单条笔记 \u002F 创作者近期 | ✅ |\n| 自动评论 \u002F 自动回复 | ✅ | ✅ | ✅ |\n| 发布 | ✅ 浏览器自动化 \u002F 转发到小红书 | ✅ API 直连 \u002F 转发到抖音 | ✅ 浏览器自动化 |\n| 本账号管理（作品\u002F关注\u002F粉丝\u002F私信） | ✅ | ✅ | ✅ 关注\u002F粉丝 |\n| 通知推送（Bark\u002F钉钉\u002FTelegram） | 全局共用 | 全局共用 | 全局共用 |\n\n### 核心功能说明\n\n1. **内容监控**：轮询目标的新作品\u002F新笔记，发现即入库、可自动下载并推送通知。\n2. **下载**：自动落地到本地。抖音可选画质档位；小红书取原图\u002F原视频；`.part` 断点续传 + 失败自动重试（≤3 次）。\n3. **通知**：发现新内容时推送到 Bark \u002F 钉钉（加签+关键词）\u002F Telegram（可自建 api_base）。\n4. **评论监控**（独立模块，不依赖作品监控）：盯单条作品或某账号近期作品的公开评论区；抖音另有「创作中心」模式（仅自有账号、按时间、更全，实验性）。\n5. **自动评论**（规则 → 任务队列）：\n   - **自动回复**（低风险）：自动回复自己作品下收到的评论。\n   - **自动评论**（高风险）：去指定博主或关键词（关键词仅小红书）的帖子下评论。\n   - 文案 = 模板库 + 同义随机 `{a|b|c}` + `{nick}`\u002F`{kw}` 变量；**可选接大模型**（OpenAI 兼容：DeepSeek\u002F通义\u002F月之暗面\u002F智谱\u002FOpenAI 等，在「设置」配 key，失败回退模板）。\n   - 规则默认关闭、可「试跑」预览、可随时编辑。\n6. **账号管理**：真实资料、登录态失效检测、一键重登。\n7. **本账号管理**（左侧「本账号」分组，多平台通用）：\n   - **我的作品**：同步展示登录账号自己发布的作品。\n   - **关注 \u002F 粉丝**：同步列表，支持 **取关 \u002F 回关**。\n   - **私信**：展示会话\u002F消息，支持 **发送私信**。\n   - 写操作（取关\u002F回关\u002F发私信）统一进 `AccountActionTask` 队列，由引擎按 `min_gap_seconds` 节流、每账号每轮一条；也可在前端「立即执行」。\n8. **多账号风控隔离**：每账号独立持久化浏览器 profile + 一号一代理（sticky）+ 活跃账号错峰 + 扫描抖动，降低多号关联特征（见[配置](#配置)）。\n\n> ⚠️ **关注\u002F粉丝\u002F私信需要接口标定**：这三类在三个平台都**没有可直接调用的公开接口**，\n> 靠登录态浏览器打开对应页面**拦截抓包** + 启发式抽取自适应。若「同步」抓不到数据，\n> 把服务端控制台打印的 `[follow]` \u002F `[dm]` 那行（含它看到的 `api_seen` 接口清单）\n> 反馈到 issue，据此把真实接口\u002F字段固化进 `app\u002Fbrowser\u002Faccount_hub.py`。\n> 写操作的按钮选择器集中在 `account_hub.py` 的 `_FOLLOW_BTN` \u002F `_DM_INPUT` 等常量，平台改版时改这里。\n\n---\n\n## 为什么用真实浏览器（Playwright）\n\n各平台对登录和抓取两头都上了反爬：扫码接口挡在 JS 验证页后面，作品\u002F评论接口要求私有签名（`a_bogus`、`X-s` 等，纯 HTTP 伪造极易失效）。本项目用 **Playwright 驱动真实 Chromium**：\n\n- **登录**：弹真实浏览器窗口扫码，收集登录态（storage_state）。\n- **抓取**：无头浏览器带登录态打开页面，**拦截平台自己发出的接口响应**直接取数据，签名由浏览器算，我们不碰。\n\n> 小红书「发布」为 API 直连（`app\u002Fplatforms\u002Fxhs\u002F`，`static\u002F*.js` 是版本绑定的签名脚本，平台改版失效时更新它）；抖音 \u002F 快手「发布」走浏览器自动化（`app\u002Fplatforms\u002F\u003C平台>\u002Fpublish.py`，选择器随平台改版可能失效，集中在文件顶部常量便于修）。\n> `app\u002Fplatforms\u002Fdouyin\u002Fsigning\u002F`（SM3\u002FRC4\u002Fa_bogus）保留作参考，已不在关键路径上。\n\n---\n\n## 快速开始\n\n```bash\ngit clone \u003Cthis-repo> && cd creatorhub\n\npython -m venv .venv && .venv\\Scripts\\activate      # Windows(其他平台用 source .venv\u002Fbin\u002Factivate)\npip install -r requirements.txt\nplaywright install chromium                          # ★ 必须:装浏览器内核\nnpm install crypto-js                                # ★ 小红书发布用:签名 JS 依赖(需先装 Node.js)\ncp config.example.yaml config.yaml                   # 按需改\n\npython selftest.py                                   # 自检(含 Playwright 可用性)\nuvicorn app.main:app --host 0.0.0.0 --port 8000\n# 打开 http:\u002F\u002Flocalhost:8000\n```\n\n> ⚠️ 扫码\u002F创作者登录会**弹出真实浏览器窗口**，需在**有桌面的机器**上跑。\n> 纯无桌面服务器请用「Cookie 粘贴」登录（抖音）。\n> Windows 下用单 worker 启动（默认即是），别加 `--workers`，否则 Playwright 子进程会出错。\n\n### 小红书账号:一次扫码 = 读取态 + 创作态\n\n小红书有两套登录态，**一次「小红书扫码登录」会同时拿到两者**：\n\n- **读取态（www.xiaohongshu.com）**：监控、浏览自己笔记、预览、评论用。\n- **创作态（creator.xiaohongshu.com）**：发布用。\n\n点「小红书扫码登录」→ 扫码后窗口**自动跳到创作平台**：只看\u002F评论\u002F预览的扫完 www 即可；还要**发布**的，在创作平台完成登录\u002F同意（**完成前别关窗口**）。拿到创作 cookie 的账号显示 🎬 徽章。\n\n> 小红书很多接口需要 URL 携带 `xsec_token`。盯单条笔记\u002F创作者时尽量粘贴含 `xsec_token=` 的完整链接；令牌过期后重新粘贴新链接即可。\n\n---\n\n## 界面\n\n顶部 **抖音 \u002F 小红书 \u002F 快手** 切换平台；左侧导航分区，每个分区是「列表 + 添加」的管理面板：\n\n- **总览**：当前平台的 账号 \u002F 监控 \u002F 下载 \u002F 评论 数量概览。\n- **账号**：登录方式随平台不同（见上表）。账号列表含真实资料、失效检测、重登；🪪 抓取号 \u002F 🎬 创作者号。\n- **作品监控**：粘贴主页\u002F短链\u002Fid；小红书可选「创作者笔记」或「关键词」。下方为监控列表 + 下载记录。\n- **评论监控**：独立模块，粘贴作品链接或创作者主页。\n- **发布**：小红书上传图集\u002F视频发笔记、定时发布；抖音 \u002F 快手发布走浏览器自动化(创作平台)。**跨平台转发**：抖音作品一键转发到小红书、小红书作品一键转发到抖音(已下载作品上点「发小红书 \u002F 发抖音」,发布前可改标题\u002F正文\u002F话题)。\n- **本账号**：我的作品 \u002F 关注 \u002F 粉丝 \u002F 私信。\n- **通知**：Bark \u002F 钉钉 \u002F Telegram 渠道管理（全局共用）。\n- **设置**：全局下载目录 + 默认画质 + 大模型 key。\n\n---\n\n## 功能细节\n\n### 下载\n- **画质**（抖音）：从作品自带多档码率里选 `原画(最高) \u002F 1080 \u002F 720 \u002F 540 \u002F 省流(最低)`。全局默认 + 单目标覆盖；\"原画\" = web 端可拿到的最高码率（**非创作者母带**）。\n- **目录**：全局默认 + 单目标自定义，优先级 `目标 > 全局 > 配置兜底`，按作者建子文件夹。\n- **断点续传**：`.part` 临时文件跨尝试保留，用 HTTP Range 续传，按 Content-Length 校验完整。\n- **失败重试**：入库时存媒体直链快照，失败的作品后台自动重试（≤3 次），也可手动「重试」。\n\n### 评论监控\n- **盯单条作品**：粘贴作品链接 \u002F 短链 \u002F 数字 id，周期抓该作品评论区。\n- **盯账号近期作品**：粘贴主页，抓该账号最近 N 条作品（N\u002F天数受 config 限制）的评论。\n- **公开模式**：打开作品详情页，滚动评论容器翻页、拦截评论接口、去重入库。抖音评论按热度排（非时间序），只能稳定抓到前若干页里的新评论。\n- **创作中心模式（抖音，实验性）**：监控自己的号时，从创作中心评论管理页抓——按时间、含刚发的、更全。需先「创作者登录」。\n- 用「时间水位线」判新：深翻翻出的旧评论只入库不推送。\n\n### 账号\n- **真实资料**：头像、昵称、平台号、uid、作品数、粉丝数。\n- **登录态失效检测**：后台每 `account_check_interval_seconds` 体检；失效标红 + 「重新登录」（更新原账号登录态，不新建）。\n\n### 批量删除\n- 作品 \u002F 评论表支持勾选 + 全选 + 批量删除；作品删除连带清理本地文件。\n\n---\n\n## 配置\n\n复制 `config.example.yaml` 为 `config.yaml` 后按需改。关键项：\n\n```yaml\nengine:\n  scan_interval_seconds: 300      # 目标默认轮询间隔(每目标可单独设)\n  worker_pool_size: 2             # 下载并发(跨作品)\n  scan_concurrency: 2             # 同时抓取的目标数(并发浏览器上下文)\n  comment_recent_works: 5         # 监控评论只看最近 N 条作品\n  comment_recent_days: 7          # 且仅限最近多少天内发布\n  comment_max_scrolls: 6          # 评论区翻页深度\n  account_check_interval_seconds: 1800   # 账号登录态体检间隔(0=关闭)\n  media_dir: .\u002Fdata\u002Fmedia         # 默认下载目录\n\n  # ── 多账号风控隔离 ──\n  profiles_dir: .\u002Fdata\u002Fprofiles   # 每账号独立持久化浏览器 profile 根目录\n  max_live_contexts: 6            # 同时常驻浏览器 context 上限(LRU 驱逐,控内存)\n  active_accounts: 3              # 同一时刻最多并发活跃账号数(错峰)\n  scan_jitter: 0.15              # 扫描间隔随机抖动比例(±15%),消除整点齐发特征\n  route_download_via_proxy: true  # 媒体下载走账号代理(避免 CDN 拉流暴露真实 IP)\n\nstorage:\n  db_path: .\u002Fdata\u002Fcreatorhub.db\n\n# 代理池:建号时一号一代理 sticky 分配。务必用住宅\u002F4G 长效代理,\n# IP 地区与账号时区\u002Flocale 一致;切勿机房 IP、切勿多号共享一个 IP。留空则走宿主真实 IP。\nproxies: []\n  # - http:\u002F\u002Fuser:pass@gateway.example.com:8000\n  # - socks5:\u002F\u002Fuser:pass@1.2.3.4:1080\n```\n\n> 数据库结构变化走**自动迁移**（SQLite ADD COLUMN），老库不用删，重启即可。\n> `config.yaml`、`data\u002F`（登录态\u002F媒体\u002F数据库）已在 `.gitignore` 中，不会进版本库。\n\n---\n\n## 目录结构\n\n```\ncreatorhub\u002F\n├─ app\u002F\n│  ├─ platforms\u002F        各平台插件(新增平台在此加子包)\n│  │  ├─ douyin\u002F        sec_uid 解析 + JSON 解析;signing\u002F=签名原语(参考)\n│  │  ├─ xhs\u002F           小红书:解析 \u002F 客户端 \u002F 发布 \u002F 签名 JS\n│  │  └─ kuaishou\u002F      快手:解析 \u002F 发布\n│  ├─ browser\u002F          Playwright:manager \u002F login \u002F fetcher \u002F account_hub\n│  ├─ engine\u002F           监控引擎(扫描·下载·评论·账号体检) + 下载器\n│  ├─ notifier\u002F         Bark \u002F 钉钉 \u002F Telegram\n│  ├─ web\u002F              前端单页(标签页 \u002F toast \u002F 批量选择)\n│  └─ main.py config.py models.py db.py settings.py profiles.py\n├─ selftest.py  config.example.yaml  requirements.txt\n```\n\n---\n\n## 排错\n\n| 现象 | 原因 \u002F 处理 |\n|---|---|\n| `playwright` 启动失败 \u002F 找不到浏览器 | `playwright install chromium` |\n| 点扫码没弹窗 | 需在有桌面的机器跑;无头服务器改用 Cookie 粘贴(抖音) |\n| Windows 下 Playwright 子进程报错 | 用 `uvicorn app.main:app`(单 worker),别加 `--workers` |\n| 抓取报\"未拦截到作品数据\" | 该账号登录态失效→重登;或目标无公开作品;或被风控→降低频率 |\n| 账号显示「登录失效」 | 点「重新登录」更新登录态 |\n| 评论只有十几条 \u002F 抓不动 | 公开模式靠滚动翻页;若选择器失效改 `app\u002Fbrowser\u002Ffetcher.py: _SCROLL_COMMENTS` |\n| 关注\u002F粉丝\u002F私信同步抓不到 | 需接口标定,见上方 ⚠️,把控制台 `[follow]`\u002F`[dm]` 日志反馈到 issue |\n\n---\n\n## 已知局限（诚实说明）\n\n- **画质**：只能拿 web 端最高码率，**拿不到创作者母带源文件**。\n- **评论实时性**：公开模式受热度排序限制，做不到\"实时一条不漏\"；创作中心模式更全但需自有账号。\n- **实验性接口**（创作中心评论、本账号管理）：页面结构随平台改版变化，代码里已把拦截\u002F选择器集中、注释清楚便于修。\n- 抓取依赖平台前端结构，**平台改版时部分拦截\u002F选择器可能失效**。\n\n---\n## 友链\n\n  感谢 [LINUXDO](https:\u002F\u002Flinux.do\u002F) 社区提供的帮助与支持。\n\n## 合规声明\n\n本项目仅供**技术学习与个人内容备份**，不提供任何账号、Cookie、代理或数据。\n\n使用者须自行遵守目标平台的用户协议、`robots` 规则及所在地法律法规，尊重原作者的版权与隐私，\n**不得高频请求、批量爬取或商业分发**。自动评论\u002F私信等写操作有账号风控风险，请谨慎、低频使用。\n一切使用风险与法律责任由使用者自负，作者不对任何滥用行为负责。\n","CreatorHub 是一个基于 Python 的多平台内容监控与自动化管理工具，支持抖音、小红书、快手三大主流内容平台。它通过 Playwright 驱动真实浏览器实现免手写签名的登录态维持与接口响应拦截，提供作品轮询监控、自动下载（含断点续传）、评论抓取、账号管理（关注\u002F粉丝\u002F私信）、自动评论\u002F回复及跨平台搬运等核心功能；采用 FastAPI 构建 Web 管理面板，支持多账号隔离、代理绑定与风控节流。适用于新媒体运营、竞品监测、创作者内容归档及轻量级自动化运营等场景。",2,"2026-07-08 04:30:04","CREATED_QUERY"]