SurfSense: 실시간 웹 데이터 커넥터를 갖춘 오픈소스 NotebookLM 대안

SurfSense 소개

SurfSense는 AI 에이전트가 살아 있는 웹 데이터를 끌어다 쓸 수 있게 해주는 오픈소스 리서치 플랫폼입니다. 성능이 좋은 에이전트에게 "출시 이후 레딧에서 이 제품을 어떻게 이야기하고 있나" 같은 질문을 던지면, 정작 참고할 곳이 마땅치 않습니다. 플랫폼 공식 API는 호출 한도가 빡빡하거나 기업용 가격이 매겨져 있고 아예 없는 경우도 있으며, 직접 만든 스크래핑 코드는 자주 깨집니다. 브라우저를 LLM으로 조종하는 방식은 페이지 한 장마다 수 분과 수천 토큰을 소모합니다. SurfSense는 이 세 가지 우회로 대신 플랫폼별 전용 엔드포인트를 제공하는 쪽을 택했습니다.

수집 대상은 Reddit, YouTube, Instagram, TikTok, Amazon, Walmart, Google Maps, Google Search, Indeed 그리고 웹 문서 전반입니다. 각 커넥터는 게시물과 댓글, 자막, 리뷰, 검색 결과를 구조화된 JSON으로 돌려주는 REST 엔드포인트이며, 같은 기능이 MCP 서버의 도구로도 노출됩니다. 에이전트 쪽에서는 surfsense_reddit_scrape, surfsense_google_search 같은 이름의 네이티브 도구로 보이기 때문에 Claude나 Cursor, 직접 만든 에이전트 프레임워크에서 바로 호출할 수 있습니다. 재시도와 구조화된 출력, 사용량 계량이 함께 들어 있어서 질문에서 인용이 붙은 브리프까지 가는 배관을 직접 짤 필요가 없습니다.

원래 SurfSense는 NotebookLM 대안으로 알려진 프로젝트였고, 그 리서치 워크스페이스는 지금도 그대로 남아 있습니다. 개발팀은 Claude, OpenCode, Hermes, OpenClaw 같은 도구들이 정적 색인 위에서 추론하는 일을 기본으로 해내게 되면서 에이전트에게 남은 빈 자리는 "답이 실제로 존재하는 곳의 살아 있는 데이터와 그 주변 워크플로" 라고 판단했고, 현재는 그쪽에 무게를 싣고 있다고 밝히고 있습니다. 기존 지식 베이스와 인용 기반 채팅, 리포트, 팟캐스트, 자동화는 계속 동작하며 자체 호스팅도 무료로 유지됩니다.

SurfSense의 계층 구조

SurfSense는 흩어진 데이터 소스를 커넥터 계층으로 감싸고, 그 위에 하나의 공통 인터페이스를 두는 구조입니다. 플랫폼마다 다른 수집 방식과 응답 형태를 커넥터가 흡수해 같은 모양의 구조화된 항목으로 바꾸고, 사용하는 쪽은 REST 엔드포인트나 MCP 서버 중 편한 창구를 고르면 됩니다.

커넥터별로 얻을 수 있는 데이터는 다음과 같습니다.

커넥터 에이전트가 받는 데이터
Reddit 게시물, 댓글, 서브레딧 스트림
YouTube 영상, 자막, 댓글 스레드
Instagram 공개 프로필, 게시물, 릴스
TikTok 영상, 댓글, 해시태그, 프로필
Google Maps 장소, 평점, 리뷰
Google Search 실시간 검색 결과 페이지
Indeed 공개 채용 공고, 급여, 전체 설명
Amazon 공개 상품 데이터, 가격, 평점, 판매자, 베스트셀러 순위
Walmart 공개 상품 데이터와 전체 리뷰 이력
웹 크롤 임의의 웹 페이지를 정돈된 구조화 콘텐츠로

여기에 더해 외부 MCP 커넥터를 붙일 수 있어서, Notion이나 Slack, Jira 같은 서비스는 원클릭 OAuth로 연결됩니다. 과금은 실제로 반환된 항목 수와 성공적으로 가져온 페이지 수를 기준으로 하는 종량제이며 실패한 호출에는 비용이 붙지 않습니다. 자체 호스팅으로 설치하면 과금 기능 자체가 꺼진 상태로 동작합니다.

SurfSense를 호출하는 방법

커넥터는 API 키만 있으면 언어를 가리지 않고 호출할 수 있는 REST 엔드포인트입니다.

curl -X POST "$SURFSENSE_API_URL/workspaces/$WORKSPACE_ID/scrapers/reddit/scrape" \
  -H "Authorization: Bearer $SURFSENSE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "search_queries": ["your brand"],
    "community": "SaaS",
    "sort": "top",
    "time_filter": "week"
  }'

에이전트에 통째로 물리려면 MCP 서버를 등록하는 편이 간단합니다. 아래 설정을 넣으면 모든 커넥터가 네이티브 도구로 보입니다.

{
  "mcpServers": {
    "surfsense": {
      "url": "https://mcp.surfsense.com/mcp",
      "headers": { "Authorization": "Bearer ${SURFSENSE_API_KEY}" }
    }
  }
}

MCP 서버를 로컬에서 직접 띄우려면 저장소의 surfsense_mcp 디렉토리를 사용하면 됩니다.

SurfSense 자체 호스팅 설치 방법

플랫폼 전체를 자기 인프라에 올릴 수 있고, 이 경우 과금 기능이 꺼진 채로 설치되어 하드웨어와 직접 준비한 모델 키만이 제약이 됩니다. Docker Desktop이 설치되어 실행 중이어야 합니다.

# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.sh | bash
# Windows
irm https://raw.githubusercontent.com/MODSetter/SurfSense/main/docker/scripts/install.ps1 | iex

설치 스크립트는 매일 자동 업데이트를 위해 Watchtower를 함께 설정합니다. 이 부분이 필요 없으면 --no-watchtower 플래그를 붙입니다. Docker Compose를 쓰거나 수동으로 설치하는 방법은 공식 문서에 정리되어 있습니다. 클라우드 버전을 먼저 써 보려면 신규 계정에 구독 없이 5달러 크레딧이 제공됩니다.

SurfSense의 리서치 워크스페이스

에이전트가 모아 온 자료는 기존 워크스페이스로 들어갑니다. PDF와 오피스 문서, 이미지, 오디오를 올릴 수 있고 Google Drive, OneDrive, Dropbox 동기화를 지원하며 50개 이상의 파일 형식을 다룹니다. 검색은 의미 기반과 전문 검색을 함께 쓰는 하이브리드 방식에 계층적 색인과 역순위 융합(Reciprocal Rank Fusion)이 얹혀 있고, 답변에는 출처 인용이 붙습니다.

산출물 쪽도 갖춰져 있습니다. 리포트는 PDF, DOCX, HTML, LaTeX, EPUB, ODT, 일반 텍스트로 내보낼 수 있고, 문서나 폴더를 두 명의 진행자가 대화하는 팟캐스트로 20초 안에 만들 수 있습니다. 편집 가능한 슬라이드와 내레이션이 붙은 영상 개요, 이미지 생성도 포함되어 있습니다. 자동화 기능은 일정이나 이벤트를 조건으로 에이전트 실행을 걸어 두고 결과를 Notion, Slack, Linear, Jira로 되돌려 씁니다.

모델 선택은 특정 제공자에 묶여 있지 않습니다. OpenAI 규격과 LiteLLM을 통해 100개 이상의 LLM을 쓸 수 있고, 임베딩 모델은 6,000개 이상, 주요 리랭커도 모두 지원합니다. vLLM과 Ollama로 완전히 로컬에서 돌리는 구성도 가능합니다. 에이전트 구조는 LangChain Deep Agents 위에 계획 수립과 서브에이전트, 파일 시스템 접근을 얹은 형태입니다.

SurfSense와 NotebookLM의 차이

개발팀은 Google NotebookLM과의 비교를 문서에 직접 정리해 두었습니다. 주요 항목만 옮기면 다음과 같습니다.

항목 Google NotebookLM SurfSense
에이전트용 실시간 웹 데이터 없음 Reddit, YouTube, TikTok, Google Maps 등 커넥터를 REST API와 MCP로 제공
MCP 서버 없음 모든 커넥터를 도구로 노출, 외부 MCP 서버 연결 지원
노트북당 소스 수 무료 50개에서 Ultra 600개 제한 없음
LLM 선택 Gemini 전용 OpenAI 규격과 LiteLLM으로 100개 이상
로컬 및 사설 LLM 불가 vLLM, Ollama 지원
자체 호스팅 불가 Docker 한 줄 또는 Docker Compose
검색 방식 의미 기반 검색 하이브리드 검색에 계층적 색인과 역순위 융합

다만 개발팀은 영상 생성과 팟캐스트 생성 항목에서는 NotebookLM 쪽이 낫다고 인정하면서 개선 중이라고 적어 두었습니다. 프로젝트 상태에 대해서도 "아직 프로덕션 준비가 된 것은 아니다" 라고 스스로 밝히고 있으므로, 실서비스 도입을 검토한다면 이 점을 감안하는 편이 좋습니다.

SurfSense의 라이선스

SurfSense는 저장소 안에서 두 가지 라이선스를 나눠 적용합니다. surfsense_backend/app/proprietary/ 디렉토리에 있는 내용은 Business Source License 1.1을 따르고, 그 밖의 모든 코드는 Apache License 2.0으로 공개되어 있습니다. Apache 2.0 영역은 개인 및 상업적 목적으로 자유롭게 쓸 수 있지만, BSL이 적용된 디렉토리는 사용 조건이 다르므로 해당 폴더의 LICENSE 파일을 별도로 확인해야 합니다.

:house: SurfSense 공식 홈페이지

:books: SurfSense 문서 사이트

:github: SurfSense 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: