{"id":47305589,"url":"https://github.com/claude-world/claude-world-studio","last_synced_at":"2026-04-01T16:59:47.354Z","repository":{"id":344564118,"uuid":"1182146812","full_name":"claude-world/claude-world-studio","owner":"claude-world","description":"AI-powered content pipeline: trend discovery → research → social publishing. Built with Claude Agent SDK + MCP.","archived":false,"fork":false,"pushed_at":"2026-03-26T14:29:42.000Z","size":9976,"stargazers_count":51,"open_issues_count":10,"forks_count":8,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T13:34:03.429Z","etag":null,"topics":["ai-agent","claude","claude-code","content-pipeline","mcp","notebooklm","social-media","threads","trend-analysis"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/claude-world.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-15T05:16:18.000Z","updated_at":"2026-03-26T08:11:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/claude-world/claude-world-studio","commit_stats":null,"previous_names":["claude-world/claude-world-studio"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/claude-world/claude-world-studio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/claude-world%2Fclaude-world-studio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/claude-world%2Fclaude-world-studio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/claude-world%2Fclaude-world-studio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/claude-world%2Fclaude-world-studio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/claude-world","download_url":"https://codeload.github.com/claude-world/claude-world-studio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/claude-world%2Fclaude-world-studio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","claude","claude-code","content-pipeline","mcp","notebooklm","social-media","threads","trend-analysis"],"created_at":"2026-03-17T07:59:09.629Z","updated_at":"2026-04-01T16:59:45.475Z","avatar_url":"https://github.com/claude-world.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Claude World Studio\n\nAI-powered content pipeline: from trend discovery to social publishing.\n\nBuilt with **Claude Agent SDK + MCP** (Model Context Protocol), featuring 3 integrated MCP servers for real-time trends, web scraping, and research automation.\n\n![Welcome Screen](demo/01-welcome.png)\n\n## Features\n\n### One-Stop Pipeline\n\nThree clear entry points — no complex menus, just pick and go:\n\n![Pipeline Cards](demo/02-pipeline-cards.png)\n\n| Card               | Action                | What happens                                                                   |\n| ------------------ | --------------------- | ------------------------------------------------------------------------------ |\n| **Freestyle**      | One click, zero input | Auto: trends → read source → verify timeline → patent score → visual → publish |\n| **Custom Topic**   | Type your topic       | Deep research → score → visual → publish                                       |\n| **Custom + Media** | Type your topic       | Research → NotebookLM slides/video/podcast → publish                           |\n\n### Live Agent Execution\n\nWatch Claude work in real-time — tool calls shown as collapsible blocks with MCP server badges:\n\n![Tool Calls](demo/06-tool-calls.png)\n\n- **trend-pulse** (green) — 20 real-time trend sources, zero auth\n- **cf-browser** (blue) — Cloudflare Browser Rendering for JS pages\n- **notebooklm** (purple) — Research + artifact generation (podcast/slides/video)\n- **studio** — Built-in publishing + history tools\n\n### Rich Markdown Responses\n\nFull markdown rendering with syntax highlighting, clickable file path previews, cost/duration tracking, and inline images:\n\n![Rich Content](demo/07-history-rich.png)\n\n### Multi-Language (i18n)\n\nFull support for Traditional Chinese, English, and Japanese — all UI, system prompts, and pipeline cards adapt:\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cimg src=\"demo/09-en-cards.png\" alt=\"EN\" width=\"400\"/\u003e\u003c/td\u003e\n\u003ctd\u003e\u003cimg src=\"demo/10-ja-cards.png\" alt=\"JA\" width=\"400\"/\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eEnglish\u003c/td\u003e\n\u003ctd align=\"center\"\u003eJapanese\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n### Social Publishing (Native TypeScript)\n\nBuilt-in Threads/Instagram publishing via native `fetch()` — no Python dependency. Every post is checked against Meta's patent-based 5-dimension scoring:\n\n| Dimension               | Patent      | What it checks                                   |\n| ----------------------- | ----------- | ------------------------------------------------ |\n| Hook Power              | EdgeRank    | First line has number or contrast? (10-45 chars) |\n| Engagement Trigger      | Dear Algo   | CTA anyone can answer?                           |\n| Conversation Durability | 72hr window | Has both sides / contrast?                       |\n| Velocity Potential      | Andromeda   | Short enough? Timely?                            |\n| Format Score            | Multi-modal | Mobile-scannable?                                |\n\nQuality gates: Overall \u003e= 70, Conversation Durability \u003e= 55.\n\n**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.\n\n### Multi-Account \u0026 Persona\n\n- Multiple Threads/Instagram accounts with independent personas\n- Per-account style (e.g., \"tech-educator\", \"futurist\")\n- Per-account persona prompt for tone adaptation\n- Matrix publishing: same topic → unique content per account\n\n### Scheduled Tasks\n\nCron-based task scheduling with per-account targeting:\n\n- Define prompt templates with cron schedules\n- Target specific social accounts\n- Quality gate enforcement (min score threshold)\n- Auto-publish or manual review mode\n- Execution history with cost/duration tracking\n- Reduced tool set for unattended safety (no Bash/Read/Write)\n\n### Visual Content Generation\n\nNotebookLM integration for auto-generating visuals:\n\n- **Image cards** — slides PDF as single-page visual cards\n- **Carousel** — multi-page slides split into carousel images\n- **Podcast** — AI-generated audio discussion\n- **Video** — slides + podcast combined via ffmpeg\n- **Mind maps, reports, flashcards, study guides**\n\nAll downloads stay within the workspace directory.\n\n### Workspace File Browser\n\nBrowse and preview workspace files directly in the UI:\n\n- Directory tree with depth control\n- Text file preview (syntax-highlighted)\n- Binary file preview (images, PDFs, audio, video)\n- Clickable file paths in chat responses\n- Workspace-contained — no access outside project folder\n\n### Source Verification \u0026 Timeline Rules\n\nContent integrity enforced at the system level:\n\n- **Read original sources** — Never write from titles/metadata alone. 1+ primary source per topic, 2+ for controversial.\n- **Timeline verification** — Every fact gets a verified timestamp. Time words mapped by age.\n- **No AI filler** — System prompt blocks generic phrases (\"in today's world\" / \"it's worth noting\").\n\n### Session Management\n\n- Multiple concurrent sessions with independent workspaces\n- Session resume on app restart (conversation history preserved)\n- Idle session eviction (30min TTL)\n- Query cancellation via interrupt button or CLI\n\n### Dark Mode\n\nSystem/light/dark theme with persistent preference across sessions.\n\n### IME Support\n\nFull CJK input method support — Enter during Chinese/Japanese character composition does not trigger send. Shift+Enter for newline.\n\n### Workspace Security\n\n- AI agent operates within session workspace only\n- No access to ~/Downloads, ~/Desktop, ~/Documents, or system paths\n- Credentials stored in local SQLite — never searched from filesystem\n- Publishing via built-in MCP tool only (no external scripts)\n- Session workspace validated at creation (blocks system paths)\n- File API restricted to workspace root (symlink-safe realpath check)\n\n## Architecture\n\n```\n┌─────────────┐     ┌──────────────────┐     ┌─────────────────┐\n│  React UI   │────▶│  Express + WS    │────▶│  Claude Agent   │\n│  (Vite)     │◀────│  Server          │◀────│  SDK            │\n└─────────────┘     └──────────────────┘     └────────┬────────┘\n                                                      │\n                           ┌──────────────────────────┤\n                           │            │             │\n                    ┌──────▼──┐  ┌──────▼───┐  ┌─────▼──────┐\n                    │ trend-  │  │ cf-      │  │ notebooklm │\n                    │ pulse   │  │ browser  │  │            │\n                    │ (MCP)   │  │ (MCP)    │  │ (MCP)      │\n                    └─────────┘  └──────────┘  └────────────┘\n                    20 sources    Cloudflare    Podcast/Slides\n                    zero auth     Browser       /Video/Report\n```\n\n## Tech Stack\n\n| Layer       | Tech                                          |\n| ----------- | --------------------------------------------- |\n| Frontend    | React 18 + Vite + Tailwind CSS                |\n| Backend     | Express + WebSocket + Claude Agent SDK        |\n| AI Model    | Claude Sonnet 4.6 / Opus 4.6                  |\n| MCP Servers | trend-pulse, cf-browser, notebooklm           |\n| Publishing  | Native TypeScript fetch() → Threads Graph API |\n| Database    | SQLite (better-sqlite3, WAL mode)             |\n| Desktop     | Electron 41                                   |\n| Markdown    | react-markdown + rehype-sanitize              |\n\n## Prerequisites\n\n- **Node.js** \u003e= 18\n- **Claude Code CLI** installed and authenticated (`npm install -g @anthropic-ai/claude-code`)\n- **Python** 3.10+ (for MCP servers — or use `uvx` for zero-config setup)\n\n---\n\n## Installation\n\nFive ways to install — pick the one that fits your workflow:\n\n| Method                                                  | Best for          | MCP Servers | Web UI   | Desktop App | CLI |\n| ------------------------------------------------------- | ----------------- | ----------- | -------- | ----------- | --- |\n| [A. Mac Desktop](#option-a-mac-desktop-app-download)    | Quickest start    | via uvx     | Built-in | Yes         | Yes |\n| [B. npm](#option-b-npm-global)                          | Most users        | via uvx     | Yes      | —           | Yes |\n| [C. Source](#option-c-from-source)                      | Contributors      | venv or uvx | Yes      | —           | Yes |\n| [D. Build Desktop](#option-d-build-desktop-from-source) | Custom builds     | via uvx     | Built-in | Yes         | Yes |\n| [E. MCP-only](#option-e-mcp-only-for-claude-code-cli)   | Claude Code users | via uvx     | —        | —           | —   |\n\n### Option A: Mac Desktop App (Download)\n\nDownload the latest `.dmg` from [GitHub Releases](https://github.com/claude-world/claude-world-studio/releases/latest), open it, and drag to Applications.\n\n- Double-click to launch — server starts automatically\n- No terminal, no Node.js install needed\n- MCP servers auto-detected via uvx (install [uv](https://docs.astral.sh/uv/) first)\n- All features included: Web UI + CLI + MCP + Publishing\n\n\u003e **Requires**: macOS (Apple Silicon). Intel Mac build available on request.\n\n### Option B: npm global\n\n```bash\nnpm install -g @claude-world/studio\n\n# Set up MCP servers (one-time, auto-cached via uvx)\nnpx @claude-world/studio setup-mcp\n\n# Start\nstudio serve\n# Web UI: http://localhost:5173\n# API:    http://127.0.0.1:3001\n```\n\nAfter install, both `studio` and `claude-world-studio` commands are available globally.\n\n### Option C: From source\n\n```bash\ngit clone https://github.com/claude-world/claude-world-studio.git\ncd claude-world-studio\nnpm install\ncp .env.example .env\n\n# Set up MCP servers\n# Option 1: uvx (preferred — no clone, no path config)\nnpx @claude-world/studio setup-mcp\n\n# Option 2: venv (legacy — clones repos, requires path config)\nnpx @claude-world/studio setup-mcp --venv\n\n# Start development\nnpm run dev\n# Frontend: http://localhost:5173\n# Backend:  http://127.0.0.1:3001\n```\n\nUse `node bin/cli.js \u003ccommand\u003e` or `npm link` to register the `studio` command.\n\n### Option D: Build Desktop from source\n\nBuild the native macOS app yourself:\n\n```bash\ngit clone https://github.com/claude-world/claude-world-studio.git\ncd claude-world-studio\nnpm install\n\n# Development mode (quick test)\nnpm run electron:dev\n\n# Production build (creates .app + .dmg)\nnpm run electron:build\n# Output: dist/mac-arm64/Claude World Studio.app\n```\n\nThe Electron app:\n\n- Spawns the Express server automatically on launch\n- Loads your login shell PATH (nvm/homebrew compatible)\n- Rebuilds native modules (better-sqlite3) for system Node ABI\n- Supports all MCP servers (auto-detected via uvx or .env)\n\n### Option E: MCP-only (for Claude Code CLI)\n\nIf you already use Claude Code CLI and just want the MCP tools (trend-pulse, cf-browser, notebooklm) without the Studio UI:\n\n```bash\n# Install MCP servers via uvx (one-time)\nuvx --from 'trend-pulse[mcp]' trend-pulse-server --help\nuvx --from cf-browser-mcp cf-browser-mcp --help\nuvx --from notebooklm-skill notebooklm-mcp --help\n```\n\nAdd to your project's `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"trend-pulse\": {\n      \"type\": \"stdio\",\n      \"command\": \"uvx\",\n      \"args\": [\"--from\", \"trend-pulse[mcp]\", \"trend-pulse-server\"]\n    },\n    \"cf-browser\": {\n      \"type\": \"stdio\",\n      \"command\": \"uvx\",\n      \"args\": [\"--from\", \"cf-browser-mcp\", \"cf-browser-mcp\"]\n    },\n    \"notebooklm\": {\n      \"type\": \"stdio\",\n      \"command\": \"uvx\",\n      \"args\": [\"--from\", \"notebooklm-skill\", \"notebooklm-mcp\"]\n    }\n  }\n}\n```\n\nOr add to Claude Desktop App config (`~/Library/Application Support/Claude/claude_desktop_config.json`) with the same format.\n\n---\n\n## MCP Server Setup\n\nThe app uses 3 MCP servers — **all optional**, the app works with any combination.\n\n### Quick Setup (uvx — recommended)\n\n```bash\nnpx @claude-world/studio setup-mcp\n```\n\nThis pre-caches all 3 servers via uvx. No cloning, no path config. Studio auto-detects uvx at runtime.\n\nTo update: `npx @claude-world/studio setup-mcp --update`\n\n### Manual Setup (venv)\n\nSee [detailed MCP setup guide](docs/content-pipeline-skill.md#mcp-servers-setup) for per-server installation with local venvs.\n\n### MCP Auto-Detection\n\nStudio resolves MCP servers in this order:\n\n1. **Settings UI** — paths configured via Settings page (stored in SQLite)\n2. **Environment variables** — `.env` file or exported vars\n3. **uvx fallback** — if `uvx` is on PATH, uses cached packages automatically\n\nUse `studio settings detect` (CLI) or **Settings \u003e Scan System** (UI) to check what's available.\n\n---\n\n## Production Pipeline: End-to-End\n\n### Step 1: Install \u0026 Configure\n\n```bash\nnpm install -g @claude-world/studio\nnpx @claude-world/studio setup-mcp\nstudio serve\n```\n\n### Step 2: Add Social Accounts\n\nVia UI: **Settings \u003e Social Accounts**\n\nVia CLI:\n\n```bash\nstudio account create \\\n  --name \"My Brand\" --handle \"@mybrand\" \\\n  --platform threads --token YOUR_TOKEN\n```\n\n### Step 3: Run the Pipeline\n\n**Web UI**: Click a pipeline card (Freestyle / Custom Topic / Custom + Media)\n\n**CLI (headless)**:\n\n```bash\nstudio chat --message \"Find trending topics, research the best, write and publish\" --json\n```\n\n**Scheduled**: Settings \u003e Scheduled Tasks — cron + per-account targeting + quality gates\n\n### Step 4: Monitor\n\n```bash\nstudio status                     # Server health\nstudio session list --json        # Sessions\nstudio history --limit 20 --json  # Publish history\n```\n\n---\n\n## CLI\n\nFull CLI with 23 commands. All commands support `--json` for programmatic use.\n\n```bash\n# Server\nstudio serve                    # Start web UI\nstudio status                   # Check if running\n\n# Sessions\nstudio session list\nstudio session create --title \"Research\" --workspace /path\nstudio session get \u003cID\u003e\nstudio session rename \u003cID\u003e --title \"New\"\nstudio session delete \u003cID\u003e\nstudio session messages \u003cID\u003e --limit 20\n\n# Chat (WebSocket streaming)\nstudio chat --message \"Find trends\" --json\nstudio chat --session \u003cID\u003e --message \"Publish the best\"\necho \"What's trending?\" | studio chat --json\nstudio interrupt \u003cID\u003e\n\n# Accounts\nstudio account list\nstudio account create --name \"Main\" --handle \"@me\" --platform threads --token TOKEN\nstudio account update \u003cID\u003e --token NEW_TOKEN\nstudio account delete \u003cID\u003e\n\n# Settings\nstudio settings get\nstudio settings detect          # Auto-detect MCP tools\nstudio settings apply           # Apply detected values\nstudio settings set --language en\n\n# Publishing (all Threads post types)\nstudio publish --account \u003cID\u003e --text \"Hello!\" --score 85\nstudio publish --account \u003cID\u003e --text \"Vote!\" --poll \"A|B|C\"\nstudio publish --account \u003cID\u003e --text \"Look!\" --image URL\nstudio publish --account \u003cID\u003e --text \"Watch\" --video URL\nstudio publish --account \u003cID\u003e --text \"Slides\" --carousel URL1 URL2 URL3\nstudio publish --account \u003cID\u003e --text \"Post\" --link-comment URL\nstudio history --limit 10\n\n# Files\nstudio file list \u003cSESSION_ID\u003e --depth 2\nstudio file read \u003cSESSION_ID\u003e src/index.ts\n```\n\nGlobal flags: `--json`, `--port N` (env: `STUDIO_PORT`), `--host H` (env: `STUDIO_HOST`)\n\nMCP setup wizard: `npx @claude-world/studio setup-mcp`\n\n---\n\n## Security\n\nThis is a **local-only development tool**. It runs Claude with full tool access on your machine.\n\n- Binds to `127.0.0.1` only (not exposed to network)\n- WebSocket origin verification (exact port whitelist)\n- CORS restricted to localhost dev ports\n- Workspace containment: AI agent restricted to session workspace\n- File API: realpath + workspace-only containment (symlink-safe)\n- Path traversal rejected on both client and server\n- Session workspace validated at creation (system paths blocked)\n- Publishing via native fetch — no Python/shell dependency\n- XSS protection via `rehype-sanitize`\n- Session isolation: WS messages filtered by sessionId\n- Idle session eviction (30min TTL)\n- Credentials stored in local SQLite only\n\n\u003e **Warning**: Do NOT expose this server to the internet. The AI agent has `Bash`, `Read`, `Write`, and `Edit` access within the workspace.\n\n## Contributing\n\nIssues and PRs welcome. Please open an issue first to discuss major changes.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclaude-world%2Fclaude-world-studio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclaude-world%2Fclaude-world-studio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclaude-world%2Fclaude-world-studio/lists"}