Skip to content
Projects

ZJU-REAL/Easel has 4,504 GitHub stars and 748 forks. GitHot measured +16 stars in 24 hours. Last checked 2026-11-08 14:58 UTC. Last push 2026-11-02.

How these counts are measured

An open-source AI agent for social media — discover trends, create content, publish everywhere, and learn what works across Xiaohongshu, Douyin, Zhihu, Bilibili, and more.🎨一个开源的 AI 社交媒体智能体——发现热点趋势、创作内容、一键发布至各大平台,并学习分析哪些内容真正有效,覆盖小红书、抖音、知乎、哔哩哔哩等平台。

Measured star growth

in 24h
+16
in 7 days
Update delayed
in 15 days
Update delayed
in 1 month
Update delayed

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README_EN.md

Original

Zhejiang University Zhejiang University     Peking University Peking University

Easel Easel
REAL Lab  OpenDCAI LabOpenDCAI Lab

简体中文 · English

Your personal, continuously evolving social media content assistant.
Start with an idea, then discover, plan, create, publish, and learn.

Easel Project Page Powered by OpenClaw Python 3.10+ 113 Skills GitHub Stars Latest release License: Apache 2.0 WeChat Group

Easel product poster

🎨 What Is Easel?

Easel is an open-source content workspace for social media creators. It connects an OpenClaw Agent, account profiles, content Skills, and real media tools, enabling the Agent to produce and archive content instead of merely explaining what to do, with direct or on-demand publishing when needed.

Think of Easel as a content partner that remembers your positioning, audience, voice, platform constraints, preferences, and past performance. It stays with you from trend discovery through publishing, then carries what it learns into the next creation cycle.

Local OpenAI-Compatible Gateways

Configure an independent gateway in .env:

EASEL_DIRECT_API_BASE_URL=http://localhost:50288/v1
EASEL_DIRECT_API_MODEL=your-model-id
EASEL_DIRECT_API_KEY=your-real-gateway-key

Use a base URL including /v1, not the full /chat/completions URL. Leave the key empty for gateways without authentication.

  • bash setup.sh uses OpenClaw by default. A complete independent configuration creates the local-api provider with OpenClaw's tool runtime and permits requests to the configured private gateway. The model must support tool calling. Configure .env before installation; there is no terminal model-selection wizard.
  • bash setup.sh --api skips OpenClaw installation, skills synchronization, and Gateway startup. Alternatively, select API direct in the Web model settings, or set EASEL_CHAT_TRANSPORT=api manually.
  • Direct mode supports streaming chat, separate multi-turn history, profiles, text/image attachments, stop, and reconnection. It cannot execute local tools, skills, or publishing. Start a new conversation after changing modes.
  • Direct configuration only reads EASEL_DIRECT_API_*; it never falls back to OPENAI_*. CLI chat, ping, and doctor recognize direct mode. ping verifies actual connectivity; a configured badge alone does not.

These installer options apply to Linux/macOS setup.sh. Windows users can configure direct mode in .env or Web settings.

Easel promotional demo:

https://github.com/user-attachments/assets/4dd060dc-53dd-4bb2-99a3-e65ab6f65166

Easel follows five connected workflows: Discover relevant trends and opportunities, Plan topics, hooks, scripts, and schedules, Produce text, audio, and video, Publish checked and platform-ready content directly to the appropriate platforms, and Attribute performance insights back to the account profile.

📌 Usage Notes and Research Vision

  • Use the Web workspace for the complete experience: it includes conversations, assets, accounts, profiles, a content library, and publishing management beyond the CLI entry points, and it is our recommended way to use Easel; for terminal-only display quirks, see Known Issues.
  • Be cautious with automated Xiaohongshu publishing: automation may trigger verification, reach restrictions, or account risk. Use preview and preflight checks, and prefer human-confirmed publishing.
  • Research applied to real life: Easel brings our research into real social media workflows. We will continue exploring social intelligence for AI in social media, including a deeper understanding of creators, audiences, and authentic interaction.

✨ Why Easel?

  • One Agent across the entire workflow: discover trends, evaluate topics, plan calendars, generate copy and visuals, produce video, publish, and analyze results in one continuous flow.
  • Profile-driven creation: each account has its own positioning, style, audience, platforms, preferences, boundaries, and long-term memory.
  • Executable Skills: image, card, voice-over, subtitle, editing, short-drama, and publishing Skills include runnable tools and save deliverables to outputs/.
  • One source, many platforms: adapt a single idea into Xiaohongshu cards, short video, a Zhihu article, or a short post while respecting platform conventions.
  • Project-based outputs: source material, intermediate files, metadata, and final deliverables stay together for revision, retrying, and publishing.
  • A publishing and learning loop: Easel supports login, adaptation, and publishing workflows for Xiaohongshu, Douyin, Kuaishou, Zhihu, Bilibili, WeChat Channels, WeChat Official Accounts, and Toutiao, with performance data feeding back into account profiles.

🧭 Five-Layer Content Workflow

  1. Discover: aggregate trending topics, industry news, competitors, and user conversations to identify relevant opportunities.
  2. Plan: turn opportunities into topics, titles, scripts, content series, and calendar entries.
  3. Produce: create copy, cards, posters, infographics, audio, video, short dramas, and paper explainers.
  4. Publish: adapt titles, copy, aspect ratios, and media for each platform, run preflight checks, and publish through logged-in accounts.
  5. Attribute: collect views, engagement, comments, and content performance, then preserve useful patterns in the account profile.

🧰 Implemented Capabilities

The trend radar accepts user-defined Python collectors, HTTP services, and RSS/Atom feeds through a versioned data contract. Its existing six platforms use the same pipeline; adding your own source does not require changing the frontend.

Layer Capabilities
Discover Cross-platform trends, vertical research, content-gap analysis, event calendars, algorithm updates, competitor research, industry news, platform differences, RSS aggregation, and UGC discovery
Plan Positioning, audience profiles, persona and voice, account diagnosis, content matrices, topic scoring, trend adaptation, series planning, hooks, outlines, storyboards, calendars, repurposing, livestreams, campaigns, and collaborations
Text & Visual Social copy, video scripts, Xiaohongshu notes, long-form articles, novels, natural rewriting, style transfer, paper explainers, quote cards, knowledge cards, posters, infographics, charts, mind maps, comparison cards, product images, memes, AI images, enhancement, background removal, and batch processing
Audio & Video Text-to-speech, multi-role dubbing, voice cloning, AI music, denoising, mixing, transcription, audio visualization, AI video, short drama, subtitles, translation, editing, clipping, highlights, format conversion, intros/outros, slideshows, beat sync, green screen, and video-to-article conversion
Publish & Attribute Quality gates, risk checks, search optimization, publishing checklists, platform adaptation, seven-platform publishing workflows, calendar logging, account analytics, comment insights, postmortems, ROI, and profile memory

🖥️ Workspace Examples

These are four representative examples, not the complete feature set. Explore the Skill library in the Web workspace or the capability map for more.

🧬 Account Profiles
Build reusable account context from identity, social links, goals, preferences, and boundaries.

Easel account profile
🔥 Trend Radar
Aggregate real-time trends across major platforms and identify topics relevant to the current account.

Easel trend radar
📅 Content Calendar
Manage ideas, drafts, scheduled posts, published work, platform events, and daily plans.

Easel content calendar
📣 Publishing Center
Generate platform-specific versions from one master asset, preview them, run checks, and publish.

Easel publishing center

🖼️ Real Outputs

The following examples were produced by real Easel workflows. README media lives under assets/readme/; the project page uses lightweight six-second previews under web/static/showcase/.

📚 Paper Explainers and Knowledge Cards

SpatialEvo explainer cards SpatialLadder explainer cards

CULTURE-MT research cards KnowU-Bench explainer cards

📖 Novels and Stories

Comedy cultivation story Horror short story Romantic comedy Suspense story

🌿 Lifestyle and Meme Content

Colorful lifestyle cards Nature cards

Chengdu lifestyle cards Meme cards

🎬 Finished Videos

For faster browsing, each cover opens a lightweight preview of up to one minute. Use the links beneath each row for the full videos.

Play SpatialLadder preview Play CULTURE-MT preview

Full videos: SpatialLadder · CULTURE-MT

Play Ordinary Person preview Play Hanako preview Play cyber cultivation preview Play cyber turtle preview

Full videos: Ordinary Person · Hanako's Change · Cyber Cultivation · Cyber Turtle Mukbang

Play Jilong news preview Play Daomu Biji preview Play Zhejiang University preview

Full videos: Jilong Landslide News · Daomu Biji Introduction · Zhejiang University

🚀 Quick Start

Requirements: Linux, macOS, or Windows 10/11, Python 3.10+, and Git. The installer checks Node.js 24.16+ (24.x), 26.1+ (26.x), or 27+ (25.x and 26.0 are unsupported), plus FFmpeg and Playwright/Chromium. It provides a platform-specific guide when Node.js is missing.

git clone [email protected]:ZJU-REAL/Easel.git
cd Easel
bash setup.sh
source .venv/bin/activate    # easel is installed in .venv; activate it first (Windows: .venv\Scripts\activate)
easel web
# Or: easel chat

If you see easel: command not found, the virtual environment is not activated. You can also run it by full path without activating, e.g. .venv/bin/easel doctor (Windows: .venv\Scripts\easel.exe doctor).

For native Windows 10/11, run the following in PowerShell; WSL and Bash are not required:

git clone https://github.com/ZJU-REAL/Easel.git
cd Easel
Set-ExecutionPolicy -Scope Process Bypass
.\setup.ps1
.\.venv\Scripts\easel.exe doctor
.\.venv\Scripts\easel.exe web

The Windows installer uses winget to install missing system tools when available, creates .venv, installs Python and frontend dependencies, builds the Web UI, and installs Playwright Chromium. Easel uses an isolated easel OpenClaw profile. Windows PowerShell 5.1 is supported. Native installation and the Web/CLI entry points are available; broader Windows compatibility across individual skills and browser publishing is still being improved.

bash setup.sh is a rerunnable installer. It detects and reuses an existing local OpenClaw installation without touching ~/.openclaw/; Easel uses its isolated ~/.openclaw-easel/ profile.

Configure your model API key in the browser — the installer no longer asks for it in the terminal. After installing, run easel web; on first open it takes you straight to Settings → Model config. Enter your key and save, and Easel writes the OpenClaw configuration and restarts the gateway for you — no need to rerun setup.sh. The panel can also list a provider's available models and run a connectivity self-test, neither of which the old terminal prompt could do. Alternatively, copy .env.example, fill in a key, and run easel doctor to re-check.

The installer is fully non-interactive apart from one question (whether to create .venv, which takes its default when stdin is not a TTY), so it is safe for CI. Non-fatal problems — FFmpeg, Chromium, gateway startup, missing model config — are collected into a summary at the end and written to outputs/_install/last-install.json for easel doctor to repeat; the install itself still exits 0. Set EASEL_SETUP_STRICT=1 to turn those warnings back into hard failures.

Open http://localhost:7860 for the Web workspace. Run easel doctor to check the environment and easel ping to verify the gateway and Agent connection.

When Easel runs on a server accessed through VSCode Remote SSH, forward server port 7860 in VSCode's Ports panel and open the displayed local forwarded address; the local port may differ. The server's localhost is not your computer's. Do not expose an unauthenticated workspace publicly.

The installer installs the Python dependencies required by the Web UI, media processing, and browser publishing:

pip install -e .
python -m playwright install chromium
# FFmpeg is also required on the system.

⚙️ Configuration

The minimum configuration is a usable LLM in the project-root .env file:

ANTHROPIC_API_KEY=your_api_key
CLAUDE_MODEL=anthropic/claude-sonnet-4-6

.env.example also documents optional video, music, voice, and Anthropic-compatible provider settings. Configure only the capabilities you use. Missing media-provider credentials do not prevent chat, planning, or text creation.

Custom chat providers in Web Settings expose a “该模型会思考” (reasoning-capable) checkbox. Enabling it writes reasoning: true; OpenAI-compatible providers also offer a thinking format (OpenAI, DeepSeek, etc.) that must match the upstream API. Native Anthropic uses its own format. New rows default to off, while existing declarations are shown. Disabling reasoning writes reasoning: false and removes only reasoning-related compatibility keys, preserving other capabilities. Omitting thinking from the save API preserves existing declarations; enabling it preserves existing effort mappings rather than guessing supported effort levels. The format is stored as OpenClaw's compat.thinkingFormat; actual wire parameters depend on its version and model adapter. For example, OpenClaw 2026.9.8 may still send only reasoning_effort for generic custom models; this is not an arbitrary dialect converter. This declares capability, not verified upstream support, and does not override EASEL_THINKING_LEVEL=off. The switch is not available in direct API mode. For a current model explicitly marked reasoning: false, Web uses --thinking off when invoking the OpenClaw CLI rather than requesting an unsupported medium level.

Capability Configuration Additional dependency
AI video VIDEO_PROVIDER plus the provider key, URL, and model A supported video service
AI music MUSIC_PROVIDER plus provider settings A supported music service
Cloud voice VOICE_PROVIDER plus provider settings A supported voice service
Local media processing No model is required for supported local tools FFmpeg
Browser publishing Log in from the Web workspace's Accounts page Playwright Chromium and valid platform accounts

Never commit .env, cookies, or platform login state. Real publishing can be affected by verification, permissions, platform risk controls, and UI changes; use previews and checks for the first attempt.

The Publishing Center offers Automatic publishing / Human-reviewed publishing, retaining the existing automatic workflow by default. The manual path uses AI formatting, human review, copy/export, and personal submission on the official platform page. Editing the copy, tags, or media invalidates the previous review; copying, exporting, and scheduling never mark a post as published. WeChat Official Accounts support rich-text copy and an HTML preview. Switching paths does not change global publishing permissions; set EASEL_PUBLISH_MODE=manual to disable automatic Web submissions on the backend. See the manual publishing guide for configuration, browser login boundaries, and exports.

🧩 Using Easel

Command Purpose
easel web [--port 7860] Start the Web workspace
easel chat Start a multi-turn terminal conversation and select an account profile
easel skill <name> -i "..." [-p <profile>] Run a Skill directly; input may also be a file path
easel doctor Check Python, Node.js, OpenClaw, and essential configuration
easel ping Check the gateway and Agent connection
easel gateway start|stop|restart|status|logs Manage the OpenClaw gateway
easel skill quality-gate -i "Review this social media post"
easel skill social-content -i "Write a post introducing spatial intelligence"
easel skill quality-gate -i "Review this draft" -p MyCreatorProfile

🧬 Account Profiles

Each profile is stored under profiles/<name>/ and contains six dimensions: identity, style, audience, platforms, preferences and boundaries, and long-term memory.

cp -r profiles/_template "profiles/MyCreatorProfile"

Profiles can also be created and edited from the Web workspace.

🏗️ Project Structure

Easel/
├── easel/                    Python CLI
├── web/                      FastAPI backend and React workspace
├── skills/builtin/           Discover, plan, produce, publish, and attribution Skills
├── skills/shared/            Shared scripts and references
├── assets/                   Brand, README media, and imported assets
├── profiles/                 Account profiles
├── outputs/                  Content projects and final deliverables
├── agents/                   Shared Agent workspace, harness configuration, and sync scripts
└── docs/                     Specifications, capability map, and architecture docs

Easel uses an isolated easel OpenClaw profile and does not overwrite an existing OpenClaw setup. The Web workspace defaults to port 7860; the gateway port is chosen by OpenClaw (non-default profiles get a hashed port — easel → 37289, not 18789) and is resolved automatically by Easel.

📑 Documentation

🗺️ Roadmap

Ordered by priority — contributions welcome; feel free to claim or add items via Issues/PRs:

  • 1. Windows support — Complete native Windows compatibility across installation, paths/encoding, and browser publishing.
  • 2. Simpler installation — Lower the barrier to entry with fewer manual steps and a smoother one-click setup.
  • 3. Better in-app Agent UX — Improve the Web workbench's chat interaction, loading logic, and streaming feedback.
  • 4. More Agent harnesses — Support agent runtimes beyond OpenClaw, e.g. Claude Code, DeepSeek harness, Codex.

🙏 Acknowledgments

Easel's Skill system and workflows benefit from many excellent open-source projects, tools, and content methodologies. We thank their original authors and contributors. See the full acknowledgments for projects, usage, and license information.

Contributions and discussion are welcome. If you have ideas, questions, or improvements, feel free to open an Issue or PR — or scan the QR code to join our WeChat group:

Easel WeChat group QR code

Easel WeChat group · the QR code is refreshed periodically; if it has expired, reach us via Issues

🤝 Contributors

lidingm
lidingm
qywMichelle
qywMichelle
wulinjuan
wulinjuan
arctanxarc
arctanxarc
hongxingli319
hongxingli319
mengyuyuan
mengyuyuan
Dear47
Dear47

⚖️ License

Apache 2.0

🌟 Star History

Explore related projects