{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "brightbeanxyz--brightbean-studio",
    "name": "BrightBean Studio",
    "tagline": "Free, no-tier social media manager for agencies, with an in-repo MCP app, API, and agent skill.",
    "shortTagline": "Free social media manager",
    "description": "BrightBean Studio is a Django social media management platform: multi-workspace teams, composer with per-platform overrides, calendar and queues, approval workflows with a client portal, unified inbox, analytics, and media library across Facebook, Instagram, LinkedIn, TikTok, YouTube, Pinterest, Threads, Bluesky, Google Business Profile, Mastodon, and DEV.to. Every feature is free, hosted or self-hosted. The repo ships apps/mcp and apps/api, and the site says agents draft and schedule posts with a single API key.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "content-publishing",
    "alternativeTo": [
      "Buffer",
      "Hootsuite",
      "Later"
    ],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "hybrid",
    "provenance": "unknown",
    "codeStack": {
      "languages": [
        "Python",
        "JavaScript"
      ],
      "frameworks": [
        "Django 5"
      ],
      "packageManager": "pip",
      "database": [
        "PostgreSQL (DATABASE_URL)"
      ],
      "hostingTarget": [
        "Docker",
        "Heroku one-click",
        "Render one-click",
        "Railway one-click",
        "brightbean.xyz hosted"
      ]
    },
    "modelStack": {
      "providers": [
        "BrightBean intelligence service (INTELLIGENCE_INTERNAL_URL)"
      ],
      "models": [],
      "requiredKeys": [],
      "promptLocations": [],
      "tools": []
    },
    "repos": [
      {
        "url": "https://github.com/brightbeanxyz/brightbean-studio",
        "owner": "brightbeanxyz",
        "name": "brightbean-studio",
        "license": "AGPL-3.0",
        "stars": 2253,
        "lastCommit": "2026-08-13"
      }
    ],
    "interface": {
      "kind": "mcp",
      "url": "https://github.com/brightbeanxyz/brightbean-studio/tree/main/apps/mcp",
      "official": true,
      "hosted": "both"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Draft and schedule posts",
        "reachable": true,
        "evidence": "brightbean.xyz/studio: agents draft and schedule posts through installed skills with a single API key"
      },
      {
        "job": "Publish to Instagram",
        "reachable": true,
        "evidence": "Instagram in the supported platforms table; scheduling reaches any connected channel"
      },
      {
        "job": "Publish to TikTok",
        "reachable": true,
        "evidence": "TikTok in the supported platforms table (publish and insights)"
      },
      {
        "job": "Publish to YouTube",
        "reachable": true,
        "evidence": "YouTube in the supported platforms table"
      },
      {
        "job": "Move posts through approval stages",
        "reachable": null,
        "evidence": "triage claimed approve; tools live in apps/mcp/handlers.py, not read"
      },
      {
        "job": "Reply from the unified inbox",
        "reachable": null,
        "evidence": "inbox app exists; MCP coverage not verified"
      },
      {
        "job": "Read analytics",
        "reachable": null,
        "evidence": "analytics app exists; MCP coverage not verified"
      },
      {
        "job": "Browse the media library",
        "reachable": null,
        "evidence": "media_library app exists; MCP coverage not verified"
      },
      {
        "job": "Client approves through a magic-link portal",
        "reachable": false,
        "evidence": "passwordless human flow by design"
      },
      {
        "job": "Plan on the idea Kanban board",
        "reachable": null,
        "evidence": "not verified"
      }
    ],
    "editions": [
      {
        "name": "Free",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://brightbean.xyz/studio/"
          },
          {
            "kind": "source",
            "url": "https://github.com/brightbeanxyz/brightbean-studio"
          },
          {
            "kind": "container",
            "url": "https://github.com/brightbeanxyz/brightbean-studio/blob/main/docker-compose.yml"
          },
          {
            "kind": "one-click",
            "url": "https://github.com/brightbeanxyz/brightbean-studio#readme"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or skills install target in the repo."
    },
    "customization": {
      "summary": "Copy .env.example: SECRET_KEY, ENCRYPTION_KEY_SALT, ALLOWED_HOSTS, APP_URL, DATABASE_URL, STORAGE_BACKEND with S3_* for object storage, EMAIL_* for mail, then a PLATFORM_* app ID and secret per network you connect. app.json, render.yaml, and railway.toml carry the one-click deploys; Caddyfile fronts Docker. Branding per workspace is set in-app. Approval stages are configured in the UI, not files.",
      "envVars": [
        "SECRET_KEY",
        "ENCRYPTION_KEY_SALT",
        "DEBUG",
        "ALLOWED_HOSTS",
        "APP_URL",
        "DATABASE_URL",
        "STORAGE_BACKEND",
        "S3_BUCKET_NAME",
        "EMAIL_BACKEND_TYPE",
        "EMAIL_HOST",
        "DEFAULT_FROM_EMAIL",
        "GOOGLE_AUTH_CLIENT_ID",
        "PLATFORM_FACEBOOK_APP_ID",
        "PLATFORM_INSTAGRAM_APP_ID",
        "PLATFORM_THREADS_APP_ID",
        "PLATFORM_LINKEDIN_PERSONAL_CLIENT_ID",
        "PLATFORM_LINKEDIN_COMPANY_CLIENT_ID",
        "PLATFORM_TIKTOK_CLIENT_KEY",
        "PLATFORM_GOOGLE_CLIENT_ID",
        "PLATFORM_PINTEREST_APP_ID",
        "UNSPLASH_ACCESS_KEY",
        "INTELLIGENCE_INTERNAL_URL",
        "STUDIO_BASE_URL"
      ],
      "configFiles": [
        ".env",
        "docker-compose.yml",
        "docker-compose.prod.yml",
        "app.json",
        "render.yaml",
        "railway.toml",
        "Caddyfile"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 30
    },
    "useWhen": [
      "I run social for many clients and want approvals and a client portal without paying per workspace",
      "I want a free hosted scheduler my agent can post through today, with the option to self-host later"
    ],
    "accounts": [
      "developer app on each network (Meta, TikTok, Google, LinkedIn, Pinterest)",
      "Google (optional SSO)",
      "S3-compatible storage (optional)"
    ],
    "active": true,
    "lastActivity": "2026-08-13",
    "gotchas": [
      "AGPL-3.0",
      "INTELLIGENCE_INTERNAL_URL and STUDIO_SHARED_SECRET point at a separate intelligence service; check whether self-hosters get sentiment analysis without it",
      "Bring your own developer credentials for every platform; Meta and TikTok apps need review",
      "2FA is on the roadmap, not shipped",
      "MCP tool list was not read; Reach for approvals, inbox, analytics, and media is unverified"
    ],
    "fit": {
      "adaptable": 2,
      "operable": 2
    },
    "evidence": {
      "formFactor": "README: Django web app, Docker or one-click deploy, free hosted version",
      "executionModel": "scheduler is deterministic; inbox sentiment analysis and apps/intelligence plus INTELLIGENCE_* env vars point at a model service",
      "operability": "apps/mcp (protocol.py, transport.py, handlers.py, tools.py) and apps/api in the Builder's repo; site: agents draft and schedule with an API key",
      "effort": ".env.example names 50+ variables; app.json, render.yaml, railway.toml, docker-compose",
      "editions": "README and site: every feature free, hosted or self-hosted, no paid tier",
      "active": "pushedAt 2026-08-13; Show HN 2026-04-13 with 190 points",
      "provenance": "2026 launch with .claude directory in repo; no authorship statement"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.5,
      "operability": 0.8,
      "effort": 0.9,
      "reach": 0.5,
      "editions": 0.9,
      "provenance": 0.4
    },
    "openQuestions": [
      "Read apps/mcp/handlers.py to enumerate tools and settle the null Reach items; operable fit rises to 3 if approvals, inbox, and analytics are covered",
      "Is the intelligence service open, and does self-hosting work without it?",
      "Where is the brightbean-studio-agent skill published?"
    ],
    "sources": [
      {
        "url": "https://github.com/brightbeanxyz/brightbean-studio",
        "foundBy": "sourcing:content-publishing:community"
      },
      {
        "url": "https://brightbean.xyz/studio/",
        "foundBy": "analysis:content-publishing"
      },
      {
        "url": "https://news.ycombinator.com/item?id=47749674",
        "foundBy": "sourcing:content-publishing:community"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Official MCP and API in-repo with a free hosted edition; scheduling Reach confirmed, the rest unverified so operable fit held at 2. Config-only under AGPL.",
      "disputed": []
    },
    "url": "apps/brightbeanxyz--brightbean-studio.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/brightbeanxyz--brightbean-studio.json"
  }
}
