Communitygithub.com

发布科普短视频与Reels

从竖版科普视频文件夹中挑选最具爆款潜力的剧集,制作引人注目的封面和文案,并通过Claude在Chrome中发布到YouTube Shorts和Instagram Reels。当用户要求发布、上传剧集/短视频/Reels或更新频道品牌形象时使用。

发布科普短视频与Reels 是什么?

该技能实现了一个端到端的自动化工作流程,专门用于“Only Sci Facts”频道(YouTube @onlyfactsci,Instagram onlyfactsci)发布科普短视频。它能够从包含9:16 MP4格式科普视频的文件夹中,自动筛选出最具爆款潜力的剧集,通过多种指标(如首秒钩子、好奇心缺口、视觉冲击力、评论诱饵和广泛吸引力)进行评分。技能还支持视频压缩(确保文件小于3.8 MB)、生成三种风格的封面(黑洞、星系、帧抽取),并自动撰写YouTube标题和Instagram文案。最终通过Claude在Chrome浏览器中模拟用户操作,完成YouTube Shorts和Instagram Reels的发布,并在发布后验证状态。该技能适用于任何包含9:16 MP4文件的文件夹,但需要依赖ffmpeg、Python 3及Pillow等工具。它严格遵循“不重复发布”、“不输入密码”等规则,确保发布内容符合用户要求并降低出错风险。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/pranaykrpiyush/video-publishing-skill/tree/HEAD/publish-explainer-shorts

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

发布科普短视频与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. 挑选最具爆款潜力的剧集

  1. 盘点:scripts/inventory.sh <文件夹> 输出每个文件的时长、分辨率和音频电平。

  2. 排除标准:

    • 时长超过 60 秒(作为 Shorts 仍可工作,但完播率会下降)或分辨率不是 1080×1920;
    • 静音或音频削波(最大音量高于 −0.5 dB);
    • 平台会限制的话题(例如毒品,如“LSD 镜子”这集;露骨或医疗内容);
    • 已经发布过的剧集。
  3. 查看内容。scripts/contact_sheet.sh <视频> <输出文件.jpg> 生成一张图像,包含每 4 秒一帧的缩略图。阅读这些接触表。

  4. 按照以下每个标准对剩余剧集进行 1-5 分评分:

    • 首秒钩子:一个巨大的数字、一个悖论或“如果……会发生什么”。
    • 好奇心缺口:违反直觉的答案。
    • 视觉冲击力:黑洞、星系或爆炸优于图表。
    • 评论诱饵:一个开放性问题或多个相互竞争的答案。
    • 广泛吸引力:太空和人体优于小众话题。

    太空悖论(黑洞、费米悖论、星尘、暗物质)通常得分最高。

  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 中操作)

  1. 加载 chrome-browser 技能。运行 tabs_context_mcp,然后打开一个新标签页。
  2. 访问 https://studio.youtube.com/channel/<CHANNEL_ID>/videos/upload?d=ud。频道 ID 可在登录后的 Studio URL 中找到。
  3. 上传文件:
    • 先尝试 find "file-input",然后使用 file_upload 并指定设备路径。
    • 已知限制: file_upload 经常拒绝用户已连接文件夹中的文件(“only files this session is allowed to read”)。不要重试超过一次。请让用户点击 选择文件 并选取 upload-ready/<文件>.mp4。切勿自行点击“选择文件”,因为这会打开一个你无法看到的本地对话框。
  4. 详细信息:
    • 标题字段:点击它,ctrl+a,然后输入。
    • 描述:点击,然后输入。
    • 输入 #标签 会弹出建议下拉菜单。点击对话框的空白区域关闭它,不要按 Escape 键。
    • 目标受众:使用 find 查找“No, it's not made for kids”,然后使用 scroll_to 并点击它。
    • 缩略图:用户点击缩略图下的 上传文件 并选取封面。Studio 支持自定义 Shorts 缩略图。
  5. 点击 下一步 三次(视频元素、检查,然后是可见性)。选择 公开,然后 发布。
  6. 验证:打开 /videos/short 并运行 get_page_text。新标题应显示 公开 和 已发布。

6. 发布到 Instagram Reels(Claude 在 Chrome 中操作)

  1. 打开 https://www.instagram.com/。点击 稍后再说 关闭“开启通知”提示。
  2. 点击侧边栏中的 创建,然后选择 帖子。
  3. 用户点击 从计算机选择 并选取 MP4 文件。与 YouTube 相同,文件选择器存在限制。
  4. 裁剪步骤: Instagram 默认使用 1:1,这会将视频裁剪为正方形。
    • 点击预览左下角的裁剪图标,然后选择 原始。
    • 检查预览是否为竖屏(9:16),然后点击 下一步。
  5. 编辑步骤: 用户点击“封面照片”旁的 从计算机选择 并选取封面 PNG 文件。
    • 检查封面是否与视频匹配。 播放预览并比较内容和修剪长度(例如费米悖论 55 秒,黑洞 47 秒)。用户很容易选错封面。
    • 点击 下一步。
  6. 文案步骤:
    • 点击文案框并输入文案。
    • 末尾加一个尾随空格,以便关闭标签下拉菜单。
    • 除非用户要求,否则关闭“分享到 Facebook”。
  7. 点击 分享。使用 find 查找“Share button in New reel dialog header”,然后通过引用点击,因为对话框调整大小时坐标会漂移。
  8. 等待直到出现“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 天内只能更改两次。重命名前需征求用户同意。
  • 始终向用户展示简介和描述文本,并在保存前获得确认。个人资料的更改是公开的。

规则

  • 发布是公开的且难以撤销。只发布用户要求的内容。超出请求范围的操作(例如编辑旧帖子、归档帖子或重命名频道)需先确认。
  • 切勿输入密码。如果网站要求登录,由用户完成。
  • 报告已发布内容的标题和可见性。提及任何需要用户自行完成的操作,例如文件选择。

相关技能