AI-powered content pipeline: from trend discovery to social publishing.
Built with Claude Agent SDK + MCP (Model Context Protocol), featuring 3 integrated MCP servers for real-time trends, web scraping, and research automation.
Three clear entry points — no complex menus, just pick and go:
| Card | Action | What happens |
|---|---|---|
| Freestyle | One click, zero input | Auto: trends → read source → verify timeline → patent score → visual → publish |
| Custom Topic | Type your topic | Deep research → score → visual → publish |
| Custom + Media | Type your topic | Research → NotebookLM slides/video/podcast → publish |
Watch Claude work in real-time — tool calls shown as collapsible blocks with MCP server badges:
- trend-pulse (green) — 20 real-time trend sources, zero auth
- cf-browser (blue) — Cloudflare Browser Rendering for JS pages
- notebooklm (purple) — Research + artifact generation (podcast/slides/video)
- studio — Built-in publishing + history tools
Full markdown rendering with syntax highlighting, clickable file path previews, cost/duration tracking, and inline images:
Full support for Traditional Chinese, English, and Japanese — all UI, system prompts, and pipeline cards adapt:
![]() |
![]() |
| English | Japanese |
Built-in Threads/Instagram publishing via native fetch() — no Python dependency. Every post is checked against Meta's patent-based 5-dimension scoring:
| Dimension | Patent | What it checks |
|---|---|---|
| Hook Power | EdgeRank | First line has number or contrast? (10-45 chars) |
| Engagement Trigger | Dear Algo | CTA anyone can answer? |
| Conversation Durability | 72hr window | Has both sides / contrast? |
| Velocity Potential | Andromeda | Short enough? Timely? |
| Format Score | Multi-modal | Mobile-scannable? |
Quality gates: Overall >= 70, Conversation Durability >= 55.
Supported post types: text, image, video, carousel (2-20 items), poll, GIF, link preview, text attachment, spoiler (media blur + text), ghost (24hr ephemeral), quote post, reply control, topic tag, alt text, link-comment auto-reply.
- Multiple Threads/Instagram accounts with independent personas
- Per-account style (e.g., "tech-educator", "futurist")
- Per-account persona prompt for tone adaptation
- Matrix publishing: same topic → unique content per account
Cron-based task scheduling with per-account targeting:
- Define prompt templates with cron schedules
- Target specific social accounts
- Quality gate enforcement (min score threshold)
- Auto-publish or manual review mode
- Execution history with cost/duration tracking
- Reduced tool set for unattended safety (no Bash/Read/Write)
NotebookLM integration for auto-generating visuals:
- Image cards — slides PDF as single-page visual cards
- Carousel — multi-page slides split into carousel images
- Podcast — AI-generated audio discussion
- Video — slides + podcast combined via ffmpeg
- Mind maps, reports, flashcards, study guides
All downloads stay within the workspace directory.
Browse and preview workspace files directly in the UI:
- Directory tree with depth control
- Text file preview (syntax-highlighted)
- Binary file preview (images, PDFs, audio, video)
- Clickable file paths in chat responses
- Workspace-contained — no access outside project folder
Content integrity enforced at the system level:
- Read original sources — Never write from titles/metadata alone. 1+ primary source per topic, 2+ for controversial.
- Timeline verification — Every fact gets a verified timestamp. Time words mapped by age.
- No AI filler — System prompt blocks generic phrases ("in today's world" / "it's worth noting").
- Multiple concurrent sessions with independent workspaces
- Session resume on app restart (conversation history preserved)
- Idle session eviction (30min TTL)
- Query cancellation via interrupt button or CLI
System/light/dark theme with persistent preference across sessions.
Full CJK input method support — Enter during Chinese/Japanese character composition does not trigger send. Shift+Enter for newline.
- AI agent operates within session workspace only
- No access to ~/Downloads, ~/Desktop, ~/Documents, or system paths
- Credentials stored in local SQLite — never searched from filesystem
- Publishing via built-in MCP tool only (no external scripts)
- Session workspace validated at creation (blocks system paths)
- File API restricted to workspace root (symlink-safe realpath check)
┌─────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ React UI │────▶│ Express + WS │────▶│ Claude Agent │
│ (Vite) │◀────│ Server │◀────│ SDK │
└─────────────┘ └──────────────────┘ └────────┬────────┘
│
┌──────────────────────────┤
│ │ │
┌──────▼──┐ ┌──────▼───┐ ┌─────▼──────┐
│ trend- │ │ cf- │ │ notebooklm │
│ pulse │ │ browser │ │ │
│ (MCP) │ │ (MCP) │ │ (MCP) │
└─────────┘ └──────────┘ └────────────┘
20 sources Cloudflare Podcast/Slides
zero auth Browser /Video/Report
| Layer | Tech |
|---|---|
| Frontend | React 18 + Vite + Tailwind CSS |
| Backend | Express + WebSocket + Claude Agent SDK |
| AI Model | Claude Sonnet 4.6 / Opus 4.6 |
| MCP Servers | trend-pulse, cf-browser, notebooklm |
| Publishing | Native TypeScript fetch() → Threads Graph API |
| Database | SQLite (better-sqlite3, WAL mode) |
| Desktop | Electron 41 |
| Markdown | react-markdown + rehype-sanitize |
- Node.js >= 18
- Claude Code CLI installed and authenticated (
npm install -g @anthropic-ai/claude-code) - Python 3.10+ (for MCP servers — or use
uvxfor zero-config setup)
Five ways to install — pick the one that fits your workflow:
| Method | Best for | MCP Servers | Web UI | Desktop App | CLI |
|---|---|---|---|---|---|
| A. Mac Desktop | Quickest start | via uvx | Built-in | Yes | Yes |
| B. npm | Most users | via uvx | Yes | — | Yes |
| C. Source | Contributors | venv or uvx | Yes | — | Yes |
| D. Build Desktop | Custom builds | via uvx | Built-in | Yes | Yes |
| E. MCP-only | Claude Code users | via uvx | — | — | — |
Download the latest .dmg from GitHub Releases, open it, and drag to Applications.
- Double-click to launch — server starts automatically
- No terminal, no Node.js install needed
- MCP servers auto-detected via uvx (install uv first)
- All features included: Web UI + CLI + MCP + Publishing
Requires: macOS (Apple Silicon). Intel Mac build available on request.
npm install -g @claude-world/studio
# Set up MCP servers (one-time, auto-cached via uvx)
npx @claude-world/studio setup-mcp
# Start
studio serve
# Web UI: http://localhost:5173
# API: http://127.0.0.1:3001After install, both studio and claude-world-studio commands are available globally.
git clone https://github.com/claude-world/claude-world-studio.git
cd claude-world-studio
npm install
cp .env.example .env
# Set up MCP servers
# Option 1: uvx (preferred — no clone, no path config)
npx @claude-world/studio setup-mcp
# Option 2: venv (legacy — clones repos, requires path config)
npx @claude-world/studio setup-mcp --venv
# Start development
npm run dev
# Frontend: http://localhost:5173
# Backend: http://127.0.0.1:3001Use node bin/cli.js <command> or npm link to register the studio command.
Build the native macOS app yourself:
git clone https://github.com/claude-world/claude-world-studio.git
cd claude-world-studio
npm install
# Development mode (quick test)
npm run electron:dev
# Production build (creates .app + .dmg)
npm run electron:build
# Output: dist/mac-arm64/Claude World Studio.appThe Electron app:
- Spawns the Express server automatically on launch
- Loads your login shell PATH (nvm/homebrew compatible)
- Rebuilds native modules (better-sqlite3) for system Node ABI
- Supports all MCP servers (auto-detected via uvx or .env)
If you already use Claude Code CLI and just want the MCP tools (trend-pulse, cf-browser, notebooklm) without the Studio UI:
# Install MCP servers via uvx (one-time)
uvx --from 'trend-pulse[mcp]' trend-pulse-server --help
uvx --from cf-browser-mcp cf-browser-mcp --help
uvx --from notebooklm-skill notebooklm-mcp --helpAdd to your project's .mcp.json:
{
"mcpServers": {
"trend-pulse": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "trend-pulse[mcp]", "trend-pulse-server"]
},
"cf-browser": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "cf-browser-mcp", "cf-browser-mcp"]
},
"notebooklm": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "notebooklm-skill", "notebooklm-mcp"]
}
}
}Or add to Claude Desktop App config (~/Library/Application Support/Claude/claude_desktop_config.json) with the same format.
The app uses 3 MCP servers — all optional, the app works with any combination.
npx @claude-world/studio setup-mcpThis pre-caches all 3 servers via uvx. No cloning, no path config. Studio auto-detects uvx at runtime.
To update: npx @claude-world/studio setup-mcp --update
See detailed MCP setup guide for per-server installation with local venvs.
Studio resolves MCP servers in this order:
- Settings UI — paths configured via Settings page (stored in SQLite)
- Environment variables —
.envfile or exported vars - uvx fallback — if
uvxis on PATH, uses cached packages automatically
Use studio settings detect (CLI) or Settings > Scan System (UI) to check what's available.
npm install -g @claude-world/studio
npx @claude-world/studio setup-mcp
studio serveVia UI: Settings > Social Accounts
Via CLI:
studio account create \
--name "My Brand" --handle "@mybrand" \
--platform threads --token YOUR_TOKENWeb UI: Click a pipeline card (Freestyle / Custom Topic / Custom + Media)
CLI (headless):
studio chat --message "Find trending topics, research the best, write and publish" --jsonScheduled: Settings > Scheduled Tasks — cron + per-account targeting + quality gates
studio status # Server health
studio session list --json # Sessions
studio history --limit 20 --json # Publish historyFull CLI with 23 commands. All commands support --json for programmatic use.
# Server
studio serve # Start web UI
studio status # Check if running
# Sessions
studio session list
studio session create --title "Research" --workspace /path
studio session get <ID>
studio session rename <ID> --title "New"
studio session delete <ID>
studio session messages <ID> --limit 20
# Chat (WebSocket streaming)
studio chat --message "Find trends" --json
studio chat --session <ID> --message "Publish the best"
echo "What's trending?" | studio chat --json
studio interrupt <ID>
# Accounts
studio account list
studio account create --name "Main" --handle "@me" --platform threads --token TOKEN
studio account update <ID> --token NEW_TOKEN
studio account delete <ID>
# Settings
studio settings get
studio settings detect # Auto-detect MCP tools
studio settings apply # Apply detected values
studio settings set --language en
# Publishing (all Threads post types)
studio publish --account <ID> --text "Hello!" --score 85
studio publish --account <ID> --text "Vote!" --poll "A|B|C"
studio publish --account <ID> --text "Look!" --image URL
studio publish --account <ID> --text "Watch" --video URL
studio publish --account <ID> --text "Slides" --carousel URL1 URL2 URL3
studio publish --account <ID> --text "Post" --link-comment URL
studio history --limit 10
# Files
studio file list <SESSION_ID> --depth 2
studio file read <SESSION_ID> src/index.tsGlobal flags: --json, --port N (env: STUDIO_PORT), --host H (env: STUDIO_HOST)
MCP setup wizard: npx @claude-world/studio setup-mcp
This is a local-only development tool. It runs Claude with full tool access on your machine.
- Binds to
127.0.0.1only (not exposed to network) - WebSocket origin verification (exact port whitelist)
- CORS restricted to localhost dev ports
- Workspace containment: AI agent restricted to session workspace
- File API: realpath + workspace-only containment (symlink-safe)
- Path traversal rejected on both client and server
- Session workspace validated at creation (system paths blocked)
- Publishing via native fetch — no Python/shell dependency
- XSS protection via
rehype-sanitize - Session isolation: WS messages filtered by sessionId
- Idle session eviction (30min TTL)
- Credentials stored in local SQLite only
Warning: Do NOT expose this server to the internet. The AI agent has
Bash,Read,Write, andEditaccess within the workspace.
Issues and PRs welcome. Please open an issue first to discuss major changes.
MIT





