Not in the top 1,000 by GitHub stars

oil-oil/video-publisher-skill

将视频、标题和封面准备为经过核验的多平台草稿,支持恢复上传,停在最终发布之前。

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

video-publisher/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Local scripts → After Local scripts

0d02cc5387b0 → 0d02cc5387b0

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → 0d02cc5387b0

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 0d02cc5387b0bea0a43d5aa4e72a2c9502d05f94

269GitHub stars
2stars in 7 days
1skill in this repository
1commit in 30 days

Heat

3.3
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 5, 2026269

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

video-publisher

When your agent uses it

将本地视频、标题和封面准备为小红书、抖音、B站、视频号或 YouTube 的已验证草稿,支持账号配置、恢复上传和草稿检查。用户要求准备或管理发布草稿时使用,默认停在最终发布按钮前;用户明确要求发布已核对的本次内容到指定平台时,也使用本 Skill 完成最终发布。不用于视频剪辑、封面制作、公众号长文或一般平台建议。

What it loads into context

Frontmatter

113 tokens

Always available to the agent

SKILL.md

2,329 tokens

When the skill is activated

Reference documents

23,318 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 必须遵守
  2. 标准发布流程
  3. 用户明确要求最终发布时
  4. 按需读取
  5. 维护边界

Scripts executed separately

  • scripts/check-package.mjs
  • scripts/config.mjs
  • scripts/find-video.mjs
  • scripts/lib/config.mjs
  • scripts/lib/content-package.mjs
  • scripts/lib/media.mjs
  • scripts/run-safe-platforms.cmd
  • scripts/run-safe-platforms.sh
  • scripts/tests/config.test.mjs
  • scripts/tests/content-package.test.mjs
  • scripts/tests/skill-contract.test.mjs
  • scripts/v2/ego/core.mjs
  • scripts/v2/lib/cli-args.mjs
  • scripts/v2/lib/ego-output.mjs
  • scripts/v2/lib/identity.mjs
  • scripts/v2/lib/job-lock.mjs
  • scripts/v2/lib/job-store.mjs
  • scripts/v2/lib/model.mjs
  • scripts/v2/lib/platform-lock.mjs
  • scripts/v2/lib/result-line.mjs
  • scripts/v2/lib/scheduler.mjs
  • scripts/v2/lib/spaces.mjs
  • scripts/v2/platforms/bilibili.mjs
  • scripts/v2/platforms/dispatch.mjs
  • scripts/v2/platforms/douyin.mjs
  • scripts/v2/platforms/wechat-channels.mjs
  • scripts/v2/platforms/xiaohongshu.mjs
  • scripts/v2/platforms/youtube.mjs
  • scripts/v2/publisher.mjs
  • scripts/v2/run-platform.mjs
  • scripts/v2/tests/cli-args.test.mjs
  • scripts/v2/tests/cover-proof.test.mjs
  • scripts/v2/tests/final-guard.test.mjs
  • scripts/v2/tests/identity.test.mjs
  • scripts/v2/tests/job-lock.test.mjs
  • scripts/v2/tests/job-store.test.mjs
  • scripts/v2/tests/mock-ego-cleanup.mjs
  • scripts/v2/tests/mock-runner.mjs
  • scripts/v2/tests/model.test.mjs
  • scripts/v2/tests/platform-contracts.test.mjs
  • scripts/v2/tests/platform-lock.test.mjs
  • scripts/v2/tests/publisher.test.mjs
  • scripts/v2/tests/result-line.test.mjs
  • scripts/v2/tests/run-platform.test.mjs
  • scripts/v2/tests/spaces.test.mjs
  • scripts/v2/tests/windows.test.mjs
  • scripts/v2/tests/youtube.test.mjs

Files

  • README.mddoc1,382 bytes
  • SKILL.mdcore9,255 bytes
  • SKILL.mdcore9,255 bytes
  • agents/openai.yamlasset512 bytes
  • evals/evals.jsonasset5,962 bytes
  • references/acceptance-history.mddoc10,173 bytes
  • references/configuration.mddoc3,822 bytes
  • references/content-package.mddoc5,271 bytes
  • references/cover-workflow.mddoc4,112 bytes
  • references/customizing-workflows.mddoc8,633 bytes
  • references/ego-browser-workflow.mddoc7,253 bytes
  • references/intake-workflow.mddoc5,099 bytes
  • references/platform-bilibili.mddoc7,179 bytes
  • references/platform-common.mddoc12,605 bytes
  • references/platform-douyin.mddoc7,557 bytes
  • references/platform-wechat-channels.mddoc6,310 bytes
  • references/platform-xiaohongshu.mddoc5,838 bytes
  • references/platform-youtube.mddoc3,012 bytes
  • references/scripts.mddoc13,868 bytes
  • scripts/check-package.mjsruns1,530 bytes
  • scripts/config.mjsruns8,831 bytes
  • scripts/find-video.mjsruns4,665 bytes
  • scripts/lib/config.mjsruns9,332 bytes
  • scripts/lib/content-package.mjsruns14,318 bytes
  • scripts/lib/media.mjsruns4,334 bytes
  • scripts/run-safe-platforms.cmdruns63 bytes
  • scripts/run-safe-platforms.shruns1,006 bytes
  • scripts/tests/config.test.mjsruns9,510 bytes
  • scripts/tests/content-package.test.mjsruns16,988 bytes
  • scripts/tests/skill-contract.test.mjsruns2,936 bytes
  • scripts/v2/ego/core.mjsruns13,685 bytes
  • scripts/v2/lib/cli-args.mjsruns6,874 bytes
  • scripts/v2/lib/ego-output.mjsruns628 bytes
  • scripts/v2/lib/identity.mjsruns4,256 bytes
  • scripts/v2/lib/job-lock.mjsruns5,163 bytes
  • scripts/v2/lib/job-store.mjsruns6,711 bytes
  • scripts/v2/lib/model.mjsruns5,914 bytes
  • scripts/v2/lib/platform-lock.mjsruns2,145 bytes
  • scripts/v2/lib/result-line.mjsruns617 bytes
  • scripts/v2/lib/scheduler.mjsruns668 bytes
  • scripts/v2/lib/spaces.mjsruns8,132 bytes
  • scripts/v2/platforms/bilibili.mjsruns40,595 bytes
  • scripts/v2/platforms/dispatch.mjsruns437 bytes
  • scripts/v2/platforms/douyin.mjsruns48,931 bytes
  • scripts/v2/platforms/wechat-channels.mjsruns35,909 bytes
  • scripts/v2/platforms/xiaohongshu.mjsruns51,441 bytes
  • scripts/v2/platforms/youtube.mjsruns62,364 bytes
  • scripts/v2/publisher.mjsruns31,450 bytes
  • scripts/v2/run-platform.mjsruns8,308 bytes
  • scripts/v2/tests/cli-args.test.mjsruns3,879 bytes
  • scripts/v2/tests/cover-proof.test.mjsruns11,559 bytes
  • scripts/v2/tests/final-guard.test.mjsruns2,764 bytes
  • scripts/v2/tests/identity.test.mjsruns4,639 bytes
  • scripts/v2/tests/job-lock.test.mjsruns3,133 bytes
  • scripts/v2/tests/job-store.test.mjsruns6,439 bytes
  • scripts/v2/tests/mock-ego-cleanup.mjsruns736 bytes
  • scripts/v2/tests/mock-runner.mjsruns4,454 bytes
  • scripts/v2/tests/model.test.mjsruns4,963 bytes
  • scripts/v2/tests/platform-contracts.test.mjsruns22,075 bytes
  • scripts/v2/tests/platform-lock.test.mjsruns1,225 bytes
  • scripts/v2/tests/publisher.test.mjsruns66,288 bytes
  • scripts/v2/tests/result-line.test.mjsruns730 bytes
  • scripts/v2/tests/run-platform.test.mjsruns15,093 bytes
  • scripts/v2/tests/spaces.test.mjsruns10,800 bytes
  • scripts/v2/tests/windows.test.mjsruns2,379 bytes
  • scripts/v2/tests/youtube.test.mjsruns3,855 bytes
Read SKILL.md

# 视频发布

确认一个视频内容包,交给维护好的程序完成多平台上传、表单修复和独立验证。默认把草稿留在最终发布按钮前;用户明确要求发布当前内容时,才进入下文的最终发布分支。

## 必须遵守

- 将本文件所在目录记为 `SKILL_DIR`,所有相对命令都在该目录运行。
- 日常发布只调用维护好的生产入口,不手工拆分平台阶段,也不自行控制创作者页面。
- 准备草稿和验收期间不点击最终发布、保存或定时发布按钮。只有用户在当前任务明确要求将已确认的内容发布到具体平台,才进入最终发布分支;“准备草稿”“上传”“做好发布准备”和长期账号配置都不构成最终发布授权。
- 只有配置声明所有视频均为原创,或用户明确确认当前视频拥有原创权利时,才允许勾选原创、自制等声明;不得从视频内容自行推断。
- 使用用户确认的精确视频和封面路径,不静默替换、裁剪、转码或改用相似文件。
- 让程序判断上传完成、草稿身份、字段状态、回执和 `READY`;不要把“执行过动作”解释为成功。
- 当前请求与同一任务已经确认的标题、平台、封面意图和原创依据直接继承,不重复询问。做封面后继续发布的完整授权包含上传本次已生成封面;按 `references/intake-workflow.md` 交接。
- 开始前区分新建草稿、恢复原草稿、替换草稿封面和修改已发布内容。原稿换源不等于另发一条;本生产入口不支持已发布内容换源,不能用新建或重发冒充。
View the complete source on GitHub

Skills included

  • video-publisher

Repository facts

License
MIT
Created
Jul 14, 2026
Last pushed
Oct 18, 2026
Forks
51
Open issues
1
Project activity
Active

Before you install

Local scripts

Automated signals, not a guarantee

Checked Nov 7, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 1 note
  • video-publisher/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 73 signals by file

video-publisher/README.md

  • Network accessline 14
    请帮我安装这个 Skill:https://github.com/oil-oil/video-publisher-skill

video-publisher/references/ego-browser-workflow.md

  • Network accessline 42
    xiaohongshu: https://creator.xiaohongshu.com/publish/publish?source=official&from=menu&target=video
  • Network accessline 43
    douyin: https://creator.douyin.com/creator-micro/content/upload
  • Network accessline 44
    bilibili: https://member.bilibili.com/platform/upload/video/frame?spm_id_from=333.1007.top_bar.upload
  • Network accessline 45
    wechat_channels: https://channels.weixin.qq.com/platform/post/create
  • Network accessline 46
    youtube: https://studio.youtube.com/

video-publisher/references/platform-youtube.md

  • Network accessline 7
    入口为 `https://studio.youtube.com/`。每个任务使用独立且稳定命名的 Ego Lite task space。
  • Network accessline 46
    标签不作为必填项。提供标签时必须由 YouTube 的真实 Chip 组件提交并逐项验证;空数组表示清空现有标签。说明字段不得出现 `http://`、`https://`、`www.` 或裸域名。分类比较需兼容中文界面同义显示,例如包内“科学与技术”和页面“科学和技术”。

video-publisher/scripts/check-package.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

video-publisher/scripts/config.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

video-publisher/scripts/find-video.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

video-publisher/scripts/lib/config.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/lib/content-package.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/lib/media.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/run-safe-platforms.cmd

  • Executable scriptline 1
    Executable file

video-publisher/scripts/run-safe-platforms.sh

  • Executable scriptline 1
    #!/usr/bin/env bash

video-publisher/scripts/tests/config.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/tests/content-package.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 404
    await fs.promises.writeFile(packagePath, JSON.stringify({       title: "T".repeat(101),       youtubeDescription: "Read more at https://example.com/video",
  • Network accessline 405
    title: "T".repeat(101),       youtubeDescription: "Read more at https://example.com/video",       youtubeTags: [],
  • Network accessline 406
    youtubeDescription: "Read more at https://example.com/video",

video-publisher/scripts/tests/skill-contract.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/ego/core.mjs

  • Network accessline 1
    const V2_RESULT_PREFIX = 'VIDEO_PUBLISHER_V2_RESULT:'; const PLATFORM_URLS = {   xiaohongshu: 'https://creator.xiaohongshu.com/publish/publish?source=official&from=menu&target=video',
  • Executable scriptline 1
    Executable file
  • Network accessline 2
    const PLATFORM_URLS = {   xiaohongshu: 'https://creator.xiaohongshu.com/publish/publish?source=official&from=menu&target=video',   douyin: 'https://creator.douyin.com/creator-micro/content/upload',
  • Network accessline 3
    xiaohongshu: 'https://creator.xiaohongshu.com/publish/publish?source=official&from=menu&target=video',
  • Network accessline 4
    douyin: 'https://creator.douyin.com/creator-micro/content/upload',
  • Network accessline 5
    bilibili: 'https://member.bilibili.com/platform/upload/video/frame?spm_id_from=333.1007.top_bar.upload',
  • Network accessline 6
    wechat_channels: 'https://channels.weixin.qq.com/platform/post/create',
  • Network accessline 7
    youtube: 'https://studio.youtube.com/',

video-publisher/scripts/v2/lib/cli-args.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/lib/ego-output.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/lib/identity.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/lib/job-lock.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/lib/job-store.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/lib/model.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/lib/platform-lock.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/lib/result-line.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/lib/scheduler.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/lib/spaces.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/platforms/bilibili.mjs

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 392
    async function quarantineBilibili(){let before=await inspectBilibili();if(before.gates.video.evidence?.restoreBanner){const resumed=await resumeBilibiliLocalDraftIfPresent();if(!resumed.ok)return {...before,blocker:typedBlocker('ACTION_FAIL

video-publisher/scripts/v2/platforms/dispatch.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/platforms/douyin.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/platforms/wechat-channels.mjs

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 320
    async function mutateWechatChannels(){let before=await inspectWechatChannels();if(!before.gates.draftIdentity.ok)return {...before,blocker:typedBlocker(before.gates.draftIdentity.evidence?.ambiguous?'STATE_AMBIGUOUS':'FOREIGN_DRAFT','视频号无法证

video-publisher/scripts/v2/platforms/xiaohongshu.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/platforms/youtube.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/publisher.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

video-publisher/scripts/v2/run-platform.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Access to secretsline 134
    [Credential-related source omitted]

video-publisher/scripts/v2/tests/cli-args.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/cover-proof.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 218
    const homepageProof = receiptFor(homepage, homepageBytes, { width: 1440, height: 1080 }, "blob:homepage-upload", "https://archive.biliimg.com/4.jpg");
  • Network accessline 219
    const personalSpaceProof = receiptFor(personalSpace, personalSpaceBytes, { width: 1920, height: 1080 }, "blob:space-upload", "https://archive.biliimg.com/16.jpg");
  • Network accessline 254
    );   assert.equal(     bilibiliCoverReceiptMatches(homepage, homepageProof.receipt, [{ ...homepageProof.images[0], url: "https://archive.biliimg.com/other.jpg" }]),
  • Network accessline 255
    assert.equal(     bilibiliCoverReceiptMatches(homepage, homepageProof.receipt, [{ ...homepageProof.images[0], url: "https://archive.biliimg.com/other.jpg" }]),     false,
  • Network accessline 256
    bilibiliCoverReceiptMatches(homepage, homepageProof.receipt, [{ ...homepageProof.images[0], url: "https://archive.biliimg.com/other.jpg" }]),

video-publisher/scripts/v2/tests/final-guard.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/identity.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/job-lock.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/job-store.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/mock-ego-cleanup.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

video-publisher/scripts/v2/tests/mock-runner.mjs

  • Executable scriptline 1
    #!/usr/bin/env node

video-publisher/scripts/v2/tests/model.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/platform-contracts.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/platform-lock.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/publisher.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/result-line.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/run-platform.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/spaces.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/windows.test.mjs

  • Executable scriptline 1
    Executable file

video-publisher/scripts/v2/tests/youtube.test.mjs

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Declared and executed: 5 facts
Signal confidence: 73 facts

and 23 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md video-publisher/SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md video-publisher/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md video-publisher/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md video-publisher/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md video-publisher/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md video-publisher/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.