{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "en",
  "slug": "easel",
  "url": "https://tesign.com/en/item/easel/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/easel/",
      "json": "https://tesign.com/item/easel/index.json",
      "markdown": "https://tesign.com/item/easel/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/easel/",
      "json": "https://tesign.com/en/item/easel/index.json",
      "markdown": "https://tesign.com/en/item/easel/index.md"
    }
  },
  "name": "Easel",
  "use_label": "Content workbench for social creators",
  "one_liner": "Workbench for social creators: discover, plan, create, publish to 7 Chinese platforms",
  "text": {
    "why": "Easel is published by Zhejiang University's REAL lab (ZJU-REAL) with Peking University and the OpenDCAI lab. Each account gets a profile (positioning, style, audience, platform, red lines, long-term memory), and every output is archived per project under outputs/. It currently handles login, format adaptation and publishing for seven platforms (Xiaohongshu, Douyin, Kuaishou, Zhihu, Bilibili, WeChat Channels, WeChat Official Accounts) with a web workbench on localhost:7860; the README itself warns that automated Xiaohongshu posting can trigger verification, reach limits or account restrictions.",
    "take": "Few open-source tools actually log in and publish to Chinese platforms; the publishing step needs those accounts, and an LLM API key is mandatory throughout.",
    "build": [
      "Copy profiles/_template into an account profile for your brand and set up a China-market pipeline that turns one topic into Xiaohongshu cards, a short video and a Zhihu article at once. New skills are a SKILL.md plus scripts under skills/openclaw/."
    ],
    "who": [
      {
        "role": "China-platform operators",
        "situation": "turn one asset into seven platform formats and publish"
      },
      {
        "role": "Labs and education channels",
        "situation": "paper-explainer cards and videos"
      },
      {
        "role": "Agent developers",
        "situation": "study the structure of 113 OpenClaw skills"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "git clone https://github.com/ZJU-REAL/Easel.git"
      },
      {
        "command": false,
        "text": "cd Easel"
      },
      {
        "command": false,
        "text": "bash setup.sh"
      },
      {
        "command": false,
        "text": "# Windows (PowerShell): Set-ExecutionPolicy -Scope Process Bypass; .\\setup.ps1"
      },
      {
        "command": false,
        "text": "source .venv/bin/activate    # Windows: .venv\\Scripts\\activate"
      },
      {
        "command": false,
        "text": "easel web                    # http://localhost:7860"
      }
    ],
    "caveat": [
      "Apache-2.0. Needs Linux, macOS or Windows 10/11 (Windows per the Chinese README; the English README lists Linux and macOS only) with Python 3.10+, Node.js 22.19+, FFmpeg and Playwright Chromium.",
      "An LLM API key (Anthropic, OpenAI or a compatible endpoint) is required; video, music and voice generation need extra provider keys.",
      "All supported platforms are Chinese services, and the README warns that automated Xiaohongshu posting risks account restrictions."
    ]
  },
  "cta": {
    "type": "run",
    "label": "RUN",
    "url": "https://zju-real.github.io/Easel"
  },
  "ready": "install",
  "categories": [
    "ai",
    "social"
  ],
  "categories_confirmed": true,
  "tags": [
    "social-media",
    "content-automation",
    "agent",
    "xiaohongshu",
    "openclaw",
    "publishing"
  ],
  "platform": [
    "web",
    "linux",
    "macos",
    "windows"
  ],
  "license": {
    "spdx": "Apache-2.0",
    "scope": "permissive",
    "scope_text": "Commercial use, redistribution OK. Keep notices; mark changes.",
    "url": "https://spdx.org/licenses/Apache-2.0.html",
    "note": null,
    "open_source": true
  },
  "language": "Python",
  "source_urls": {
    "canonical": "https://zju-real.github.io/Easel",
    "github": "https://github.com/zju-real/easel",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "github",
        "url": "https://github.com/zju-real/easel",
        "posted_at": "2026-09-13T00:00:00.000Z",
        "hn_url": null
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 1129,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:34:16.042Z",
    "stars_observed_since_check": 0,
    "star_delta_24h": null,
    "star_delta_7d": 48,
    "star_delta_30d": 66,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      11,
      null,
      null,
      null,
      null,
      7,
      null,
      13,
      14,
      21,
      null,
      null,
      null
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": null,
    "hn_points_observed_at": null,
    "store": null,
    "method": "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours."
  },
  "ranks": null,
  "activity": {
    "pushed_at": "2026-09-15T07:06:35.000Z",
    "owner_type": "Organization",
    "open_issues": 8,
    "contributors": 9,
    "releases_count": 2,
    "latest_release": {
      "tag": "v0.1.1",
      "published_at": "2026-09-14T16:40:26.000Z",
      "prerelease": false
    },
    "checked_at": "2026-09-15T19:34:16.042Z",
    "core_checked_at": "2026-09-15T19:34:16.042Z"
  },
  "signals": [],
  "images": {
    "og": "https://tesign.com/img/easel-80e5d01cea.png",
    "cover": "https://tesign.com/img/easel-80e5d01cea.png",
    "cover_width": 1800,
    "cover_height": 930,
    "gallery": [
      "https://tesign.com/img/easel-80e5d01cea.png"
    ],
    "alt": "Easel web workbench publish center: one master post adapted into several platform versions with format checks, preflight and preview",
    "tier": 2
  },
  "dates": {
    "first_seen_at": "2026-09-13T07:43:38.190Z",
    "source_created_at": "2026-08-28T02:22:27.000Z",
    "discovery_hours": 389.35310833333335,
    "launch_signal_at": "2026-09-13T00:00:00.000Z",
    "kept_at": "2026-09-14T19:27:43.649Z",
    "first_published_at": "2026-09-14T19:27:43.752Z",
    "updated_at": "2026-09-15T04:36:56.857Z",
    "ingestion_mode": "live"
  },
  "notes": [
    "This file was produced by the same build, from the same data, as the tesign.com item page. The text is editorial; the numbers are stored observations.",
    "null in the JSON means not observed — never zero. The Markdown writes [unconfirmed] for it.",
    "Star total = the value last checked on GitHub (stars_checked_at) + increases observed via GH Archive since. The 24h · 7d · 30d gains are GH Archive hourly events summed to the reference time (as_of). No score of ours.",
    "A summary, not legal advice."
  ]
}
