深览 — 面向 X (Twitter) Web 端深度用户,在博主 媒体 页(/用户名/media)提供全部图片与视频的沉浸式浏览体验。
| 文件 | 用途 |
|---|---|
icons/icon{16,48,128}.png |
扩展图标 |
store-assets/icon-512.png |
商店高清图标 |
store-assets/banner-1280x800.png |
商店宣传图(Chrome / Edge 通用) |
- 即时打开:采集当前可见媒体后进入浏览,并预加载约一屏缩略图数量的目录项
- 懒加载:
- 目录:接近列表末尾时才请求下一页 API
- 图片:默认
large画质,适应窗口显示 - 缩略图:只渲染当前位置附近约 40 个
- 底部 Dock 预览:缩略图随滑动产生 Mac 式放大突出效果
- 推文信息:当前资源下方展示点赞数、评论数,可一键打开原帖
- 点击网格直达:点击任意缩略图,从该项开始进入全屏浏览
- 视频 / GIF:通过 GraphQL 解析最高码率 MP4,支持播放控制
- 键盘:
←/→:上一张 / 下一张Esc关闭Space播放 / 暂停视频Shift + B打开沉浸浏览
- 克隆或下载本仓库
- 打开 Chrome →
chrome://extensions - 开启右上角 开发者模式
- 点击 加载已解压的扩展程序,选择本项目根目录
chmod +x scripts/package.sh # 首次需要
./scripts/package.sh生成 dist/deepgallery-x-<version>.zip,仅含 manifest.json、icons/、src/。
| 商店 | 后台 | 注册费 | 上架文档 |
|---|---|---|---|
| Chrome 网上应用店 | Chrome DevConsole | $5 一次性 | 见下方素材清单 |
| Edge 附加组件 | Partner Center | 免费 | docs/edge-addons-listing.md |
两个商店可共用同一 zip,文案与截图在各自后台填写。Edge 完整步骤、中英文描述、权限说明见 docs/edge-addons-listing.md。
| 文件 | 规格 |
|---|---|
store-assets/icon-512.png |
商店图标 |
store-assets/banner-1280x800.png |
宣传图 1280×800 |
| 界面截图 | 至少 1 张(建议 1280×800)— 待补充 |
| 小宣传图 | 440×280(可选)— 待补充 |
上架需填写隐私政策 URL,见 docs/privacy-policy.md(中英双语)。
托管方式示例:
- 将仓库推送到 GitHub 后,在 Settings → Pages 启用,源选
main分支/docs文件夹;URL 形如https://<user>.github.io/<repo>/privacy-policy.html(可将privacy-policy.md重命名为index.html或配置 Jekyll) - 或使用 GitHub 上该文件的公开链接(部分审核接受 raw / blob 页面)
完整检查清单见上文「打包上架」与 CHANGELOG。
- 打开任意博主的 媒体 页,例如:
https://x.com/elonmusk/media(从主页点「媒体」tab 进入也会自动出现按钮) - 点击右下角 沉浸浏览,或按
Shift + B - 也可直接点击网格中的任意图片/视频缩略图
悬浮按钮 仅 在
/用户名/media页面显示;帖子页、回复页等不会出现。
manifest.json
store-assets/ # 商店宣传素材
icons/
src/
page-hook.js # MAIN world,拦截 GraphQL 媒体数据
media-scanner.js # DOM 扫描与媒体合并
user-media-api.js # UserMedia GraphQL 分页
tweet-api.js # 推文详情与媒体解析
viewer.js # 沉浸式浏览 UI
viewer.css # 样式
content.js # 入口与交互编排
- Manifest V3,仅在
/media页面激活悬浮按钮 page-hook在document_start+ MAIN world 注入,拦截UserMediaGraphQL- 视频/GIF 通过推文 GraphQL API 解析最高码率 MP4
- 图片使用 Twitter
large尺寸地址,适应窗口显示
- 仅支持博主 媒体 页
- 需登录 X 账号才能访问大部分博主的完整媒体页
- X 更新 GraphQL 接口后可能需要适配