Atlas / Skills / murphywuwu / easysociable-mcp

easysociable-mcpBLOCK

skills/murphywuwu/easysociable-mcp

MCP server + agent skills: Claude Code, Cursor or Codex turn a prompt into a branded multi-page carousel for TikTok, Instagram and LinkedIn.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Version
—
Hosts
4 documented
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://www.npmjs.com/package/@easysociable/cli) [](LICENSE) [](https://modelcontextprotocol.io/)

A Model Context Protocol (MCP) server that empowers AI agents (Claude Desktop, Claude Code, Cursor, Codex) to turn prompts, outlines, and markdown into branded, multi-page social carousels and slideshows for TikTok, LinkedIn, Instagram, Threads, and Xiaohongshu.

What is EasySociable?

EasySociable is an agent-native visual production layer that bridges the gap between text-based AI models and finished visual carousel decks:

  • AI Agent writes the content: Claude or Cursor creates the story, pacing, and slide copy.
  • EasySociable binds the design: Applies proven layout families, enforces Brand Kits (fonts, colors), and prepares a durable Slideshow Run.
  • In-Browser Studio: Open the private review link in your browser to polish text or swap images without layout drift.
  • Multi-Platform PNG Pack: One-click download optimized for TikTok (9:16), LinkedIn (4:5 / 1:1), Instagram (4:5 / 1:1), and Xiaohongshu (3:4).

Quickstart & Installation

Option 1: Claude Desktop

Add this configuration to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"easysociable": {
"command": "npx",
"args": ["-y", "@easysociable/cli", "mcp", "serve", "--transport", "stdio"]
}
}
}

Option 2: Cursor

Add the MCP server to Cursor via Cursor Settings > Features > MCP Servers > Add New:

  • Name: easysociable
  • Type: command
  • Command: `npx -y @easysociable/cli mcp ser
Read from source at commit a9c31732b826OBSERVED · 2026-10-14
02

Install

Commands as the repository documents them. They are shown, not run.

npm install -g @easysociable/cli
git clone https://github.com/murphywuwu/content-engine.git
git clone https://github.com/murphywuwu/content-engine.git
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
claude-codementioned
claude-desktopmentioned
codexmentioned
cursormentioned
04

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: easysociable-content
description: >
  Operate the EasySociable Content Engine: Knowledge (Karpathy LLM Wiki), hook-led
  Topics, formula-led Runs, profile, brand, media, workbench.
  Triggers: 采访我, 完善人设, interview me, who am I as a creator, 建立 profile
  — follow workflows/INTERVIEW.md (engine CLAUDE.md § Interview wins if present).
  Triggers: 记一下, 存资料, ingest, 问知识库, what do we know about, lint 知识库, 整理知识
  — follow engine CLAUDE.md § Knowledge (Ingest / Query / Lint).
  Triggers: 列出 hooks, 选 hook, 用 H-... 生成选题, 做成选题
  — follow engine CLAUDE.md § Topics (Hook → Formula → Knowledge).
  Triggers: 开一单, 用 T-... 开一单, 出图
  — follow engine CLAUDE.md § Open a run (content straight from the Topic's Formula).
  If no engine exists, copy/clone the Content Engine core (see Create below;
  `easysociable engine init` is optional offline scaffold). Then follow
  Content Engine/CLAUDE.md. Render handoff: easysociable-template (1 page) or
  easysociable-slideshow (2+, Formula handoff). Never publish or post.
---

# EasySociable Content

Entry card for agents. **Do not invent a parallel workflow.** Instance SoT is that engine’s `Content Engine/CLAUDE.md`. Workflows here fill gaps or win when newer than the matching § in CLAUDE.md.

## Product boundary

- Teach a **Content Engine**: knowledge you own → a hook-led decision → formula-led content → feedback that updates knowledge.
- **EasySociable** supplies the **Hooks / Formulas catalog** and the **visual production layer** (Studio). It is not the content brain.

## Three loops (do not collapse)

```text
Knowledge   raw/ (immutable) → knowledge/pages (agent-maintained wiki) → index.md + log.md
Topics      Hook (H-...) → one of its Formulas (F-...) → angle from knowledge pages → T-...
Runs        Topic's Formula beats → content.md + content-pack.v1 → Studio → feedback
```

| Stage | Owns | Does not |
|-------|------|----------|
| `raw/` | Verbatim sources + URL | Ever get edited after save |
| `knowledge/pages` | `source` / `concept` / `entity` / `synthesis` pages with `[[links]]` | Viral-post teardowns; facts no raw source supports |
| Topic `T-` | `hook_id` + `formula_id` + `knowledge_ids` + Beat plan | Exist without a hook and a formula |
| Run | One platform; one page per formula beat | Re-pick hook/formula; idea → brief → packet → draft → editor → rubric chain |
| Workbench | Read-only observatory (Knowledge graph, Topics, Runs) | Source of truth (markdown is) |

## Hard rules

1. **No invented facts or quotes** — slot text and Beat plans come from knowledge pages only; gaps go in **Do not claim**.
2. **No hook → no topic.** Never invent `H-` / `F-` ids; read them from `easysociable hooks list` / `formulas get`.
3. **Knowledge is compiled, not re-derived** — ingest updates every touched page, records contradictions instead of overwriting, regenerates `knowledge/index.md`, appends `knowledge/log.md`.
4. **Runs follow the Formula** — same beat count, order and roles; `layoutFamilyId = look.slides[n] ?? look.layouts[role]`.
5. **Rebuild workbench** after markdown writes in the engine vault (`python3 workbench/build.py`); after knowledge writes also `python3 scripts/lint-knowledge.py --engine .`.
6. Hook link for the user: `https://easysociable.com/hooks/<hook_id>`.

## Create / serve / build

**This skill** is installed only via EasySociable CLI (`easysociable install --skills content...`). It is **not** shipped inside the public Content Engine git repo.

**Primary (public core — preferred):** clone the Content Engine repo, then run
workbench from that folder. See `LAYOUT.md` (core vs vault; optional
`engine.json` `vault_root`).

```bash
git clone https://github.com/murphywuwu/content-engine.git
cd content-engine
python3 workbench/build.py
python3 workbench/serve.py --no-open
```

**Optional:** `easysociable engine init --root <parent> --yes` clones the same
repo into `<parent>/Content Engine` (never overwrites an existing engine).

```bash
easysociable engine serve --engine <parent>/Content Engine --no-open
easysociable engine build --engine <parent>/Content Engine
```

`python3` is required for the workbench. Observatory: `http://127.0.0.1:8765/workbench/` — tabs **Knowledge** (graph) / Topics / Runs. If `serve.py` is already up, do not start a second server; rebuild only.

## Operate

1. Resolve account → profile (engine `CLAUDE.md`).
2. Route by intent (table below). Prefer engine `CLAUDE.md` sections; use `workflows/*` when that file is newer or the § is missing.
3. Always return a short result card in chat.
4. Rebuild workbench after writes.

| Intent | Action |
|--------|--------|
| 采访我 / interview me / 完善人设 / 建立 profile | **workflows/INTERVIEW.md** (not a render) |
| 记一下 / 存资料 / ingest + link or file | Engine **§ Knowledge · Ingest** |
| 问知识库 / what do we know about X | Engine **§ Knowledge · Query** (offer to file back as `synthesis`) |
| lint 知识库 / 整理知识 | Engine **§ Knowledge · Lint** |
| 列出 hooks / 选 hook / 用 H-... 生成选题 | Engine **§ Topics** |
| 开一单 / 用 T-... 开一单 | Hard gate → engine **§ Open a run** (ask platform; multi → N runs) |
| 1 page | **easysociable-template** with `Formula: <id>` (after hard gate) |
| 2+ pages (any platform) | **easysociable-slideshow** *Formula handoff* (after hard gate + **ADR-0036 identity chain**: Studio login → API key → `easysociable auth login` → create) |
| X / xiaohongshu text-only | No render skill — ship copy from `content.md` |

## Render hard gate

**Before any template/slideshow call:** Identity in `profiles/<active>/voice.md` — Role / What I build / Point of view — no `(fill)` and non-empty; `boundaries.md` exists with Not covering and Never claim both non-empty. Public handle MAY stay `(fill)`.

On fail: **stay in this skill**. List missing files. Do not call template or slideshow. User must say **强制继续** / **force continue** to proceed.

```bash
easysociable engine validate --root <engine> --require-knowledge
```

## Out of scope

No social posting, Content MCP, Local API, or SQLite content lib
05

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
none-observed
Shell
declared (1 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (8)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
skills/easysociable-slideshow/scripts/check-pages.mjs:53
.replace(/style=\{\{([\s\S]*?)\}\}/g, (_, body) => 'style="' + toCss(Function('return {' + body + '}')()).replace(/"/g, "'") + '"')
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
skills/easysociable-content/SKILL.md:77
`python3` is required for the workbench. Observatory: `http://127.0.0.1:8765/workbench/` — tabs **Knowledge** (graph) / Topics / Runs. If `serve.py` is already up, do not start a second server; rebuil
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
skills/easysociable-slideshow/references/REFERENCES.md:54
`data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxNjAnIGhlaWdodD0nMTYwJyB2aWV3Qm94PScwIDAgMTYwIDE2MCc+PHJlY3Qgd2lkdGg9JzE2MCcgaGVpZ2h0PScxNjAnIGZpbGw9JyNDOUNER
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@easysociable/cli
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOPrompt injection · prompt.conditional_escalation · CWE-94, CWE-1427
skills/easysociable-template/workflows/AUTHORING_STUDIO.md:93
8. When the user says publish → run `workflows/PUBLISH_FROM_DRAFT.md`.
INFOPrompt injection · prompt.conditional_escalation · CWE-94, CWE-1427
skills/easysociable-template/workflows/OUT_OF_SCOPE.md:3
If the user asks for any of the following, **do not** execute them under this skill:
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
README.md:54
curl -fsSL https://easysociable.com/install.sh | bash
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
skills/ONBOARDING.md:10
curl -fsSL https://easysociable.com/install.sh | bash

Gates applied: no_behavioural_pass.

Audited 2026-10-14 · audit v0.4.1 · source sha a9c31732b826full audit observations/trust-audit/skill/murphywuwu__easysociable-mcp.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-14a9c31732b826BLOCKD69first audit
07

Questions

What does the easysociable-mcp skill do?

MCP server + agent skills: Claude Code, Cursor or Codex turn a prompt into a branded multi-page carousel for TikTok, Instagram and LinkedIn.

Is easysociable-mcp safe to install?

No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.

What can easysociable-mcp access on my machine?

The audit observed that it runs shell commands. Each of those is consistent with what it says it does. Secrets in the source: none found.

Which assistants does easysociable-mcp work with?

Its documentation mentions claude-code, claude-desktop, codex and cursor. That is what the text claims, not a compatibility test we ran.

How current is this page?

The grade is for one exact copy of the source (a9c31732b826), read on 2026-10-14. The repository is watched, and a new audit runs when it changes — this is the first audit.

Advertisement