mcpField
P
publish

publish

github.com/melvynx营销与增长69405 次安装1 周前更新
代码仓库

关于 publish

Publish 是面向创作者的发布技能,用于将完成的视频发布到个人账号。它会准备各平台所需文件和文案,先提交计划等待确认,并支持通过 Treg 发布或手动操作。

主要功能

  1. 01选择完成的视频
  2. 02准备社交平台导出文件和封面
  3. 03撰写各平台发布文案
  4. 04发布前要求确认
  5. 05支持 Treg 或手动发布

适用场景

  1. 01将完成的短视频发布到社交平台
  2. 02准备 YouTube 视频和缩略图
  3. 03未配置 Treg 时手动发布

MCP 相关

Publish 可通过基于 MCP 的发布途径 Treg,将内容发布到已连接的 Instagram、TikTok 和 YouTube 账号;也支持不使用 Treg 的手动发布。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/melvynx/video-agent-skills --skill publish

安装后在 Claude Code 中输入/publish确认已加载。

详细介绍

发布

发布一条完成的视频,发到创作者自己的账号上。制作视频的流程是 /short-editing。

第 5 步的计划必须得到创作者明确同意,才能发布任何内容。 这份同意仅适用于该视频。

使用他们的语言与他们沟通。<edit> = video-agent/edits/<slug>/。

1. 选择视频

按顺序匹配,匹配到第一项即停止:

  1. 他们给出的路径、slug 或标题:<edit>/output/<name>.mp4(<edit> = video-agent/edits/<name>/,绝不能使用 -rough 剪辑版)。
  2. 本次对话中完成的视频。
  3. 没有:最新的 video-agent/edits/*/output/*.mp4(不是 -rough)。在计划中写明视频名称。

下文中的 <video> = 该文件;post.md 与它位于 output/ 目录下。

然后检查 <edit>/published.md:如果文件中已有该平台的记录,告知他们并停止(除非他们想再次发布)。

用 ffprobe 检查格式:竖屏(短视频,适用于 YouTube Shorts、Reels 和 TikTok)或横屏(长视频,默认仅发布到 YouTube)。

2. 设置 Treg(一次性)

Treg 会免费帮他们发布到自己的账号。检查:

treg --version
treg connections ls

他们要发布到的每个平台都必须出现在列表中,并具备发布权限(Instagram 的 scopes 中包含 content_publish,TikTok 包含 video.publish,YouTube 包含 youtube.upload 或 youtube)。

如果缺少:用一句话说明并询问,然后:

  • 安装(适用于 macOS 和 Linux;Windows 用户使用 MCP:claude mcp add --transport http treg https://treg.to/mcp/,然后用 /mcp 登录):
    curl -fsSL https://treg.to/install.sh | sh
    treg login
    
  • 连接他们要发布到的平台,每个平台都会打开其自己的登录页面:
    treg connections connect --provider instagram --capability post
    treg connections connect --provider tiktok --capability post
    treg connections connect --provider youtube --capability post
    
    Instagram 需要专业账号(Creator 或 Business,可在应用设置中免费切换)。

他们不想用 Treg:可使用手动方式(6a),无需设置。

3. 文件

  • 母版:<video>,完整画质,用于 YouTube。
  • 社交平台导出文件(仅短视频):<edit>/social.mp4,采用 H.264 + AAC,大小低于 30 MB,以便 Treg 托管并发布到 Instagram(TikTok 接受最高 64 MB)。如果文件缺失或比母版旧,则重新编码,使码率符合大小要求(约为 28 MB × 8000 ÷ 时长秒数,再减去音频的 160 kb/s,单位为 kb/s):
    ffmpeg -y -i <video> -c:v libx264 -preset slow -b:v <rate>k -maxrate <rate>k -bufsize <2x rate>k -pix_fmt yuv420p -c:a aac -b:a 160k -movflags +faststart <edit>/social.mp4
    
    检查文件大小,并确认可以解码:ffmpeg -v error -i <edit>/social.mp4 -f null -。
  • 封面:始终准备 <edit>/cover.jpg。如果没有封面,Instagram 会使用第 0 帧,通常是眨眼或空白画面。已用 /codex-images 在 <edit>/images/ 中生成的图片:展示给他们看,将他们选中的图片复制为 <edit>/cover.jpg。否则从开场钩子中选取:人物睁着眼睛,钩子卡片完整显示。生成视频前 3 秒的联系表,查看后提取选定时间 <t> 对应的画面:
    ffmpeg -v error -y -ss 0.1 -t 3 -i <video> -vf "fps=10,scale=270:-1,tile=6x5" -frames:v 1 video-agent/.tmp/hook-sheet.jpg
    ffmpeg -v error -y -ss <t> -i <video> -frames:v 1 -q:v 2 <edit>/cover.jpg
    
    竖屏:将关键视觉内容放在中央 3:4 区域内(y 从 240 到 1680),个人资料网格会裁切到该区域。长视频:1280x720 的缩略图更合适;提供 /codex-images 来制作,或使用视频帧。

4. 文案

如果 <edit>/output/post.md 存在,则从中获取(由 short-editing 编写);否则根据视频脚本或转录稿以及 video-agent/voice.md,使用视频所用语言编写:

  • 说明文字(Instagram 和 TikTok):第一行要吸引人,但不要逐字重复口播钩子(前 125 个字符会在“更多”之前显示);用 2 到 4 行短句说明观众能获得什么;加入 voice.md 中的行动号召;最后加 3 到 5 个主题标签。不要用 #fyp,也不要堆满表情符号。
  • TikTok 说明文字:仅在需要与其他平台不同的时候提供(更短,或使用不同的主题标签)。
  • YouTube 标题:Shorts 少于 60 个字符,长视频少于 70 个字符;说明视频能带来什么,并确保内容属实。
  • YouTube 描述:说明文字、长视频的章节(来自 post.md),然后是他们的链接(询问一次,并将链接添加到 voice.md)。

如果已安装该技能,使用 studio-script 的人性化处理流程(其 references/humanize.md)处理所有文案。所有人名、数字和说法都必须来自视频,不得添加任何内容。将文案保存到 <edit>/output/post.md,每段文案使用一个标题。

5. 计划(必需)

  • 平台:短视频发布到 YouTube + Instagram + TikTok,长视频发布到 YouTube,除非用户另有说明。
  • 时间:用户指定的时间(以其当地时间和 UTC 表示),否则为现在。
  • 各平台发布方式:Treg(已连接)或手动。Instagram 和 TikTok 无法通过 Treg 定时发布:立即发布。YouTube 可以安排在指定日期发布(设为私享 + publishAt)。如果要在之后的时间发布到 Instagram 或 TikTok:届时再次运行 /publish,或者改为手动发布并使用应用的排期工具。

显示计划并等待用户明确同意:

PLAN · budget-margins · 0:47 · social.mp4 18 MB
Cover: cover.jpg (0.8 s)  [shown as an image]
YouTube Shorts · Treg · 2026-10-11 18:00 Paris (16:00 UTC) · private until then
Instagram Reel · Treg · now
TikTok · manual (not connected)
Title: Your margin is lying to you
Caption: ...
Reply yes to publish, or tell me what to change.

如果用户更改计划:应用更改,并再次显示计划。

6a. 手动发布

打开文件夹(macOS 使用 open <edit>,Windows 使用 explorer <edit>,Linux 使用 xdg-open <edit>),然后给出以下步骤:

  • YouTube:studio.youtube.com → Create → Upload videos → <video> → 使用 output/post.md 中的标题和说明,将 cover.jpg 设为缩略图 → Visibility → Schedule 或 Public。
  • Instagram:打开应用 → + → Reel → 选择 social.mp4 → 添加说明文字 → Edit cover → Add from camera roll → 选择 cover.jpg → Share(或专业账户可在高级设置中选择 Schedule)。
  • TikTok:打开应用或访问 tiktok.com/upload → 选择 social.mp4 → 添加说明文字 → 在封面时间点选择封面 → Post(或在网页版选择 Schedule)。

6b. Treg

每次调用前,先运行 treg catalog get <id> 获取准确的参数(参数会变化)。这些功能在各自账户上均可免费使用。只保留标准输出(2>/dev/null)。一个平台失败不会阻止其他平台发布。

Instagram Reels

  1. 托管文件(每个文件最多 30 MB,有效期 7 天):运行 treg host <edit>/social.mp4 和 treg host <edit>/cover.jpg,获取公开 URL。
  2. 调用 instagram.instagram.media.container.create,参数为 ig_user_id(在 treg connections ls 中,其 Instagram 账户的 resource_ref)、media_type=REELS、video_url、cover_url、caption。
  3. 每 10 秒轮询一次 instagram.instagram.media.container.status,直到状态为 FINISHED(如果出现 ERROR,向用户展示错误并停止 Instagram 发布)。
  4. 使用容器 ID 调用 instagram.instagram.post.publish。然后获取其 permalink(调用 instagram.instagram.user.posts,参数为 fields=id,permalink,取最新一条)。

TikTok

  1. 调用 tiktok.tiktok.creator.info,获取用户可使用的隐私选项。
  2. 调用 tiktok.tiktok.video.publish.init,传入说明文字、从列表中选择的 privacy_level(如果有公开选项,则设为公开)、封面时间点(毫秒)对应的 video_cover_timestamp_ms(TikTok 会截取视频帧,不能使用图片),以及 source_info FILE_UPLOAD,并将文件大小作为单个分块。
  3. 将 social.mp4 PUT 到返回的 upload_url,并设置 Content-Type: video/mp4 和 Content-Range: bytes 0-<size-1>/<size>。
  4. 轮询 tiktok.tiktok.publish.status,直到视频发布成功。

如果返回 unaudited_client_can_only_post_to_private_accounts(或选项中只有 SELF_ONLY):改为通过 tiktok.tiktok.video.inbox.init 将视频发送到用户的 TikTok 收件箱(使用相同的上传方式,不附带说明文字),并告知用户在 24 小时内打开 TikTok,粘贴说明文字并发布。

YouTube

  1. 调用 youtube.youtube.video.upload,使用 uploadType=resumable,传入片段信息(标题、说明)和状态 {"privacyStatus": "private", "selfDeclaredMadeForKids": false};如果指定了日期,再添加 "publishAt": "<UTC ISO time>"(现在发布则设为 "public")。
  2. 将 <video> PUT 到返回的会话 URL。
  3. 使用 cover.jpg 调用 youtube.youtube.video.thumbnail.set(仅适用于已验证的 YouTube 账户;如果被拒绝也没关系,告知用户即可)。

如果回答中没有会话 URL,则改为手动发布 YouTube 视频。

7. 记录发布信息

写入 <edit>/published.md,每个平台占一行,记录日期、时间、发布方式,以及视频上线后的链接(https://youtube.com/shorts/<id> 或 https://youtu.be/<id>、Reels 链接或 TikTok 链接)。手动发布时,等用户确认已发布后再记录。

然后告知用户哪些内容已上线及其链接,并提醒用户可以在一周后使用 /insta-audit 查看效果。

如实说明限制

  • Instagram 和 TikTok 无法通过 Treg 安排发布,只能立即发布。它们各自的应用支持安排发布。
  • TikTok 会将新第三方应用发布的内容设为私密,直到该应用通过审核;通过收件箱发布的方式可以绕过这一限制。
  • 平台可能会拒绝视频(例如长度、格式或音乐版权问题)。错误信息会原样显示;手动发布始终可用。
  • 仅发布创作者拥有或已获得使用权的视频,包括其中的音乐。

评论

支持 Markdown