메뉴
HN
Hacker News 48일 전

클로드&코덱스로 3주 만에 SNS 관리 툴 제작

IMP
8/10
핵심 요약

크리에이터, 대행사 및 중소기업을 위한 오픈소스 소셜 미디어 관리 플랫폼, 'BrightBean Studio'가 공개되었습니다. 사용자가 직접 서버에 호스팅하여 월 100~300달러 상당의 SaaS 구독료와 사용자/채널별 제한 없이 무료로 모든 기능을 사용할 수 있는 것이 가장 큰 특징입니다. 개발자가 Claude와 Codex를 활용하여 단 3주 만에 이 프로젝트를 완성한 점이 눈길을 끕니다.

번역된 본문

크리에이터, 대행사 및 중소기업을 위한 오픈소스 소셜 미디어 관리 툴

BrightBean Studio 소개 BrightBean Studio는 크리에이터, 에이전시(대행사) 및 중소기업(SMB)을 위해 구축된 오픈소스 자가 호스팅 소셜 미디어 관리 플랫폼입니다. Sendible, SocialPilot 또는 ContentStudio가 하는 일을 동일하게 수행하지만, 무료이며 사용자(Seat)당, 채널당 또는 워크스페이스당 제한이 없습니다.

단일 멀티 워크스페이스 대시보드에서 Facebook, Instagram, LinkedIn, TikTok, YouTube, Pinterest, Threads, Bluesky, Google 비즈니스 프로필 및 Mastodon에 이르는 콘텐츠를 기획, 작성, 예약, 승인, 게시 및 모니터링할 수 있습니다. 이 플랫폼은 한 곳에서 여러 고객 계정을 관리하며, SaaS 공급업체에 매월 100~300달러를 지불하는 대신 자체적인 소셜 미디어 인프라를 직접 소유하기를 원하는 사람들을 위한 것입니다. 모든 기능은 모든 사용자에게 제공됩니다. 유료 등급, 기능 제한(FEATURE GATE), 추가 요금(UPSELL)이 없습니다.

Heroku, Render 또는 Railway에서 원클릭 버튼으로 배포하거나, Docker를 통해 자체 VPS에서 실행하거나 로컬에서 실행할 수 있습니다. 모든 플랫폼 연동은 사용자 자체 개발자 자격 증명을 사용하여 공식 퍼스트파티 API와 직접 통신하므로, 중간 집계자도 없고 벤더 종속성도 없으며, 사용자와 데이터 사이에 제3자가 존재하지 않습니다.

주요 기능

  • 멀티 워크스페이스 & 팀: 무제한 조직 → 워크스페이스 → 멤버 구성. 사용자 정의 역할, 초대 및 외부 협업자를 위한 별도의 '고객' 역할을 갖춘 세분화된 RBAC(역할 기반 액세스 제어) 지원.
  • 콘텐츠 작성기: 플랫폼별 캡션/미디어 재정의, 버전 기록, 재사용 가능한 템플릿, 콘텐츠 카테고리 및 태그, 칸반 보드 형식의 아이디어 보드를 갖춘 리치 에디터.
  • 캘린더 & 예약: 계정별 반복 주간 게시 슬롯과 다음 사용 가능한 슬롯에 게시물을 자동 할당하는 명명된 큐가 포함된 시각적 캘린더.
  • 게시 엔진: 직접 퍼스트파티 API 연동(집계자 없음), 자동 재시도, 계정별 속도 제한 추적 및 90일 게시 감사 로그.
  • 승인 워크플로: 구성 가능한 단계(없음 / 선택 사항 / 내부 / 내부 + 고객), 스레드 형식의 내부 및 외부 댓글, 알림 및 전체 감사 추적(AUDIT TRAIL).
  • 통합 소셜 인박스: 모든 연결된 플랫폼의 댓글, 멘션, DM 및 리뷰를 한 곳에서 확인. 감정 분석, 할당, 스레드 답글 및 과거 기록 백필(BACKFILL) 지원.
  • 미디어 라이브러리: 중첩 폴더, 자동 생성된 플랫폼 최적화 변환 이미지 및 대체 텍스트가 포함된 조직 및 워크스페이스 범위의 라이브러리.
  • 고객 포털: 고객이 계정을 만들지 않고도 게시물을 승인하거나 거부할 수 있는 비밀번호 없는 30일 매직 링크 액세스.
  • 알림: 모든 이벤트 유형에 대한 사용자별 기본 설정을 통한 인앱, 이메일 및 웹훅(Webhook) 전송.
  • 보안 및 운영: 암호화된 토큰 및 자격 증명 저장, 선택적 2FA(TOTP), Google/GitHub SSO, Sentry 지원 및 7일간의 가역적인 조직 삭제 유예 기간.
  • 화이트 라벨 친화적: 워크스페이스별 브랜딩(로고, 색상)과 해시태그, 첫 번째 댓글 및 게시 템플릿에 대한 워크스페이스 기본값 설정.

간단히 둘러보기

  • 시각적 캘린더: 반복 슬롯과 큐가 있는 드래그 앤 드롭 예약.
  • 게시물 에디터: 플랫폼별 재정의 및 미리보기가 포함된 작성 도구.
  • 아이디어 보드: 모든 게시물 아이디어를 추적하기 위한 칸반 워크플로.
  • 모든 것 연결: 10개 이상의 퍼스트파티 연동, 중간 집계자(AGGREGATOR) 없음.

지원 플랫폼

  • Facebook: 게시(✓), 댓글(✓), DM(✓), 인사이트(✓)
  • Instagram: 게시(✓), 댓글(✓), DM(✓), 인사이트(✓)
  • Instagram (개인): 게시(✓), 댓글(✓), DM(✓), 인사이트(✓)
  • LinkedIn (개인): 게시(✓), 댓글(✓), DM(-), 인사이트(✓)
  • LinkedIn (기업): 게시(✓), 댓글(✓), DM(-), 인사이트(✓)
  • TikTok: 게시(✓), 댓글(✓), DM(-), 인사이트(✓)
  • YouTube: 게시(✓), 댓글(✓), DM(-), 인사이트(✓)
  • Pinterest: 게시(✓), 댓글(-), DM(-), 인사이트(✓)
  • Threads: 게시(✓), 댓글(✓), DM(-), 인사이트(✓)
  • Bluesky: 게시(✓), 댓글(✓), DM(-), 인사이트(-)
  • Google 비즈니스 프로필: 게시(✓), 댓글(-), DM(-), 인사이트(✓)
  • Mastodon: 게시(✓), 댓글(✓), DM(-), 인사이트(-)

원클릭 배포

Heroku, Render, Railway를 통한 배포를 지원합니다.

배포 후 플랫폼의 대시보드에서 다음 환경 변수를 설정해야 합니다:

  • SECRET_KEY (자동 생성됨): Django 시크릿 키. 배포 버튼에 의해 자동으로 설정됩니다.
  • ENCRYPTION_KEY_SALT (자동 생성됨): 암호화 솔트. 배포 버튼에 의해 자동으로 설정됩니다.
  • DATABASE_URL (자동 프로비저닝됨): PostgreSQL 연결 문자열. 자동으로 설정됩니다.
  • ALLOWED_HOSTS (필수): 앱의 도메인. 예: your-app.herokuapp.com
  • APP_URL (필수): 전체 공개 URL. 예: https://your-app.herokuapp.com
  • STORAGE_BACKEND (선택): S3/R2 스토리지의 경우 's3'로 설정. 기본값: 로컬(local). Heroku, Render 및 Railway는 휘발성(Ephemeral) 파일 시스템을 가지므로 외부 스토리지 설정이 권장됩니다.
원문 보기
원문 보기 (영어)
Open-source social media management for creators, agencies, and SMBs. About BrightBean Studio BrightBean Studio is an open-source, self-hostable social media management platform built for creators, agencies and SMBs. It does what Sendible, SocialPilot, or ContentStudio do, but free and without per-seat, per-channel, or per-workspace limits. Plan, compose, schedule, approve, publish, and monitor content across Facebook, Instagram, LinkedIn, TikTok, YouTube, Pinterest, Threads, Bluesky, Google Business Profile, and Mastodon from a single multi-workspace dashboard. It's for people managing many client accounts under one roof who'd rather own their social stack than pay $100–300/month to a SaaS vendor. Every feature is available to every user. No paid tier, no feature gate, no upsell. You can deploy it with a one-click button on Heroku, Render, or Railway, run it on your own VPS via Docker, or run it locally. All platform integrations talk directly to the official first-party APIs using your own developer credentials, so there's no aggregator middleman, no vendor lock-in, and no third party sitting between you and your data. Features Multi-workspace & teams Unlimited orgs → workspaces → members. Granular RBAC with custom roles, invitations, and a separate Client role for external collaborators. Content composer Rich editor with per-platform caption/media overrides, version history, reusable templates, content categories & tags, a Kanban idea board. Calendar & scheduling Visual calendar with recurring weekly posting slots per account and named queues that auto-assign posts to the next available slot. Publishing engine Direct first-party API integrations (no aggregator), automatic retries, per-account rate-limit tracking, and a 90-day publish audit log. Approval workflows Configurable stages (none / optional / internal / internal + client), threaded internal & external comments, reminders, and a full audit trail. Unified social inbox Comments, mentions, DMs, and reviews from every connected platform in one place, with sentiment analysis, assignments, threaded replies, and historical backfill. Media library Org- and workspace-scoped libraries with nested folders, auto-generated platform-optimized variants, and alt text. Client portal Passwordless 30-day magic-link access so clients can approve or reject posts without creating an account. Notifications In-app, email, and webhook delivery with per-user preferences for every event type. Security & ops Encrypted token & credential storage, optional 2FA (TOTP), Google/GitHub SSO, Sentry support, and a 7-day reversible org-deletion grace period. White-label friendly Per-workspace branding (logo, colors) and workspace defaults for hashtags, first comments, and posting templates. A quick look Visual calendar - drag-and-drop scheduling with recurring slots and queues. Post editor - composer with per-platform overrides and previews. Idea board - Kanban workflow to keep track of all your post ideas. Connect anything - 10+ first-party integrations, no aggregator. Supported Platforms Platform Publish Comments DMs Insights Facebook ✓ ✓ ✓ ✓ Instagram ✓ ✓ ✓ ✓ Instagram (Personal) ✓ ✓ ✓ ✓ LinkedIn (Personal) ✓ ✓ — ✓ LinkedIn (Company) ✓ ✓ — ✓ TikTok ✓ ✓ — ✓ YouTube ✓ ✓ — ✓ Pinterest ✓ — — ✓ Threads ✓ ✓ — ✓ Bluesky ✓ ✓ — — Google Business Profile ✓ — — ✓ Mastodon ✓ ✓ — — One-Click Deploy Heroku Render Railway After deploying, set these environment variables in your platform's dashboard: Variable Required Description SECRET_KEY Auto-generated Django secret key. Set automatically by the deploy button. ENCRYPTION_KEY_SALT Auto-generated Encryption salt. Set automatically by the deploy button. DATABASE_URL Auto-provisioned PostgreSQL connection string. Set automatically. ALLOWED_HOSTS Yes Your app's domain, e.g. your-app.herokuapp.com APP_URL Yes Full public URL, e.g. https://your-app.herokuapp.com STORAGE_BACKEND No Set to s3 for S3/R2 storage. Default: local . Heroku, Render, and Railway have ephemeral filesystems, so uploaded files are lost on redeploy without S3. S3_ENDPOINT_URL If using S3 S3-compatible endpoint URL S3_ACCESS_KEY_ID If using S3 S3 access key S3_SECRET_ACCESS_KEY If using S3 S3 secret key S3_BUCKET_NAME If using S3 S3 bucket name EMAIL_HOST No SMTP server for sending invitations and password resets EMAIL_PORT No SMTP port (default: 587 ) EMAIL_HOST_USER No SMTP username EMAIL_HOST_PASSWORD No SMTP password GOOGLE_AUTH_CLIENT_ID No For Google OAuth login. Get from Google Cloud Console → Credentials. GOOGLE_AUTH_CLIENT_SECRET No Google OAuth secret For social media API keys, see Platform Credentials . Full variable reference: .env.example . Quick Start (Docker) git clone https://github.com/brightbeanxyz/brightbean-studio.git cd brightbean-studio cp .env.example .env Edit .env - change DATABASE_URL to point to the Docker service name: DATABASE_URL=postgres://postgres:postgres@postgres:5432/brightbean Then start everything: docker compose up -d docker compose exec app python manage.py migrate docker compose exec app python manage.py createsuperuser Open http://localhost:8000 - you're running. Fully Local Development (without Docker) Run everything natively - no Docker, no PostgreSQL install. Uses SQLite for the database. Prerequisites Python 3.12+ Node.js 20+ Setup 1. Clone and configure git clone https://github.com/brightbeanxyz/brightbean-studio.git cd brightbean-studio cp .env.example .env 2. Switch to SQLite Open .env and replace the DATABASE_URL line: DATABASE_URL=sqlite:///db.sqlite3 That's it - no database server to install or manage. 3. Set up Python python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt 4. Set up Tailwind CSS cd theme/static_src npm install cd ../.. 5. Run database migrations python manage.py migrate 6. Create your admin account python manage.py createsuperuser 7. Start the app (3 terminal tabs) Tab 1 - Tailwind watcher: cd theme/static_src && npm run start Tab 2 - Django dev server: source .venv/bin/activate python manage.py runserver Tab 3 - Background worker: source .venv/bin/activate python manage.py process_tasks Open http://localhost:8000 and log in with the superuser you created. Daily workflow (Docker-free) source .venv/bin/activate # activate Python env python manage.py runserver # start web server # (open another tab) python manage.py process_tasks # start worker Note: SQLite is fine for local development and small deployments. For production or heavy concurrent usage, switch to PostgreSQL. Running Tests pytest With coverage: pytest --cov=apps --cov-report=term-missing Linting & Type Checking ruff check . # lint ruff format --check . # format check mypy apps/ config/ --ignore-missing-imports # type check Auto-fix lint issues: ruff check --fix . ruff format . Production Deployment Docker Compose on a VPS (recommended) # On your server: git clone https://github.com/brightbeanxyz/brightbean-studio.git cd brightbean-studio cp .env.example .env # Edit .env: # SECRET_KEY=<generate a random 50+ char string> # DEBUG=false # ALLOWED_HOSTS=yourdomain.com # APP_URL=https://yourdomain.com # DATABASE_URL=postgres://postgres:<strong-password>@postgres:5432/brightbean docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d docker compose exec app python manage.py migrate docker compose exec app python manage.py createsuperuser This starts 4 containers: app (Gunicorn), worker, PostgreSQL, and Caddy (auto-HTTPS). Edit the Caddyfile with your domain. To update: git pull docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build docker compose exec app python manage.py migrate Other Platforms Platform Config file Notes Heroku Procfile + app.json Deploy-button ready. Must use Basic+ dynos (Eco dynos break the worker). Railway railway.toml Three services: web, worker, managed PostgreSQL. Render render.yaml Blueprint with web, worker, PostgreSQL. Must use paid tier. All platforms with ephemeral filesystems require STORAGE_BACKEND=s3 - see