# OSS 媒体转存实测 日期:2026-06-29 ## 结论 当前 `.env` 已配置 OSS 转存接口: ```text CRAWLER_OSS_UPLOAD_URL=http://crawler-upload-v2.aiddit.com/crawler/oss/upload_stream CRAWLER_OSS_UPLOAD_TIMEOUT_SECONDS=60 ``` 接口请求体: ```json { "src_url": "远程媒体直链", "src_type": "image 或 video" } ``` 返回结构里 `oss_object.cdn_url` 是可用 CDN 地址。当前本地封装在 `acquisition/oss.py`: - `upload_stream(src_url, src_type="image"|"video")`:成功返回 CDN URL,失败抛错。 - `to_oss(src_url, src_type)`:成功返回 CDN URL,失败返回原 URL,用于降级。 实测结果:小红书图片、微信公众号图片、抖音视频都可以直接把原始媒体 URL 丢给该接口转存到 CDN。 ## 图文和文字的处理边界 小红书和微信公众号的“图文”需要拆开处理: - 图片:每张图片都有远程 URL,可以逐张调用 `upload_stream(..., src_type="image")` 转成 CDN URL。 - 文字:正文是 `body_text` 字段,不是媒体 URL;该 `upload_stream` 接口不支持直接上传纯文本。 因此完整图文帖的存储结构应是: ```json { "title": "...", "body_text": "...", "images": ["https://res.cybertogether.net/crawler/image/xxx.webp"], "source_url": "原帖 URL" } ``` 如果以后希望正文也进 OSS,需要另做一层:把正文打成 JSON/HTML/Markdown 文件,再用支持文件/字节上传的接口;不能直接复用当前 `src_url + src_type=image|video` 的转存接口。 ## 实测记录 ### 接口样例视频 源 URL: ```text https://res-bj.cybertogether.net/crawler/test2.mp4 ``` 请求: ```json { "src_url": "https://res-bj.cybertogether.net/crawler/test2.mp4", "src_type": "video" } ``` 结果:成功。 CDN URL: ```text https://res.cybertogether.net/crawler/video/f7950e5639acb0cc393edce6edcb63e8.mp4 ``` ### 小红书 测试 query:`人生感悟 选题` 样本: - 标题:`分享|女性成长赛道的热门选题🔥小白直接抄` - content_id:`69bd387c000000001d01e68a` - 详情接口返回图片数:8 - 正文字数:115 - 转存类型:`image` 结果:成功。 CDN URL: ```text https://res.cybertogether.net/crawler/image/8de0ca10016540ebf31eee6428691155.webp ``` ### 微信公众号 测试 query:`短视频脚本 怎么写` 样本: - 标题:`短视频脚本写不好?三个习惯让你的稿子开口就抓人` - 详情接口返回图片数:6 - 正文字数:2794 - 转存类型:`image` 结果:成功。 CDN URL: ```text https://res.cybertogether.net/crawler/image/d7f4306fba37fafd2fe191554bcf7b05.gif ``` ### 抖音 测试 query:`短视频脚本 怎么写` 样本: - 标题:`不会写脚本才能干好新媒体运营#新媒体运营...` - content_id:`7624537985144543729` - 详情接口返回视频数:1 - 转存类型:`video` 结果:成功。 CDN URL: ```text https://res.cybertogether.net/crawler/video/2d4ec0766f8de5bef9b3271aa1c2c7f5.mp4 ``` ## 后续实现建议 1. 搜索到帖子后,不再把媒体下载到本地 `data/search`。 2. 对小红书/微信公众号图文:拉详情后遍历 `image_urls`,逐张转存 OSS,正文继续保存在结构化记录里。 3. 对抖音:取详情里的首个 `video_url`,用 `src_type="video"` 转存 OSS;封面图如需要展示,也可以用 `src_type="image"` 转存。 4. 数据库或 JSON 记录只保存 CDN URL、正文、标题、原帖 URL、平台、query、正交方法等轻量字段。