dsh-douyin-publish
Manifest validTake a local video all the way to a Douyin creator post: open the upload page, trigger the picker, hand the file over with verification, fill the title, set visibility - then stop before publishing un
dsh-douyin-publish(抖音发布器)
把一段本地视频,一路送到抖音投稿页的"待发布"状态。
打开投稿页 → 真实点上「上传视频」→ 把文件交给系统对话框(含回读校验)→ 填标题 → 设可见性 → 默认停手。
这是四个作品里唯一的"功能"(前三个都是工具):它不止给 AI 加一个动作, 而是替使用者跑完一条链 —— 开页面、点按钮、交文件、填表、判断该不该发。 也正因为如此,它的默认值必须保守。
两条默认值是刻意的
| 参数 | 默认 | 要改成别的必须显式说 |
|---|---|---|
visibility | private(仅自己可见) | visibility: 'public' / 'friends' |
mode | draft(不点发布) | mode: 'publish' |
发布是不可逆且对外可见的动作。所以这个插件默认只做到"表填好、停发布前",
你要发,就再说一次。想先看看会发生什么,用 dryRun: true。
它做什么(每一步都留证据)
| 步 | 动作 | 细节 |
|---|---|---|
| ① | 检查视频 | 大小 / 分辨率 / 时长 / 编码(ffprobe,拿不到也不拦) |
| ② | 借浏览器会话 | 用自己的会话键,和别的任务不串台 |
| ③ | 打开投稿页 | creator.douyin.com/creator-micro/content/upload |
| ④ | 等上传控件 | 轮询到 input[type=file] 出现为止 |
| ⑤ | 真实点击「上传视频」 | 程序化 click() 不会弹系统对话框,必须真点 |
| ⑥ | 递文件 | 等对话框 → 填路径(走剪贴板)→ 回读逐字比对 → 点确认 |
| ⑦ | 等编辑页 | 轮询到 URL 含 /content/post/video |
| ⑧ | 填标题 | 按页面上真实的 placeholder 定位 |
| ⑨ | 设可见性 | 按页面上真实的中文标签点(公开 / 好友可见 / 仅自己可见) |
| ⑩ | 发布,或故意不发布 | mode=draft 时这一步记 skipped |
失败会分类说清:no-browser / no-dialog / handover / edit-page-timeout / visibility / publish。
它依赖什么
- 浏览器插件(借宿主的
ctx.browser服务)—— 没有时明确报错,不会假装能用。 这是刻意的:官方浏览器插件的工具层也是同一条路(inject里带browser)。 - 系统"打开文件"对话框能力:自带
lib/handover.ps1(与作者的dsh-file-handover同源, 但四个插件各自独立成仓,不互相依赖)。 - 可选:
ffprobe(没有也能发,只是少了元信息)。
安装
市场收录后在 DSH 里搜 dsh-douyin-publish 安装。手动安装:
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-douyin-publish" -Target "D:\dsh\projects\dsh-douyin-publish"
# profile 的 package.json:dependencies 加 "dsh-douyin-publish": "link:D:/dsh/projects/dsh-douyin-publish"
# 并把 "dsh-douyin-publish" 加进 dsh.profile.bundles(漏了不加载)→ 重启 DSH
发布前先做这两件事:① 装好浏览器插件;② 在浏览器窗口里登录抖音创作者中心 (登录态存在浏览器 profile 里,一次登录可跨重启复用)。
用法
工具(在 DSH 里)
douyin_upload videoPath=D:\videos\a.mp4 title="标题" [topics="猫,狗"] [visibility=private] [mode=draft|publish] [dryRun]
典型流程:dryRun: true 看一眼 → 正式跑一次(停发布前)→ 到浏览器里核对 → mode: 'publish' 真发。
命令(不依赖浏览器的那一半)
dsh-douyin-publish check --video "D:\videos\a.mp4"
已知限制
- 版式绑定:选择器基于 2026-10-16 实测的创作者中心版式;抖音改版后需要同步更新。
- 话题(topics)v0.1 只记进回执,不代填 —— 话题框的行为要先摸清再说。
- 验证码 / 风控不硬试:检测到就停下请人到浏览器窗口处理,再继续。
- 仅 Windows:递文件那一段依赖
EnumWindows/ UI Automation / PowerShell。 - 不做内容创作:剪片、封面、文案是内容管线的事(用 ffmpeg 等),这个插件只负责"送上去"。
自测
node test/smoke.mjs # 假浏览器 + 假 spawn:断言编排序列、默认值、失败分类;不碰抖音
License
MIT
Comments
Loading…
Similar plugins
by l541402398
Upload arbitrary local files from the DeepSeek Harness Web composer and manage them in Settings.
★ 3
MIT
JavaScript
Aug 14, 2026
dsh plugin --profile web add dsh-file-uploadsTikTok-style video feed in a floating sidebar window: swipe local or SMB-NAS folders, or paste online video URLs (yt-dlp, bilibili/YouTube, cookies.txt login state); the window auto-fits the video asp
★ 0
dsh plugin --profile web add dsh-plugin-video-playerby seeingrain
Upload any file to DSH, isolated per workspace and session — a composer file library with server-side thumbnails and a context menu to open, copy, re-download or delete.
★ 0
MIT
TypeScript
Sep 5, 2026
dsh plugin --profile web add dsh-upload-fileby a903067276-rgb
One upload button plus drag-and-drop files into the conversation as local paths: save to project uploads/, path text into the input box, works with any vision tool
★ 10
↓ 1.2k/wk
MIT
JavaScript
Sep 25, 2026
dsh plugin --profile web add dsh-file-uploadby zhanghuqqqq
DSH plugin: drag & drop anything into the composer - local files upload with absolute-path references, web images/links download host-side, plain text inserts. Per-session .dropped/<sessionId>/ landin
★ 0
↓ 45/wk
MIT
JavaScript
Sep 8, 2026
dsh plugin --profile web add dsh-drop-inby Gty2408
Publish a DSH plugin to GitHub and submit it to the plugin marketplace from a settings page. Validates the manifest against the listing requirements, creates the repository, uploads the tree, and open
★ 0
MIT
JavaScript
Oct 6, 2026
dsh plugin --profile web add dsh-plugin-publisher