Easel is an open-source content workspace and AI agent for managing social media from trend discovery through planning, content creation, publishing, and performance analysis. It is intended for social media creators and maintains separate account profiles, content projects, platform adaptations, and publishing records. The catalogue skills support these content and publishing workflows.
Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/ZJU-REAL/Easelnpx agentmods add skills/zju-real/easel/skill-kuaishou-uploadWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zju-real/easel/skill-kuaishou-upload)<a href="https://agentmods.dev/skills/zju-real/easel/skill-kuaishou-upload"><img src="https://agentmods.dev/badge/skills/zju-real/easel/skill-kuaishou-upload/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zju-real/easel/skill-kuaishou-upload"><img src="https://agentmods.dev/badge/skills/zju-real/easel/skill-kuaishou-upload.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00074 | $0.01692 |
| Opus 5.5 | $0.00030 | $0.00677 |
| Sonnet 5.5 | $0.00015 | $0.00338 |
| Haiku 4.5 | $0.00007 | $0.00169 |
Grade A, and why
skill-kuaishou-upload scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 87 lines — stays where its author put it; the contents beside it link to each section on GitHub.
快手视频发布
基于通用浏览器发布框架
../../shared/scripts/web_publisher.py(--platform kuaishou)。 网页自动化发布——需真实浏览器 + 已登录快手创作者中心。
⚠️ 环境依赖(同 skill-xhs-publisher 定位)
pip install playwright+playwright install chromium- 首次
login扫码/登录快手创作者中心,登录态持久化到~/.easel-browser-profiles/KuaishouProfile后复用- 远程/headless 环境用
login-qr --platform kuaishou(抠二维码成图轮询),或走 Web「账号」页扫码
- 远程/headless 环境用
- 选择器时效:快手网页改版频繁,内置选择器为最佳努力,首次发布务必先
plan预览 +--headed目视校验,失效时更新web_publisher.py中 kuaishou 配置。
无浏览器环境可用 platforms / plan / check。
发布成功输出形如 ✅ 快手发布成功(读回核验:作品 <id>,<状态>;账号:<昵称>)——
该判定来自平台作品列表对账(不是「点完就算」);未核实的档位会在输出里明确写出原因与「先别重发」提示。
执行
脚本:../../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),真校验能否发布而不只看页面外壳,账号页据此自愈假阳性。
- 仍出现「显示已登录、发布却失败」= 发布态过期:去 Web「账号」页重新扫码,或清空
~/.easel-browser-profiles/KuaishouProfile后重跑login-qr。 - 快手发布 token 偏短命,需要比别的平台更勤地重新扫码,属正常现象。
Profile 感知
- 有 Profile:标题/话题贴合
style.md与快手生态(生活化、接地气);竖版 9:16。 - 无 Profile:按快手通用规范(竖版、话题#、口语化描述)。
规则(含 2026-08 真机校准)
- 快手以竖版 9:16 为主,横版素材先用 video-reframe 转竖版;发布走视频流程,只收视频。
- 话题标签最多 4 个:超过报「话题标签数量超过上限:4」,
--tags控制在 4 个以内。 - 发布前先
plan预览、--headed目视确认;确认无误再无头批量。 - 发布按钮靠 JS 派发点击(脚本已用
js_click):底部提交按钮 class 带哈希后缀(如_button-primary_xxx)、每次改版都变,纯 CSS:has-text('发布')在 headless 下命中不稳; 脚本改为定位「可见 +innerText=='发布'+ class 含button-primary」的元素派发点击。 注意别误点右上角下拉菜单里的「发布作品」(那不是提交按钮)。 - 成功判定 = 读回对账(权威):点击「发布」后的界面信号(URL 离开
publish/video)只作旁证—— 脚本随后回到作品管理页读本人作品列表对账(标题前缀 + 时间窗,发前快照排除旧作品), 输出✅ 快手发布成功(读回核验:作品 <id>…)才算真成功。另外三档绝不冒报成功,也不许盲目重发:unverified(多轮未见新作品,可能索引延迟——先人工确认再决定)、login_required(读回时登录态失效——重登后核对,先别重发)、readback_error(读回通道失败——人工核对,先别重发)。 读回未核实 ≠ 没发出去;视频初始「审核中」,稍后过审公开。 - 选择器/流程失效不要硬跑——先看截图定位阶段,再更新配置或提示用户平台已改版。
- 登录态与 Cookie 属敏感信息,妥善保存、不外泄。
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +10 lines 1ccc3435ae27
- 1mo ago First seen · 77 lines · 74 tokens per session scan A 9ee2372a34da
skill-kuaishou-upload is a skill published in the GitHub repository ZJU-REAL/Easel (4,138 stars, last pushed 3d ago), licensed Apache-2.0. It adds 74 tokens to every session and 1,692 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
paperpod
Use when isolated agent runtime for code execution, live preview URLs, browser automation, 50+ tools (ffmpeg, sqlite, pandoc, imagemagick), LLM inference, and persistent memory — all via CLI or HTTP, no SDK or API keys required. Use when working with paperpod.
node-inspect-debugger
Debug Node.js via --inspect + Chrome DevTools Protocol.
playwright-cli
Translate natural-language browser automation requests into exact playwright-cli commands for interactive web testing and debugging. Use when requests involve opening/navigating pages, interacting with elements, capturing snapshots/screenshots/PDFs, using tabs, inspecting console/network, mocking routes, managing…
Browse Reddit or perform explicitly requested account actions through the existing signed-in Chrome session.
dingtalk_channel_connect
Use a headed browser to automatically complete DingTalk channel integration for QwenPaw. Applicable when the user mentions DingTalk, developer console, Client ID, Client Secret, bot, Stream mode, binding or configuring a channel. Supports pausing when a login page is detected and resuming after the user logs in.
browser
Drive a live browser with async Python against QwenPaw's builtin Browser SDK. The full reference is below; re-load this browser skill after context compaction.