Skip to content

Repository files navigation

:name

媒体解析工具箱

✨ 自动解析流媒体平台链接,先发信息卡片,再聚合发送媒体直链 ✨

License Python 3.10+ AstrBot Version


媒体解析工具箱是一个 AstrBot 插件:群里发送主流视频 / 图文 / 游戏平台链接时,机器人自动解析,先发送一张精美的信息卡片(标题、作者、封面、统计数据),再把视频和图片聚合发送。开箱即用,无需配置即可解析大部分平台。

✨ 特性

  • 🎴 rika 风格卡片渲染:把标题、作者、头像、封面、播放/点赞等统计渲染成图片卡片,支持 标准 / 杂志 / 沉浸式 / 信息流 四种布局与深 / 浅主题;封面下载失败自动兜底
  • 🤖 群聊贴表情仲裁:群里有多个机器人时,通过贴表情自动竞争解析权,保证一条链接只有一个机器人响应;同时用贴表情反馈解析状态(占坑 / 成功 / 失败)
  • 📺 多平台聚合解析:B站、B站直播、抖音、TikTok、快手、微博、小红书、闲鱼、今日头条、小黑盒、Steam、Twitter/X、Pixiv
  • 🔁 灵活发送:消息聚合(不聚合 / 全部聚合 / 按条件聚合)、媒体中转、引用链接一键导出 ZIP
  • 📝 正文翻译:可选大模型翻译标题与正文(AstrBot 内置 AI 或自定义 OpenAI 兼容接口)
  • 🛠️ 细粒度配置:每个平台可独立设置全部发送 / 仅文本 / 仅富媒体 / 关闭,支持解析频率限制、白黑名单、分平台代理、B站 Cookie 高画质与扫码协助登录

📺 支持平台

平台 支持的链接类型 能力
B站 短链(b23.tv/...)、视频(bilibili.com/video/av|BV...)、番剧(bangumi/play/ep|ss...)、动态(opus/...、t.bilibili.com/...)、小程序卡片 视频 / 图片 / 文本 / 热评
B站直播 直播间链接(live.bilibili.com/<房间号>) 仅卡片(含直播间封面,不下发媒体)
抖音 短链(v.douyin.com/...)、视频(douyin.com/video/...)、图集 / 多分段(note/、slides/) 视频 / 图片 / 文本
TikTok 短链(vm.tiktok.com/...、vt.tiktok.com/...)、视频(@user/video/...)、图集(@user/photo/...) 视频 / 图片 / 文本
快手 短链(v.kuaishou.com/...)、作品(kuaishou.com/...、gifshow.com/...) 视频 / 图片 / 文本
微博 微博视频 / 图文链接 视频 / 图片 / 文本 / 热评
小红书 笔记链接(xiaohongshu.com/explore/...、xhslink.com/...);移动端分享链接自动去水印 视频 / 图片 / 文本 / 热评
闲鱼 商品链接(goofish.com/item?id=...、h5.m.goofish.com/item...,短链 m.tb.cn/... 自动跟随跳转) 图片 / 文本
今日头条 短链(m.toutiao.com/is/...)、文章 / 视频 / 微头条(toutiao.com/article|video|w/...)、小程序卡片 视频 / 图片 / 文本
小黑盒 游戏详情(xiaoheihe.cn/app/topic/game/...、api.xiaoheihe.cn/game/share_game_detail?...)、BBS 帖子(app/bbs/link/...) 视频 / 图片 / 文本
Steam 商店游戏页(store.steampowered.com/app/...) 视频 / 图片 / 文本
Twitter / X 推文链接(twitter.com/.../status/...、x.com/.../status/...) 视频 / 图片 / 文本
Pixiv 插画 / 漫画(pixiv.net/artworks/...、pixiv.net/i/...,支持 /en/ 前缀) 图片 / 文本

🚀 安装

  1. 依赖会在插件安装时依据 requirements.txt 自动安装:aiohttp、cryptography、qrcode[pil]、pillow
  2. 在 AstrBot WebUI 插件市场搜索 astrbot_plugin_media_kit 安装,或把本仓库克隆到 AstrBot 的 data/plugins/ 目录后重启

安装后无需任何配置即可解析大部分平台。


🧩 解析器与输出模式

在 解析器与输出模式 中,每个平台可独立选择:

  • 关闭:不解析该平台链接
  • 全部发送:发送卡片 / 文本元数据,并发送图片、视频
  • 仅文本:只发送卡片 / 文本,不下载发送媒体
  • 仅富媒体:只发送图片、视频

默认所有平台均为 全部发送。

B站直播平台仅提供 关闭 / 全部发送 / 仅文本 三种模式(直播本就只产生卡片,不发媒体);建议保持 全部发送。


🎴 卡片渲染

在 消息输出 → 附加内容:卡片渲染 中开启(依赖 pillow)。可配置:

  • 布局:标准(顶部全宽封面)/ 杂志(左封面右信息)/ 沉浸式(全幅背景)/ 信息流(紧凑列表)
  • 主题:深色 / 浅色
  • 模式:卡片 + 文本同条发送、卡片 + 文本分别发送、仅卡片
  • 卡片宽度、封面是否全幅展示、视频封面是否显示播放按钮、自定义字体

渲染失败会自动回退为纯文本,不影响媒体发送。修改视觉样式后旧卡片缓存会自动失效并重渲染。

发送顺序固定为:先发送信息卡片,再聚合发送视频与图片。


🤖 群聊贴表情仲裁与状态反馈

在 aiocqhttp(OneBot v11,如 NapCat、Lagrange)平台的群聊中,机器人会在被解析的链接消息上贴 QQ 表情:

  • 多 Bot 仲裁:同一条链接被群内多个支持该协议的机器人同时看到时,机器人之间通过固定表情(占坑、胜出确认)的点赞列表做弱一致仲裁,最终只有一个机器人解析并发送,避免重复刷屏。仲裁顺序按消息时间片确定性轮转,所有机器人结论一致;该协议与 astrbot_plugin_parser 兼容,不同插件的机器人同群也能互相仲裁。
  • 状态反馈:识别到链接即贴占坑表情(已接手),解析成功贴成功表情,解析失败贴失败表情,方便判断机器人是否在运行。

默认开启,仅在协议端支持 set_msg_emoji_like / fetch_emoji_like 的群聊中自动生效;私聊、其他平台或不支持的协议端自动跳过,不影响解析。

可在 贴表情反馈与多 Bot 仲裁 配置项中分别控制:

  • 启用多 Bot 贴表情仲裁:关闭后本插件不再参与贴表情仲裁(只靠协议端/其他仲裁逻辑避免重复解析)。占用表情 289/124 是跨插件协议的一部分,不可修改,否则会与 astrbot_plugin_parser 的机器人失配。
  • 启用成功/失败状态贴图:控制解析成功/失败时是否贴状态表情。
  • 成功表情 ID / 失败表情 ID:可自定义成你的协议端贴表情面板中存在且语义合适的表情 ID(默认“对的对的”=478、“不对不对”=479)。若协议端不支持某个表情,会被静默忽略、不影响解析。

🎮 Steam 与小黑盒

  • Steam:store.steampowered.com/app/<appid>/... 默认调用 Steam 官方 appdetails 接口获取游戏信息、截图与预告视频。在 Steam 设置 中开启「使用小黑盒路径」后,改用小黑盒完整游戏详情,可获得小黑盒评分、在线人数等更多统计。
  • 小黑盒:游戏详情走签名接口(含评分、价格、类型、发行信息、预告视频),BBS 帖子解析正文与媒体。相关加解密依赖 cryptography 库。

Steam / 小黑盒媒体多走 Steam CDN,下载速度不佳时可在 代理设置 → Steam 代理 中为解析 / 图片 / 视频分别启用代理。


🔴 B站直播(仅卡片)

发送 live.bilibili.com/<房间号> 直播间链接时,机器人只返回一张信息卡片:以直播间封面为卡片主视觉,展示直播间标题、作者、开播状态、在线人数、分区与公告。不下载、不发送任何视频或图片媒体,避免对持续直播流的无意义下载。

  • 使用 B站公开房间接口(room/v1/Room/get_info)与直播间页面获取信息,无需登录
  • 支持 b23.tv/... 直播短链:解析器会先展开短链,确认为直播间后解析;若短链指向视频等内容则自动交由对应平台解析器处理
  • 未开播的房间同样返回卡片,并标注「未开播」
  • 直播间封面缺失或图片下载失败时卡片自动回退为纯文本,不影响文字信息展示
  • 该能力通过独立的 「B站直播」 平台开关控制(解析器与输出模式 → B站直播)
  • 作为仅卡片结果返回时,不会误提示「没有可发送的内容 / 下载失败」——卡片本身即解析结果
  • 抖音直播因页面不携带房间数据、接口风控强,暂不支持解析

📦 消息聚合、封面与 ZIP 归档

  • 聚合模式(消息输出 → 发送行为:消息聚合):不聚合 逐条发送;全部聚合 尽量用合并转发(超过大视频阈值的媒体仍单独发送);按条件聚合 在图片 / 视频 / 节点数达到阈值时聚合。
  • 视频仅发送封面:开启后不发视频,改为发送封面图;无封面时尝试用 ffmpeg 截取第一帧(依赖缓存目录与 ffmpeg)。
  • ZIP 归档:在 导出行为:ZIP 归档 配置命令后,引用含链接的消息并单独发送该命令,即可把解析详情与已下载媒体打包为 ZIP(含 metadata.txt 与 details.json),媒体总量受上限约束。

解析频率限制 默认关闭,可分别按「同链接」「同用户」设置时间窗内最大解析次数,记录持久化并自动裁剪。


🍪 B站 Cookie 与画质增强

配置 Cookie 后可解锁更高画质(1080P+、4K),视频通过 DASH 音视频流下载合并(需缓存目录可用)。

  • 在 B站增强 → 携带 Cookie 解析 开启并填入 Cookie(浏览器 F12 → Network → 任意请求的 Cookie 头),选择最高画质。
  • 管理员协助登录:开启后 Cookie 失效时机器人私聊管理员引导扫码续期;管理员也可私聊发送 B站更新Cookie 立即发起扫码。
  • 缓存目录不可用时会自动旁路 Cookie / DASH / 协助登录,回退无 Cookie 直链。

🖼️ Pixiv

支持插画与漫画多页图片,优先原图,附带作品标签并标注 R-18 / R-18G / AI 生成状态。登录或年龄限制作品需在 Pixiv 设置 填写含 PHPSESSID 的 Cookie;无法直连时配置代理地址并开启 Pixiv 代理。Pixiv 图片需带 Referer 下载并缓存发送。


🔁 媒体中转模式

当 AstrBot 与协议端(NapCat、Lagrange 等)不在同一台机器或无法共享文件目录时,本地下载的媒体对协议端不可达。开启 媒体中转 后,通过 AstrBot 内置 HTTP 服务把已缓存文件转为临时回调 URL 发送:填写协议端可达的 AstrBot 回调地址(如 http://host:6185)并设置缓存有效期即可。该模式只增强已成功缓存的媒体,不强制下载全部媒体。


⚙️ 缓存目录与网络建议

确保媒体缓存目录可用能显著提升成功率:消息平台用直链发送媒体时无法带 header / referer / cookie,风控严格的平台会返回 403。

  • 必须缓存目录:图片发送、B站 DASH 合并、微博视频(需 referer)、小黑盒视频 / M3U8、Twitter/X 视频、Pixiv 图片。
  • 建议缓存目录:TikTok、小红书(媒体有时效与鉴权)。
  • Docker 部署请把缓存目录配置为协议端可访问的共享目录;非 Docker 环境自动使用 AstrBot 插件数据目录。
  • TikTok / Twitter / Pixiv 等受地区与风控影响明显,必要时在 代理设置 配置代理。媒体连接只允许公网地址,显式配置的代理视为受信端点;Clash/TUN 的 fake-ip 模式可能把域名映射到保留网段被安全策略拒绝,请改用 redir-host / 真实 DNS。

📝 其他说明

  • 机器人自动跳过自身消息以防重复解析。
  • B站直播:live.bilibili.com/&lt;房间号&gt; 链接返回仅信息卡片(标题、作者、直播间封面、开播状态、分区、公告),不下发视频 / 图片媒体;依赖 B站公开接口,无主播封面或接口风控时卡片可能缺失封面但仍发送文字。抖音直播因公开页面不携带房间数据、接口强风控,暂不支持解析。
  • 非 JPG/PNG 图片会尝试转换为 PNG,转换失败保留原格式;HLS 选择最高分辨率并用 ffmpeg 封装,拒绝 EXT-X-BYTERANGE 清单以避免损坏文件。
  • 触发方式:默认自动解析消息中的链接;也可配置手动触发关键词,或引用含链接的消息并附关键词触发。

🙏 鸣谢

欢迎提交 Issue 与 PR。

About

AstrBot 流媒体聚合解析插件:rika 风格卡片 + 多平台解析(含小黑盒/Steam/X),群聊贴表情仲裁

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages