kurihada
|
def0828815
|
改进MCP发布体验:URL媒体下载、内容限制校验、发布返回笔记链接、新增查看已发布笔记工具;整合发布入口至小红书页面modal;端口统一改为9527;新增pnpm run restart脚本
|
2026-03-02 10:48:30 +08:00 |
|
kurihada
|
7661a723ea
|
修复图文发布:创作中心导航、图文标签切换及表单选择器
- 发布前先访问主站建立 session,再跳转创作中心(直接导航会 401)
- 切换「上传图文」标签:跳过 style.left=-9999px 的隐藏副本,不用 getBoundingClientRect
- 修复上传缩略图选择器:.upload-item img → .img-upload-area .img-container
- 修复标题输入框:#note-title → input.d-text[placeholder*="标题"]
- 修复内容编辑器:#note-content → .tiptap.ProseMirror
- 修复发布按钮:.publishBtn → button.d-button:has-text("发布")
- 新增 debug-publish.ts 调试脚本
|
2026-03-02 01:08:03 +08:00 |
|
kurihada
|
9d0a9c93f4
|
整合小红书页面:内联扫码登录、用户主页、移除独立登录和内容浏览页
- 新增 XiaohongshuPage:顶部搜索栏、登录用户头像/ID、退出按钮
- 未登录时内联显示二维码,无需跳转独立登录页
- 点击笔记作者可打开用户主页 slide-over(复用 UserCard)
- 修复用户主页关注/粉丝/获赞数为零:选择器从 .data-area .data-item 改为 .user-interactions > div
- 修复用户头像选择器:img.user-image(img 本身带该 class)
- backend LoginStatus 新增 avatar/userId 字段,登录状态接口返回头像和用户 ID
- 删除 LoginPage、BrowserPage,侧边栏精简为小红书单入口
|
2026-03-02 00:12:24 +08:00 |
|
kurihada
|
ee154f990d
|
登录页面自动检查状态,未登录时才显示二维码区域
- 挂载时先 checkLoginCookie(轻量,不开浏览器)
- 有 cookie 则调 refreshStatus 验证实际状态,完成后标记 initialCheckDone
- 无 cookie 直接标记 initialCheckDone(确定未登录,无需开浏览器)
- 二维码登录卡片仅在 initialCheckDone=true 且未登录时渲染,检查期间不显示
|
2026-03-01 23:14:41 +08:00 |
|
kurihada
|
56d5a6de96
|
修复搜索和用户主页的笔记 ID 提取及风控绕过问题
- 搜索页笔记 href 格式为 /search_result/<id>,修正正则以兼容 /explore/ 和 /search_result/
- 用户主页笔记 href 格式为 /user/profile/<userId>/<noteId>,扩展正则并取正确捕获组
- 用户主页访问前先 warm-up 到 /explore,绕过 XHS headless IP 风控(code 300012)
- xsec_source 改为 pc_feed 以匹配用户从 feed 页获取的 token 类型
- 新增 debug-search.ts / debug-qrcode.ts / debug-profile.ts 诊断脚本
|
2026-03-01 22:44:45 +08:00 |
|
kurihada
|
8b39520ec7
|
fix(xhs): 登录二维码流程改用非无头浏览器绕过IP风控
XHS对未登录的无头浏览器请求触发风控(code 300012: IP存在风险),
重定向到安全限制页导致二维码选择器永远匹配不到。
- getLoginQRCode 单独启动 headless:false 浏览器,登录弹框可正常加载
- 扫码成功后直接从登录 context 提取 storageState 保存到磁盘
- 调用 browser.clearContext() 让主 BrowserManager 下次重新加载新 cookies
- waitForLoginAndRelease 改为接收 BrowserContext 并关闭登录浏览器
- 修正 qrCodeImage 选择器:'.login-container .qrcode-img' → 'img.qrcode-img'
|
2026-03-01 17:59:39 +08:00 |
|
kurihada
|
838b244929
|
fix: 修复登出按钮无效 — 同时清除磁盘 cookie 和浏览器内存 context
- BrowserManager 新增 clearContext() 方法,关闭并丢弃平台 context
- deleteCookies 同时调用 cookieStore.delete + browser.clearContext
- 前端登出后直接 resetStatus,不再触发浏览器请求检查状态
|
2026-03-01 16:57:24 +08:00 |
|
kurihada
|
69a0f7b24c
|
feat: 界面全部改为中文
- 侧边栏导航:仪表盘、登录、内容浏览、发布、互动、API 测试、设置
- 7 个页面所有按钮、标签、提示、错误信息改为中文
- API 端点列表分类改为中文(登录、内容、发布、互动)
- 组件内文本:展开/收起、复制、点赞、收藏、评论等
- 页面标题改为 Social MCP - 管理后台
|
2026-03-01 16:52:57 +08:00 |
|
kurihada
|
0e693842a6
|
fix: Login 页面进入时自动检测登录状态(通过轻量 cookie-check)
|
2026-03-01 16:37:16 +08:00 |
|
kurihada
|
785ec84e56
|
feat: API Tester 支持 MCP 模式 + 修复多个 bug
MCP 模式:
- 新增浏览器端 MCP 客户端 (SSE + JSON-RPC + initialize 握手)
- API Tester 页面双模式: REST API tab + MCP Tools tab
- 连接后自动发现 13 个 tools,支持参数编辑和调用
- 与 AI 客户端走完全相同的协议路径
后端修复:
- 每个 SSE 连接创建独立 McpServer 实例,支持多客户端并发
- express.json() 移到 SSE 路由之后,避免消费 MCP 请求体
- 新增 GET /api/xhs/login/cookie-check 轻量接口(不打开浏览器)
前端修复:
- QR 轮询改用 cookie-check 接口,不再重复打开浏览器窗口
- useLoginStatus 默认不自动请求,避免页面加载触发浏览器
- Header 添加 Token 未配置警告横幅
- tsup clean:false 保护 dist/web 不被清除
|
2026-03-01 16:33:33 +08:00 |
|
kurihada
|
f464333a53
|
fix: 登录状态检查改为手动触发,避免自动请求不断弹出浏览器窗口
- useLoginStatus 默认 auto=false,不再挂载时自动请求
- Dashboard 登录状态卡片改为 "Click to check" 手动触发
- Login 页面初始显示 "Click Refresh to check" 提示
- Header 添加 Token 未配置警告横幅,引导用户去 Settings
|
2026-03-01 14:51:17 +08:00 |
|
kurihada
|
31329905e2
|
fix: 修复 SPA fallback 路径匹配,/api-tester 不再被误拦截
- startsWith('/api') 改为 startsWith('/api/'),避免前端路由 /api-tester 被跳过
- 修正 webDir 解析路径,指向 dist/web 而非源码 web/
|
2026-03-01 14:17:30 +08:00 |
|
kurihada
|
c6a8177718
|
feat: 添加 Admin Dashboard — React 19 SPA,包含 7 个页面
- Dashboard: 健康状态轮询、状态卡片、内存统计、快捷操作
- Login: 二维码展示 + 3 秒自动轮询 + 倒计时 + 登出
- Browser: 探索/搜索/用户三标签页,Feed 网格、详情面板、评论树
- Publish: 图文/视频发布表单,支持标签、可见性、定时发布
- Interactions: 点赞/取消点赞、收藏、评论、回复 + 操作日志
- API Tester: 端点选择器、请求体编辑器、cURL 生成、响应查看、历史记录
- Settings: Token 配置、服务器 URL 设置
后端改动:
- app.ts: 生产环境提供 dist/web/ 静态文件服务 + SPA fallback
- Dockerfile: 添加 web 构建阶段
- package.json: 添加 build:web、build:all、dev:web 脚本
技术栈: React 19 + TypeScript + Vite 6 + Tailwind CSS(暗色主题)
产物: 85.5 KB gzip JS + 4 KB gzip CSS,零重型依赖
|
2026-03-01 13:58:55 +08:00 |
|
kurihada
|
6d35387e2b
|
fix: 清除运行时代理环境变量(构建时代理不应泄漏到运行时)
|
2026-03-01 12:03:54 +08:00 |
|
kurihada
|
ca26f36f9b
|
fix: playwright 锁定 1.52.0 匹配 rebrowser-playwright 版本
|
2026-03-01 11:56:34 +08:00 |
|
kurihada
|
2538a19e98
|
fix: 移除 playwright devDep 解决 Chromium 版本冲突
rebrowser-playwright@1.52 需要 chromium-1169,但 playwright@1.58 的存在
导致 CLI 安装了 chromium-1208,补丁不兼容导致 session closed 崩溃。
移除 playwright,让 rebrowser-playwright 安装正确版本的浏览器。
|
2026-03-01 11:54:35 +08:00 |
|
kurihada
|
a767400400
|
fix: Chromium 添加 --no-sandbox 等 Docker 必要参数
|
2026-03-01 00:40:03 +08:00 |
|
kurihada
|
5489c0bb50
|
fix: 指定 Chromium 路径解决版本不匹配
|
2026-03-01 00:37:26 +08:00 |
|
kurihada
|
d7d3735405
|
fix: 用 rebrowser-playwright CLI 安装 Chromium(修复版本不匹配)
|
2026-03-01 00:32:53 +08:00 |
|
kurihada
|
e13ace58e5
|
fix: 移除 DNS rebinding 防御(Bearer token 认证已足够)
|
2026-03-01 00:29:35 +08:00 |
|
kurihada
|
bfb29bfd2a
|
fix: 生产阶段 apt 源换阿里云镜像
|
2026-03-01 00:15:33 +08:00 |
|
kurihada
|
cfe1d54ba2
|
fix: 生产阶段也接收代理加速 apt-get
|
2026-03-01 00:13:20 +08:00 |
|
kurihada
|
f4b31b303b
|
fix: 代理地址改为 172.17.0.1(Linux Docker 网桥网关)
|
2026-03-01 00:09:33 +08:00 |
|
kurihada
|
c8e9c66f09
|
fix: Docker 构建走代理加速 Chromium 下载
|
2026-03-01 00:05:50 +08:00 |
|
kurihada
|
0ac26b5ea3
|
fix: 去掉 Chromium 国内镜像(npmmirror 未同步该版本)
|
2026-02-28 23:52:27 +08:00 |
|
kurihada
|
32a5ed52f6
|
fix: Chromium 下载使用国内镜像加速
|
2026-02-28 23:49:48 +08:00 |
|
kurihada
|
1188dffc15
|
refactor: 从 pnpm 切换到 npm
- 去掉 corepack/pnpm,Docker 构建不再卡在下载 pnpm
- Dockerfile 使用 npm ci + npm prune --omit=dev
- 删除 pnpm-lock.yaml,新增 package-lock.json
|
2026-02-28 23:48:09 +08:00 |
|
kurihada
|
ab623d12da
|
fix: Dockerfile 添加国内镜像加速和 Chromium 预装
- npm/pnpm 使用 registry.npmmirror.com 镜像
- 构建阶段预装 Chromium 并复制到生产镜像
|
2026-02-28 23:39:46 +08:00 |
|
kurihada
|
28d870b158
|
fix: 添加 playwright 依赖修复 Chromium 安装
rebrowser-playwright CLI 依赖原版 playwright 模块才能安装浏览器
|
2026-02-28 23:25:59 +08:00 |
|
kurihada
|
a6c36442b2
|
feat: 添加 Jenkins 部署配置
- Jenkinsfile: GenericTrigger webhook 触发,构建镜像并部署
- docker-compose.yml: nginx 外部网络,shm_size 1g
- 宿主机端口映射 3010:3000
|
2026-02-28 23:11:47 +08:00 |
|
kurihada
|
8da5f40c9f
|
feat: social-mcp 初始实现
多平台社交自动化 MCP 服务,首批支持小红书。
- 13 个 MCP 工具:登录管理、内容浏览、发布、互动
- 13 个 REST API 端点,支持 Bearer token 认证和限流
- BrowserManager:串行队列、背压、崩溃恢复
- Cookie 持久化:原子写入、0600 权限
- 安全:DNS rebinding 防御、错误脱敏、深层日志 redact
- Docker 部署支持
- 28 个单元测试全部通过
|
2026-02-28 22:57:22 +08:00 |
|