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-wechat-publisherWrote 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-wechat-publisher)<a href="https://agentmods.dev/skills/zju-real/easel/skill-wechat-publisher"><img src="https://agentmods.dev/badge/skills/zju-real/easel/skill-wechat-publisher/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-wechat-publisher"><img src="https://agentmods.dev/badge/skills/zju-real/easel/skill-wechat-publisher.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.00119 | $0.03204 |
| Opus 5.5 | $0.00048 | $0.01282 |
| Sonnet 5.5 | $0.00024 | $0.00641 |
| Haiku 4.5 | $0.00012 | $0.00320 |
Grade A, and why
skill-wechat-publisher 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 15d 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 — 140 lines — stays where its author put it; the contents beside it link to each section on GitHub.
微信公众号文章自动创作与发布
从素材输入到公众号草稿箱的完整自动化流程:用户只需提供话题或参考资料,skill 完成搜索调研、撰写、配图、排版、AI 味自检、发布。
不要调用
baoyu-post-to-wechatskill。 路由时同时看到两者,一律选本 skill(wechat-publisher),它带多账号 / 主题排版 / 反 AI 检测 gate。
⚠️ 环境依赖(部分可跑)
| 能力 | 状态 | 依赖 |
|---|---|---|
公众号发草稿(publish.py → 默认后台会话) |
✅ 可跑 | 先扫码登录公众号后台(skills/shared/scripts/weixin_mp_stats.py login,或 Web 账号页「登录公众号后台」)。免 app_id/app_secret、免 IP 白名单,只创建草稿,不自动群发 |
公众号发草稿(publish.py --official-api → 官方 HTTP API,回退) |
✅ 可跑 | wechat-publisher.yaml 的 app_id/app_secret + 出口 IP 加进公众号 IP 白名单 |
反 AI 检测(ai_score.py) |
✅ 可跑 | 纯本地,无外部依赖 |
MD→公众号排版(html_converter.py) |
✅ 可跑 | 纯本地 |
生成配图(generate_image.py) |
❌ 当前不可用 | 需图像 API key(OpenAI Images / Gemini 代理) |
多平台同步(multi_publish.py,阶段七) |
❌ 当前不可用 | 需浏览器 + Wechatsync Chrome 扩展 |
核心链路(写作→排版→反 AI 检测→发草稿)的 Markdown / HTML 入口默认复用已扫码的公众号后台会话,不要求 wechat-publisher.yaml 或 app_id/app_secret;仅显式选择 --official-api 时需要官方 API 凭证。配图缺 key 时改用外部生图或跳过,多平台同步默认不启用。
账号与人格
YAML 示例提供 2 个账号配置:main(刷屏AI / 飞哥 / refined-blue,热情北京口语,面向 AI 产品)与 tech(蒜是哪根葱 / 葱哥 / minimal-mono,冷幽默技术直男,面向工程实践)。官方 API 模式按 --account 或 YAML 的 default 选择账号。后台会话模式的实际发布账号以当前扫码登录的公众号为准,--account 不会切换浏览器登录态;没有 YAML 时,可用 --author / --theme 指定署名和主题,并优先使用当前 Easel Profile 的语气。
必须按当前账号的 voice 改写语气 —— 两个号写出明显风格差异,这本身就是反 AI 检测的关键(平台对每个号建历史文风基线)。
前置条件
以下命令均从 Easel 项目根目录运行。
默认:公众号后台会话(Markdown / HTML)
先检查已有登录态,不要因缺少 YAML 或官方 API 凭证而停止发布:
python3 skills/shared/scripts/weixin_mp_stats.py whoami
# 仅在确认未登录或会话过期时执行,也可在 Web 账号页扫码登录
python3 skills/shared/scripts/weixin_mp_stats.py login
loggedIn: true 时继续使用默认的 publish.py --input / --html 流程;检查报错时先排查具体异常,不把网络或浏览器错误当成缺少 API 凭证。会话模式无需创建 wechat-publisher.yaml、调用 wechat_api.py 验证 token 或配置 IP 白名单。
可选回退:官方 API(--official-api)
只有显式选择官方 API 发布时,才执行以下凭证配置与连接检查:
cp skills/builtin/skill-wechat-publisher/wechat-publisher.yaml.example skills/builtin/skill-wechat-publisher/wechat-publisher.yaml
# 编辑该文件,填写 app_id / app_secret / author / theme,并在公众号后台配置出口 IP 白名单
python3 skills/builtin/skill-wechat-publisher/scripts/wechat_api.py list-accounts
# 验证 API 连接,仅输出状态,不输出 token
(cd skills/builtin/skill-wechat-publisher/scripts && python3 -c "from wechat_api import get_access_token; get_access_token(); print('OK')")
What ships with it
60 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.
- assets/image-styles/blue.json 3.0 KB
- assets/image-styles/data-chart.json 2.4 KB
- assets/image-styles/flat-editorial.json 4.9 KB
- assets/image-styles/hand-drawn-blue.json 2.3 KB
- assets/image-styles/illustrated-warm.json 3.3 KB
- assets/image-styles/infographic-blue.json 5.2 KB
- assets/image-styles/infographic-dark.json 5.4 KB
- assets/image-styles/infographic-mint.json 5.2 KB
- assets/image-styles/infographic-warm.json 5.4 KB
- assets/image-styles/knowledge-card.json 2.3 KB
- assets/image-styles/magazine-editorial.json 2.3 KB
- assets/image-styles/marker-coral.json 6.4 KB
- assets/image-styles/marker-lime.json 6.6 KB
- assets/image-styles/marker-pink.json 6.4 KB
- assets/image-styles/marker-sky.json 6.4 KB
- assets/image-styles/marker-violet.json 6.4 KB
- assets/image-styles/meme-illustration.json 2.3 KB
- assets/image-styles/mint.json 3.1 KB
- assets/image-styles/morandi.json 3.4 KB
- assets/image-styles/previews/blue.webp 104 KB
- assets/image-styles/previews/data-chart.webp 16 KB
- assets/image-styles/previews/flat-editorial.webp 110 KB
- assets/image-styles/previews/hand-drawn-blue.webp 18 KB
- assets/image-styles/previews/illustrated-warm.webp 31 KB
- assets/image-styles/previews/infographic-blue.webp 160 KB
- assets/image-styles/previews/infographic-dark.webp 142 KB
- assets/image-styles/previews/infographic-mint.webp 150 KB
- assets/image-styles/previews/infographic-warm.webp 163 KB
- assets/image-styles/previews/knowledge-card.webp 22 KB
- assets/image-styles/previews/magazine-editorial.webp 14 KB
- assets/image-styles/previews/marker-coral.webp 41 KB
- assets/image-styles/previews/marker-lime-template.webp 34 KB
- assets/image-styles/previews/marker-lime.webp 39 KB
- assets/image-styles/previews/marker-pink.webp 38 KB
- assets/image-styles/previews/marker-sky.webp 48 KB
- assets/image-styles/previews/marker-violet.webp 43 KB
- assets/image-styles/previews/meme-illustration.webp 36 KB
- assets/image-styles/previews/mint.webp 96 KB
- assets/image-styles/previews/morandi.webp 82 KB
- assets/image-styles/previews/slice-of-life.webp 46 KB
- assets/image-styles/previews/warm-handdrawn.webp 79 KB
- assets/image-styles/previews/xiaohongshu-colorful.webp 24 KB
- assets/image-styles/README.md 29 KB
- assets/image-styles/slice-of-life.json 4.9 KB
- assets/image-styles/warm-handdrawn.json 4.4 KB
- assets/image-styles/xiaohongshu-colorful.json 2.3 KB
- assets/theme-previews/academic-paper.html 13 KB
- assets/theme-previews/business-navy.html 14 KB
- assets/theme-previews/elegant-ink.html 13 KB
- assets/theme-previews/girly-pink.html 13 KB
- assets/theme-previews/index.html 27 KB
- assets/theme-previews/ink-wash.html 14 KB
- assets/theme-previews/magazine-grid.html 13 KB
- assets/theme-previews/minimal-bw.html 14 KB
- assets/theme-previews/minimal-mono.html 13 KB
- assets/theme-previews/mint-fresh.html 14 KB
- assets/theme-previews/news-bold.html 13 KB
- assets/theme-previews/README.md 1.7 KB
- assets/theme-previews/refined-blue.html 15 KB
- assets/theme-previews/sage-premium.html 14 KB
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.
- 15d ago Changed ea60d970a2da
- 1mo ago Changed · +18 lines c080c22ff433
- 1mo ago Changed · +4 lines 78f1d9ae4fe4
- 1mo ago First seen · 118 lines · 119 tokens per session scan A 0b02d53bb44d
skill-wechat-publisher is a skill published in the GitHub repository ZJU-REAL/Easel (4,138 stars, last pushed 2d ago), licensed Apache-2.0. It adds 119 tokens to every session and 3,204 once invoked, about $0.0005 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
bmad-spec
Condense any input — an idea, brief, PRD, transcript, or mixed notes — into a short spec: one kernel file plus supporting files that downstream skills build from. Also updates and validates existing specs. Use when the user says "create a spec", "distill this into a spec", "validate this spec", or "update the spec".
bmad-advanced-elicitation
Push the LLM to reconsider, refine, and improve its recent output. Use when user asks for deeper critique or mentions a known deeper critique method, e.g. socratic, first principles, pre-mortem, red team.
jacky-motion2-0
A workflow for turning a Chinese spoken script and matching SRT subtitle file into a single 16:9 HTML information animation. SRT is a subtitle file that stores text with start and end times; the animation follows those times and adds recorded-screen placeholders when needed.
bmad-build
Turns implementation work into working code, reviewed and verified. Use when the user delegates a feature, story, bug fix, or meaningful change; a bare story or issue link counts. Skip obvious, low-risk mechanical maintenance such as small ignore-file, typo-only, formatting-only, or configuration-hygiene edits.…
bmad-retrospective
Review a finished epic folder in the ticket tree against the evidence it left behind — the epic file, each ticket plan, diffs, commits — and produce a retrospective with sourced findings, action items, and an acceptance decision. Use when the user says "run a retrospective" or "lets retro the epic [epic]". Supports…
bmad-review
Runs one or more installed review lenses — adversarial critique, edge cases, verification gaps, structure, prose — and reports triaged findings. Use when, and only when, the user asks you to review a diff, a pull request, or an artifact — code or documents, one or many — and actually says "review"; an explicit…