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
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add ZJU-REAL/Easel --skill skill-publish-notifygit clone --depth 1 https://github.com/ZJU-REAL/EaselWrote 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-publish-notify)<a href="https://agentmods.dev/skills/zju-real/easel/skill-publish-notify"><img src="https://agentmods.dev/badge/skills/zju-real/easel/skill-publish-notify/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-publish-notify"><img src="https://agentmods.dev/badge/skills/zju-real/easel/skill-publish-notify.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Privilege Escalation · line 60 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
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.00096 | $0.00802 |
| Opus 5.5 | $0.00038 | $0.00321 |
| Sonnet 5.5 | $0.00019 | $0.00160 |
| Haiku 4.5 | $0.00010 | $0.00080 |
Grade A, and why
skill-publish-notify scanned grade A with 1 finding 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 13d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
Telegram Bot sendMessage、Slack Incoming Webhook。钉钉加签用 HMAC-SHA256。纯 urllib 实现, What it actually says
发布通知推送
内容发布后把结果推到团队 IM 群机器人或任意 webhook。走
scripts/notify.py(纯标准库无依赖)。 常与发布类 SKILL 串联:发布成功 → 推送"已发布 + 链接";失败 → 推送错误。
支持渠道
| 渠道 | 需要 | 说明 |
|---|---|---|
feishu |
群机器人 webhook | 飞书/Lark,支持标题富文本 |
dingtalk |
webhook(可选加签 secret) | 钉钉群机器人 |
wecom |
群机器人 webhook | 企业微信 |
telegram |
bot token + chat_id | Telegram Bot |
slack |
Incoming Webhook | Slack |
generic |
任意 webhook | 发 {"text": ...} |
输入
| 字段 | 必填 | 说明 |
|---|---|---|
| 渠道 | 是 | 上表之一 |
| webhook / token | 是 | 群机器人地址(telegram 用 token+chat_id) |
| 通知内容 | 是 | 正文,可选标题 |
执行
脚本路径(相对项目根):skills/builtin/skill-publish-notify/scripts/notify.py(send -h)。
# 飞书群
python <skill>/scripts/notify.py send --channel feishu \
--webhook "https://open.feishu.cn/open-apis/bot/v2/hook/xxx" \
--title "Easel 发布成功" --text "《本期主题》已发布到 抖音+小红书\n链接:..."
# 钉钉(加签)
python <skill>/scripts/notify.py send --channel dingtalk \
--webhook "https://oapi.dingtalk.com/robot/send?access_token=xxx" \
--secret "SECxxx" --text "已发布"
# Telegram
python <skill>/scripts/notify.py send --channel telegram \
--token "123:ABC" --chat-id "456" --text "已发布"
# 先干跑看 payload
python <skill>/scripts/notify.py send --channel feishu --webhook URL --text "..." --dry-run
规则
- 发送前用
--dry-run让用户确认内容与目标群,再真发。 - webhook / token 属敏感信息,从用户配置或 .env 读取,不写死、不外泄。
- 通知内容简洁:状态 + 标题 + 平台 + 链接即可。
- 钉钉群若开了"加签"安全设置,必须带
--secret。 - 返回 HTTP 200 且各家成功码正确才算成功,否则提示用户检查 webhook。
参考来源
各家群机器人均为「POST JSON 到 webhook」标准协议:飞书 msg_type、钉钉/企微 msgtype、 Telegram Bot sendMessage、Slack Incoming Webhook。钉钉加签用 HMAC-SHA256。纯 urllib 实现, 无需 apprise 等第三方库。
What ships with it
2 files 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.
- 13d ago Changed 8a0c95cf8d36
- 1mo ago First seen · 70 lines · 96 tokens per session scan A 23940d5ab578
skill-publish-notify is a skill published in the GitHub repository ZJU-REAL/Easel (4,082 stars, last pushed yesterday), licensed Apache-2.0. It adds 96 tokens to every session and 802 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
bootstrap
Onboarding conversation to generate a user profile.
life-design
Walk you through the Stanford Designing Your Life method and write your Personal Life Design Blueprint — three Odyssey plans and the prototypes to test them.
using-powerups
Use when starting work in a repository with Agent Powerups installed, when a task may match a reusable local skill, command, workflow, hook recipe, AGENTS.md template, or MCP feature.
context-minimization
Use when a task runs long and the context window is filling -- large files are being read whole, command output is flooding the transcript, or responses are getting verbose and slow.
no-fluff
Ultra-compressed communication mode. Cuts token usage 75% by dropping filler, articles, and pleasantries while keeping full technical accuracy. Use when user says "no fluff", "be concise", "use less tokens", or similar.
repo-map
Use when the task is to understand an unfamiliar codebase, locate key entry points, or summarize architecture before editing.