3441293738/creatorhub

GitHub: 3441293738/creatorhub

基于 Playwright 驱动真实浏览器的多平台内容监控、采集与搬运工具,支持抖音、小红书、快手的账号管理、作品下载、评论自动化与跨平台转发。

Stars: 120 | Forks: 27

# CreatorHub 用真实浏览器(Playwright)驱动,**免手写签名**:登录态由浏览器持有,抓取靠拦截平台自己发出的接口响应。顶部一键切换平台,每个平台各自独立的账号、监控目标、内容与评论数据;通知渠道与下载设置全局共用。 平台代码统一收纳在 `app/platforms/<平台>/` 下,新增平台只需在此目录加一个子包。 ## 界面预览 **总览面板** —— 顶部一键切换 **抖音 / 小红书 / 快手**,深浅主题随平台自动切换,近 7 天采集趋势与关键指标一屏看全: ![总览面板 · 抖音(深色)](https://raw.githubusercontent.com/3441293738/creatorhub/main/assets/screenshots/overview-douyin.png) ![总览面板 · 小红书(浅色)](https://raw.githubusercontent.com/3441293738/creatorhub/main/assets/screenshots/overview-xiaohongshu.png) **账号 + 代理池** —— 扫码 / 创作者 / Cookie 多方式登录,多账号登录态检测与一键重登;一号一代理固定绑定防关联,支持批量导入与自动分配: ![账号登录与代理池](https://raw.githubusercontent.com/3441293738/creatorhub/main/assets/screenshots/accounts-proxy.png) **作品监控** —— 粘贴主页链接即可轮询新作品并自动下载,可选画质与下载目录;最新作品列表带下载状态,支持一键搬运到小红书: ![作品监控与下载](https://raw.githubusercontent.com/3441293738/creatorhub/main/assets/screenshots/monitor-posts.png) ![评论监控](https://raw.githubusercontent.com/3441293738/creatorhub/main/assets/screenshots/monitor-comments.png) ![本账号管理与私信](https://raw.githubusercontent.com/3441293738/creatorhub/main/assets/screenshots/account-hub-dm.png) ## 功能一览 | 能力 | 抖音 | 小红书 | 快手 | |---|:---:|:---:|:---:| | 登录 | 扫码 / 创作者 / Cookie | 扫码(读取态 + 创作态) | 扫码 / 创作者 | | 作品监控(新作品轮询) | ✅ 用户作品 | ✅ 创作者笔记 / 关键词 | ✅ 用户作品 | | 自动下载(含断点续传/重试) | ✅ 可选画质 | ✅ 图集/视频原图原视频 | ✅ | | 评论监控 | ✅ 公开 / 创作中心 | ✅ 单条笔记 / 创作者近期 | ✅ | | 自动评论 / 自动回复 | ✅ | ✅ | ✅ | | 发布 | ✅ 浏览器自动化 / 转发到小红书 | ✅ API 直连 / 转发到抖音 | ✅ 浏览器自动化 | | 本账号管理(作品/关注/粉丝/私信) | ✅ | ✅ | ✅ 关注/粉丝 | | 通知推送(Bark/钉钉/Telegram) | 全局共用 | 全局共用 | 全局共用 | ### 核心功能说明 1. **内容监控**:轮询目标的新作品/新笔记,发现即入库、可自动下载并推送通知。 2. **下载**:自动落地到本地。抖音可选画质档位;小红书取原图/原视频;`.part` 断点续传 + 失败自动重试(≤3 次)。 3. **通知**:发现新内容时推送到 Bark / 钉钉(加签+关键词)/ Telegram(可自建 api_base)。 4. **评论监控**(独立模块,不依赖作品监控):盯单条作品或某账号近期作品的公开评论区;抖音另有「创作中心」模式(仅自有账号、按时间、更全,实验性)。 5. **自动评论**(规则 → 任务队列): - **自动回复**(低风险):自动回复自己作品下收到的评论。 - **自动评论**(高风险):去指定博主或关键词(关键词仅小红书)的帖子下评论。 - 文案 = 模板库 + 同义随机 `{a|b|c}` + `{nick}`/`{kw}` 变量;**可选接大模型**(OpenAI 兼容:DeepSeek/通义/月之暗面/智谱/OpenAI 等,在「设置」配 key,失败回退模板)。 - 规则默认关闭、可「试跑」预览、可随时编辑。 6. **账号管理**:真实资料、登录态失效检测、一键重登。 7. **本账号管理**(左侧「本账号」分组,多平台通用): - **我的作品**:同步展示登录账号自己发布的作品。 - **关注 / 粉丝**:同步列表,支持 **取关 / 回关**。 - **私信**:展示会话/消息,支持 **发送私信**。 - 写操作(取关/回关/发私信)统一进 `AccountActionTask` 队列,由引擎按 `min_gap_seconds` 节流、每账号每轮一条;也可在前端「立即执行」。 8. **多账号风控隔离**:每账号独立持久化浏览器 profile + 一号一代理(sticky)+ 活跃账号错峰 + 扫描抖动,降低多号关联特征(见[配置](#配置))。 ## 为什么用真实浏览器(Playwright) 各平台对登录和抓取两头都上了反爬:扫码接口挡在 JS 验证页后面,作品/评论接口要求私有签名(`a_bogus`、`X-s` 等,纯 HTTP 伪造极易失效)。本项目用 **Playwright 驱动真实 Chromium**: - **登录**:弹真实浏览器窗口扫码,收集登录态(storage_state)。 - **抓取**:无头浏览器带登录态打开页面,**拦截平台自己发出的接口响应**直接取数据,签名由浏览器算,我们不碰。 ## 快速开始 git clone && cd creatorhub python -m venv .venv && .venv\Scripts\activate # Windows(其他平台用 source .venv/bin/activate) pip install -r requirements.txt playwright install chromium # ★ 必须:装浏览器内核 npm install crypto-js # ★ 小红书发布用:签名 JS 依赖(需先装 Node.js) cp config.example.yaml config.yaml # 按需改 python selftest.py # 自检(含 Playwright 可用性) uvicorn app.main:app --host 0.0.0.0 --port 8000 # 打开 http://localhost:8000 ### 小红书账号:一次扫码 = 读取态 + 创作态 小红书有两套登录态,**一次「小红书扫码登录」会同时拿到两者**: - **读取态(www.xiaohongshu.com)**:监控、浏览自己笔记、预览、评论用。 - **创作态(creator.xiaohongshu.com)**:发布用。 点「小红书扫码登录」→ 扫码后窗口**自动跳到创作平台**:只看/评论/预览的扫完 www 即可;还要**发布**的,在创作平台完成登录/同意(**完成前别关窗口**)。拿到创作 cookie 的账号显示 🎬 徽章。 ## 界面 顶部 **抖音 / 小红书 / 快手** 切换平台;左侧导航分区,每个分区是「列表 + 添加」的管理面板: - **总览**:当前平台的 账号 / 监控 / 下载 / 评论 数量概览。 - **账号**:登录方式随平台不同(见上表)。账号列表含真实资料、失效检测、重登;🪪 抓取号 / 🎬 创作者号。 - **作品监控**:粘贴主页/短链/id;小红书可选「创作者笔记」或「关键词」。下方为监控列表 + 下载记录。 - **评论监控**:独立模块,粘贴作品链接或创作者主页。 - **发布**:小红书上传图集/视频发笔记、定时发布;抖音 / 快手发布走浏览器自动化(创作平台)。**跨平台转发**:抖音作品一键转发到小红书、小红书作品一键转发到抖音(已下载作品上点「发小红书 / 发抖音」,发布前可改标题/正文/话题)。 - **本账号**:我的作品 / 关注 / 粉丝 / 私信。 - **通知**:Bark / 钉钉 / Telegram 渠道管理(全局共用)。 - **设置**:全局下载目录 + 默认画质 + 大模型 key。 ## 功能细节 ### 下载 - **画质**(抖音):从作品自带多档码率里选 `原画(最高) / 1080 / 720 / 540 / 省流(最低)`。全局默认 + 单目标覆盖;"原画" = web 端可拿到的最高码率(**非创作者母带**)。 - **目录**:全局默认 + 单目标自定义,优先级 `目标 > 全局 > 配置兜底`,按作者建子文件夹。 - **断点续传**:`.part` 临时文件跨尝试保留,用 HTTP Range 续传,按 Content-Length 校验完整。 - **失败重试**:入库时存媒体直链快照,失败的作品后台自动重试(≤3 次),也可手动「重试」。 ### 评论监控 - **盯单条作品**:粘贴作品链接 / 短链 / 数字 id,周期抓该作品评论区。 - **盯账号近期作品**:粘贴主页,抓该账号最近 N 条作品(N/天数受 config 限制)的评论。 - **公开模式**:打开作品详情页,滚动评论容器翻页、拦截评论接口、去重入库。抖音评论按热度排(非时间序),只能稳定抓到前若干页里的新评论。 - **创作中心模式(抖音,实验性)**:监控自己的号时,从创作中心评论管理页抓——按时间、含刚发的、更全。需先「创作者登录」。 - 用「时间水位线」判新:深翻翻出的旧评论只入库不推送。 ### 账号 - **真实资料**:头像、昵称、平台号、uid、作品数、粉丝数。 - **登录态失效检测**:后台每 `account_check_interval_seconds` 体检;失效标红 + 「重新登录」(更新原账号登录态,不新建)。 ### 批量删除 - 作品 / 评论表支持勾选 + 全选 + 批量删除;作品删除连带清理本地文件。 ## 配置 复制 `config.example.yaml` 为 `config.yaml` 后按需改。关键项: engine: scan_interval_seconds: 300 # 目标默认轮询间隔(每目标可单独设) worker_pool_size: 2 # 下载并发(跨作品) scan_concurrency: 2 # 同时抓取的目标数(并发浏览器上下文) comment_recent_works: 5 # 监控评论只看最近 N 条作品 comment_recent_days: 7 # 且仅限最近多少天内发布 comment_max_scrolls: 6 # 评论区翻页深度 account_check_interval_seconds: 1800 # 账号登录态体检间隔(0=关闭) media_dir: ./data/media # 默认下载目录 # ── 多账号风控隔离 ── profiles_dir: ./data/profiles # 每账号独立持久化浏览器 profile 根目录 max_live_contexts: 6 # 同时常驻浏览器 context 上限(LRU 驱逐,控内存) active_accounts: 3 # 同一时刻最多并发活跃账号数(错峰) scan_jitter: 0.15 # 扫描间隔随机抖动比例(±15%),消除整点齐发特征 route_download_via_proxy: true # 媒体下载走账号代理(避免 CDN 拉流暴露真实 IP) storage: db_path: ./data/creatorhub.db # 代理池:建号时一号一代理 sticky 分配。务必用住宅/4G 长效代理, # IP 地区与账号时区/locale 一致;切勿机房 IP、切勿多号共享一个 IP。留空则走宿主真实 IP。 proxies: [] # - http://user:pass@gateway.example.com:8000 # - socks5://user:pass@1.2.3.4:1080 ## 目录结构 creatorhub/ ├─ app/ │ ├─ platforms/ 各平台插件(新增平台在此加子包) │ │ ├─ douyin/ sec_uid 解析 + JSON 解析;signing/=签名原语(参考) │ │ ├─ xhs/ 小红书:解析 / 客户端 / 发布 / 签名 JS │ │ └─ kuaishou/ 快手:解析 / 发布 │ ├─ browser/ Playwright:manager / login / fetcher / account_hub │ ├─ engine/ 监控引擎(扫描·下载·评论·账号体检) + 下载器 │ ├─ notifier/ Bark / 钉钉 / Telegram │ ├─ web/ 前端单页(标签页 / toast / 批量选择) │ └─ main.py config.py models.py db.py settings.py profiles.py ├─ selftest.py config.example.yaml requirements.txt ## 排错 | 现象 | 原因 / 处理 | |---|---| | `playwright` 启动失败 / 找不到浏览器 | `playwright install chromium` | | 点扫码没弹窗 | 需在有桌面的机器跑;无头服务器改用 Cookie 粘贴(抖音) | | Windows 下 Playwright 子进程报错 | 用 `uvicorn app.main:app`(单 worker),别加 `--workers` | | 抓取报"未拦截到作品数据" | 该账号登录态失效→重登;或目标无公开作品;或被风控→降低频率 | | 账号显示「登录失效」 | 点「重新登录」更新登录态 | | 评论只有十几条 / 抓不动 | 公开模式靠滚动翻页;若选择器失效改 `app/browser/fetcher.py: _SCROLL_COMMENTS` | | 关注/粉丝/私信同步抓不到 | 需接口标定,见上方 ⚠️,把控制台 `[follow]`/`[dm]` 日志反馈到 issue | ## 已知局限(诚实说明) - **画质**:只能拿 web 端最高码率,**拿不到创作者母带源文件**。 - **评论实时性**:公开模式受热度排序限制,做不到"实时一条不漏";创作中心模式更全但需自有账号。 - **实验性接口**(创作中心评论、本账号管理):页面结构随平台改版变化,代码里已把拦截/选择器集中、注释清楚便于修。 - 抓取依赖平台前端结构,**平台改版时部分拦截/选择器可能失效**。 ## 友链 感谢 [LINUXDO](https://linux.do/) 社区提供的帮助与支持。 ## 合规声明 本项目仅供**技术学习与个人内容备份**,不提供任何账号、Cookie、代理或数据。 使用者须自行遵守目标平台的用户协议、`robots` 规则及所在地法律法规,尊重原作者的版权与隐私, **不得高频请求、批量爬取或商业分发**。自动评论/私信等写操作有账号风控风险,请谨慎、低频使用。 一切使用风险与法律责任由使用者自负,作者不对任何滥用行为负责。
标签:AV绕过, BeEF, FastAPI, MITM代理, Playwright, 内容监控, 爬虫, 特征检测, 自动化采集, 自媒体工具, 逆向工具