>- 快手视频发布:把竖版短视频发布到快手创作者中心。当用户说"发快手""上传快手""快手投稿" "发布到快手""快手视频发布"时使用。基于通用浏览器发布框架(Playwright + 登录态持久化)。
npx skills add https://github.com/ZJU-REAL/Easel --skill skill-kuaishou-upload
> 基于通用浏览器发布框架 ../../shared/scripts/web_publisher.py(--platform kuaishou)。
> 网页自动化发布——需真实浏览器 + 已登录快手创作者中心。
pip install playwright + playwright install chromiumlogin 扫码/登录快手创作者中心,登录态持久化到 ~/.easel-browser-profiles/KuaishouProfile 后复用login-qr --platform kuaishou(抠二维码成图轮询),或走 Web「账号」页扫码plan 预览 +--headed 目视校验**,失效时更新 web_publisher.py 中 kuaishou 配置。
无浏览器环境可用 platforms / plan / check。
脚本:../../shared/scripts/web_publisher.py(各子命令 -h)。
python <ROOT>/skills/shared/scripts/web_publisher.py check
python <ROOT>/skills/shared/scripts/web_publisher.py login --platform kuaishou
python <ROOT>/skills/shared/scripts/web_publisher.py plan --platform kuaishou \
--media out.mp4 --title "标题" --tags "#恐怖故事 #都市怪谈 #灵异事件"
# 有头执行,便于首次核对选择器:
python <ROOT>/skills/shared/scripts/web_publisher.py publish --platform kuaishou \
--media out.mp4 --title "标题" --tags "#话题1 #话题2 #话题3 #话题4" --exec --headed
快手创作者中心的「外壳」登录态比发布/上传子系统的授权活得久——外壳显示已登录、昵称头像都在,却可能已经发不出去(上传 token 过期)。为此 whoami 已内置发布子系统鉴权探针(login_probe),真校验能否发布而不只看页面外壳,账号页据此自愈假阳性。
~/.easel-browser-profiles/KuaishouProfile 后重跑 login-qr。
style.md 与快手生态(生活化、接地气);竖版 9:16。--tags 控制在 4 个以内。plan 预览、--headed 目视确认;确认无误再无头批量。js_click):底部提交按钮 class 带哈希后缀(如_button-primary_xxx)、每次改版都变,纯 CSS :has-text('发布') 在 headless 下命中不稳;
脚本改为定位「可见 + innerText=='发布' + class 含 button-primary」的元素派发点击。
注意别误点右上角下拉菜单里的「发布作品」(那不是提交按钮)。
publish/video(跳内容管理页)即视为成功(publish_success: url_not_contains publish/video);视频初始「审核中」,稍后过审公开。
① 看 outputs/_login/kuaishou-publish-fail.png 截图确认停在哪一步 → ② whoami +
实际打开发布页看 input[type=file] 在不在(不在=没真正登录、停在营销介绍页)→ ③ 截图核对
标题/话题填写、有无标签超限提示 → ④ dump innerText=='发布' 的元素确认 class 仍含
button-primary → ⑤ 确认 JS 点击后 URL 跳转离开 publish/video。据此更新 web_publisher.py 配置。
网页发布思路同 social-auto-upload 的快手模块;本 SKILL 复用统一 Playwright 框架,配置驱动、
登录态持久化。选择器需按平台现状维护;2026-08-19 真机调试校准(登录态发布子系统探针、JS 派发
发布按钮、话题上限 4、URL 成功判定)。
Take zju-real/skill-kuaishou-upload from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.