发布科普短视频与Reels 是做什么的?
针对 Only Sci Facts 频道(YouTube @onlyfactsci,Instagram onlyfactsci)的端到端工作流程:
选择剧集 → 压缩以适合上传 → 制作封面 → 撰写文案 → 发布到 YouTube Shorts 和 Instagram Reels → 验证。
该流程适用于任何包含 9:16 MP4 格式科普视频的文件夹。
脚本位于此文件旁的 scripts/ 目录中。如果不存在,请克隆 https://github.com/pranaykrpiyush/video-publishing-skill 并使用 publish-explainer-shorts/scripts/。
这些脚本需要 ffmpeg、ffprobe、带有 Pillow 和 numpy 的 Python 3,以及 Inter Display 字体。任何粗体无衬线字体都可以,只要将 FONT_DIR 环境变量指向它即可。
0. 开始之前
- 询问(或查找)剧集文件夹。剧集文件命名为
NN-slug.mp4,例如14-falling-into-a-black-hole.mp4。 - 询问要发布多少集以及在哪些平台发布,除非请求中已明确说明。
- 检查用户是否已在 Chrome 中登录 YouTube Studio 和 Instagram:分别打开每个网站查看。
- 已发布过? 检查 YouTube Studio的 Shorts 列表和 Instagram的网格,避免重复发布同一集。
1. 挑选最具爆款潜力的剧集
-
盘点:
scripts/inventory.sh <文件夹>输出每个文件的时长、分辨率和音频电平。 -
排除标准:
- 时长超过 60 秒(作为 Shorts 仍可工作,但完播率会下降)或分辨率不是 1080×1920;
- 静音或音频削波(最大音量高于 −0.5 dB);
- 平台会限制的话题(例如毒品,如“LSD 镜子”这集;露骨或医疗内容);
- 已经发布过的剧集。
-
查看内容。
scripts/contact_sheet.sh <视频> <输出文件.jpg>生成一张图像,包含每 4 秒一帧的缩略图。阅读这些接触表。 -
按照以下每个标准对剩余剧集进行 1-5 分评分:
- 首秒钩子:一个巨大的数字、一个悖论或“如果……会发生什么”。
- 好奇心缺口:违反直觉的答案。
- 视觉冲击力:黑洞、星系或爆炸优于图表。
- 评论诱饵:一个开放性问题或多个相互竞争的答案。
- 广泛吸引力:太空和人体优于小众话题。
太空悖论(黑洞、费米悖论、星尘、暗物质)通常得分最高。
-
告知用户你的选择,每集附上一句理由,然后继续。除非用户要求批准,否则无需等待确认。
2. 压缩以适合上传
Chrome 扩展程序的 file_upload 工具拒绝大于 3.8 MB 的文件。重新编码后的文件也是用户自行挑选文件时你会保留的版本。
scripts/compress_for_upload.sh <输入.mp4> <输出.mp4>
该脚本使用 x264 编码器,CRF 值 26、-preset slow、AAC 音频 96k 和 +faststart。然后它会输出文件大小以及与原始文件的 SSIM(结构相似性):
- 目标 SSIM 至少为 0.995,这在视觉上无损。
- 如果文件仍然超过 3.8 MB,请使用
CRF=28重新运行。
将输出文件放入剧集文件夹下的 upload-ready/ 子文件夹中。切勿覆盖原始文件。
3. 制作封面
python3 scripts/make_cover.py --style blackhole \
--kicker "WHAT HAPPENS IF" --headline "YOU FALL IN?" \
--tagline "Two endings.|Both true." --out 14-cover.png
python3 scripts/make_cover.py --style galaxy \
--kicker "100,000,000,000 STARS" --headline "WHERE IS|EVERYONE?" \
--tagline "No ships.|No signals." --out 12-cover.png
python3 scripts/make_cover.py --style frame --video 05-why-the-sky-is-blue.mp4 --at 12 \
--kicker "WHY IS THE" --headline "SKY BLUE?" --tagline "It's not|reflecting the sea." --out 05-cover.png
参数说明:
--headline中的|用于换行。--tagline中的|将文本分割为白色部分和橙色部分。--style frame从视频的烧录字幕之间提取画面。如果画面边缘出现多余的标签,可使用--art-top/--art-bottom移动条带区域;源帧的默认值为 420 和 1300 像素。
每个封面均为 1080×1920 分辨率,所有文本均保持在中央 1080×1350 区域内,以确保 Instagram 的网格裁剪不会截断文字。
文案规则:
- 标题是一个问题或一个震撼的数字。保持为 2-4 个单词的大写形式。
- 引语用于铺垫。
- 标签行用于预告亮点,但不要剧透。
使用前逐一查看封面:使用 Read 工具打开。
4. 撰写文案
YouTube 标题。 保持在 70 个字符以内,写成视频所回答的问题形式,加上一个表情符号和 #shorts。例如:What happens if you fall into a black hole? 🕳️ #shorts
描述和 Instagram 文案。 两个平台使用相同的模板:
<钩子句:悖论或大数字> <表情符号>
<2 句话:结论,用简单的话说明>
<评论诱饵问题:"Which do you believe? 👇" / "Which version would you rather experience? 👇">
Follow (@onlyfactsci on IG) for a new mind-bending science fact every day 🚀
#<话题> #<话题2> #space #science #universe #astronomy #spacefacts #shorts|#reels
5. 发布到 YouTube Shorts(Claude 在 Chrome 中操作)
- 加载 chrome-browser 技能。运行
tabs_context_mcp,然后打开一个新标签页。 - 访问
https://studio.youtube.com/channel/<CHANNEL_ID>/videos/upload?d=ud。频道 ID 可在登录后的 Studio URL 中找到。 - 上传文件:
- 先尝试
find"file-input",然后使用file_upload并指定设备路径。 - 已知限制:
file_upload经常拒绝用户已连接文件夹中的文件(“only files this session is allowed to read”)。不要重试超过一次。请让用户点击 选择文件 并选取upload-ready/<文件>.mp4。切勿自行点击“选择文件”,因为这会打开一个你无法看到的本地对话框。
- 先尝试
- 详细信息:
- 标题字段:点击它,
ctrl+a,然后输入。 - 描述:点击,然后输入。
- 输入
#标签会弹出建议下拉菜单。点击对话框的空白区域关闭它,不要按 Escape 键。 - 目标受众:使用
find查找“No, it's not made for kids”,然后使用scroll_to并点击它。 - 缩略图:用户点击缩略图下的 上传文件 并选取封面。Studio 支持自定义 Shorts 缩略图。
- 标题字段:点击它,
- 点击 下一步 三次(视频元素、检查,然后是可见性)。选择 公开,然后 发布。
- 验证:打开
/videos/short并运行get_page_text。新标题应显示 公开 和 已发布。
6. 发布到 Instagram Reels(Claude 在 Chrome 中操作)
- 打开
https://www.instagram.com/。点击 稍后再说 关闭“开启通知”提示。 - 点击侧边栏中的 创建,然后选择 帖子。
- 用户点击 从计算机选择 并选取 MP4 文件。与 YouTube 相同,文件选择器存在限制。
- 裁剪步骤: Instagram 默认使用 1:1,这会将视频裁剪为正方形。
- 点击预览左下角的裁剪图标,然后选择 原始。
- 检查预览是否为竖屏(9:16),然后点击 下一步。
- 编辑步骤: 用户点击“封面照片”旁的 从计算机选择 并选取封面 PNG 文件。
- 检查封面是否与视频匹配。 播放预览并比较内容和修剪长度(例如费米悖论 55 秒,黑洞 47 秒)。用户很容易选错封面。
- 点击 下一步。
- 文案步骤:
- 点击文案框并输入文案。
- 末尾加一个尾随空格,以便关闭标签下拉菜单。
- 除非用户要求,否则关闭“分享到 Facebook”。
- 点击 分享。使用
find查找“Share button in New reel dialog header”,然后通过引用点击,因为对话框调整大小时坐标会漂移。 - 等待直到出现“Your reel has been shared.”(20-40 秒),然后点击 完成。
7. 个人资料和品牌形象(用户要求时执行)
python3 scripts/brand_assets.py --outdir <目录>会生成:onlyscifacts-profile-picture.png:1024²,一个带有橙色环的黑洞;onlyscifacts-youtube-banner.png:2560×1440,文本位于 1546×423 的安全区域内。
- Instagram:
- 简介:
instagram.com/accounts/edit/,然后点击 提交。 - 名称:
accountscenter.instagram.com/profiles/,然后选择账户,再点击 名称,最后点击 完成。14 天内只能更改两次。 - 头像:帐户中心,然后选择 个人资料照片,再点击 上传新照片。用户选择文件。
- 简介:
- YouTube: 访问
studio.youtube.com/channel/<ID>/editing/profile。- 描述:输入文本。
- 头像:点击 更改。横幅:点击 上传。用户选择这两个文件。
- 点击 发布。
- 频道名称 14 天内只能更改两次。重命名前需征求用户同意。
- 始终向用户展示简介和描述文本,并在保存前获得确认。个人资料的更改是公开的。
规则
- 发布是公开的且难以撤销。只发布用户要求的内容。超出请求范围的操作(例如编辑旧帖子、归档帖子或重命名频道)需先确认。
- 切勿输入密码。如果网站要求登录,由用户完成。
- 报告已发布内容的标题和可见性。提及任何需要用户自行完成的操作,例如文件选择。