Skip to content

WeChat 剪藏:视频播放器 UI 文本泄露,大量孤立 ** 标记 #72

@bruceding

Description

@bruceding

问题

微信公众号文章剪藏后,格式存在严重问题。

以文档 331 为例(https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247560111...):

1. 视频播放器 UI 文本完全暴露

WeChat 内嵌视频的播放器控件文本全部被提取为正文:

已关注
关注
重播 分享 赞
关闭
观看更多
更多
退出全屏
分享视频
,时长 02:08
0 / 0
00:00 / 02:08
切换到横屏模式
继续播放
进度条,百分之0
播放
00:00
/02:08
倍速
全屏
倍速播放中
0.5倍 0.75倍 1.0倍 1.5倍 2.0倍
超清 流畅
您的浏览器不支持 video 标签
继续观看
阿里云开发者已关注
分享点赞在看
已同步到看一看
写下你的评论
视频详情

2. 大量孤立 ** 标记

文档中散布着大量不成对的 **,通常是 WeChat HTML 中视频组件的样式标记被错误解析:

**
**

**
关注
** 重播 ** 分享** 赞

3. 标题漏字

"功能二演示:一键发" — 应该是 "一键发布",漏了"布"字(可能是 WeChat 页面渲染时文字被 JS 动态填充,提取时未完全加载)。

根因分析

WeChat 文章的 HTML 结构中,视频播放器使用 JS 动态渲染,包含大量 UI 文本节点。当前的 ExtractContent 逻辑(backend/api/web.go)可能:

  1. 没有过滤掉视频播放器相关的 DOM 节点 — 需要识别并移除 WeChat 视频组件(如 .video_iframe.mp_video_player.wx_video 等选择器)
  2. ** 是 WeChat 富文本中用来标记加粗/样式的,提取时没有正确处理嵌套的 <strong>/<b> 标签
  3. 动态内容未等待完全加载 — 如果是通过 headless browser 获取,视频相关文字可能还在渲染中

建议修复

  1. ExtractContent 中增加 WeChat 特定清理

    • 移除视频播放器相关元素(.video_iframe, .mp_video_player, .wx_video, .js_video_player
    • 清理 WeChat 特有 UI 文本("已关注"、"重播"、"倍速"等)
    • 过滤孤立的 **
  2. 增加后处理步骤:对提取后的 markdown 做一轮清理

    • 去除连续 3 行以上只有 ** 的块
    • 去除包含"您的浏览器不支持 video"等浏览器提示文本
  3. 考虑用 Postprocess 钩子(已有 browserSiteConfig 机制)为 WeChat 域名注册专用后处理器

影响范围

所有通过 extension-wechat(UploadWeb / ClipWeb 经 needsBrowser 识别为 WeChat)剪藏的微信公众号文章都受影响。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions