Nora Intake 가이드

Nora Intake는 여러 채널의 데이터를 이 PC에서 수집하고, SQL 없이 canonical 데이터로 가공해, 어떤 제품·에이전트든 읽어갈 수 있는 데이터 API와 MCP로 내보내는 데스크탑 앱입니다. 서버도, 로그인도 없습니다.

연동 · 파일커넥터 / 봇수집멱등 · 중복제거로컬 DBSQLite (WAL)조합 (Combine)라이브 뷰가공 (Transform)canonical데이터 API · MCP제품 / 에이전트
수집 → 로컬 DB → 조합·가공 → API·MCP. 전부 이 PC 안에서.

개요

네 단계로 생각하면 쉽습니다.

  1. 연동커넥터·봇·파일로 소스를 붙입니다.
  2. 수집데이터가 로컬 DB에 멱등하게 쌓입니다(중복 없음).
  3. 가공·조합조합(라이브 뷰)·가공(canonical)으로 원하는 형태로.
  4. 소비데이터 API·MCP로 제품과 코딩 에이전트가 읽어갑니다.

설치

최신 릴리스에서 macOS(.dmg)를 내려받아 설치합니다. 설치 후 자동 업데이터가 새 버전을 받습니다.

봇 자동화를 쓰려면 Google Chrome이 필요합니다(앱이 사용자의 Chrome을 구동).

라이선스 활성화

첫 실행 시 라이선스 키를 입력합니다. 키는 이 기기에 전역 저장(~/.nora)되고 온라인으로 검증됩니다. 오프라인에서도 마지막 검증 이후 일정 기간(grace) 동작합니다.

새 컴퓨터로 옮길 때라이선스는 기기별입니다. 새 PC에서 다시 활성화하세요.

연동 (커넥터)

연동 화면에서 커넥터(네이버·쿠팡·이지어드민·Meta·Apify 등)를 추가합니다. 커넥터마다 필요한 인증(키/토큰)을 입력하며, 비밀값은 이 PC에만 저장되고 화면으로 평문 반출되지 않습니다.

Apify처럼 검색 조건이 바뀌는 커넥터는 연결 시 키워드·조건을 입력하고, 이후에도 “검색 입력”에서 수정할 수 있습니다.

수집

“지금 수집”으로 즉시, 또는 수집 방식(배치/리얼타임)과 주기를 정해 자동으로 데이터를 가져옵니다. 같은 레코드를 다시 받아도 자연키·내용 해시로 중복을 걸러 깨끗하게 누적됩니다.

로컬 DB

수집 데이터는 production급으로 튜닝된 로컬 SQLite(WAL·busy_timeout·인덱스)에 저장됩니다. 여러 커넥터·봇·API가 동시에 써도 안전하게 동작하는 “한 대짜리 데이터 서버”입니다.

로컬 화면에서 테이블(소스)을 보고, 행을 직접 추가·수정·삭제할 수 있습니다. 즉, 앱을 설치하면 그 자체로 단단한 로컬 DB가 됩니다.

조합 (Combine)

여러 소스를 union·조인·필터·집계해 하나의 “뷰”로 만듭니다. 복사 없이 매번 라이브로 계산되어 항상 최신입니다. `/v1/data?source=<조합>` 또는 MCP로 읽습니다.

가공 (Transforms)

원천 수집을 named canonical 소스(예: `tiktok.post_metrics`)로 바꾸는 데이터 레이어입니다. SQL 없이 수식(중첩 path·coalesce·if·cast·null-safe 비율)과 단계(compute·filter·latest_per·group_summarize·rank_top_n·join)로 정의합니다.

  • 채팅으로 설명하면 AI가 초안을 만들고, 드롭다운 빌더로 다듬습니다.
  • 발행하면 이후 데이터가 쌓일 때마다 자동 재계산(compute-on-ingest)됩니다.

내보내기 · 이관

데이터(소스·조합·가공)를 원하는 폴더에 CSV·JSON·JSONL로 내보냅니다. 전체 설정(데이터+봇+연동+가공+조합+브라우저 로그인)은 하나의 `.nora-intake` 파일로 내보내 새 컴퓨터에서 “가져오기”로 복원합니다.

안전파일 쓰기는 이 PC에서만 가능합니다(외부 요청 차단). 이관 파일에는 비밀·세션이 포함되니 안전 경로로만 공유하세요.

봇은 액션 노드의 그래프입니다(이동·클릭·추출·for_each 등). 자연어나 이미지로 설계하고, 캔버스에서 노드를 손봅니다. 로그인 벽은 “로그인 브라우저”에 한 번 로그인해 세션을 재사용하는 방식으로 넘습니다.

다중 브라우저

설정 › 엔진에서 명명 브라우저를 여러 개 등록하고 각각 다른 계정으로 로그인합니다. 각 브라우저는 껐다 켜도 유지되는 고정 프로필입니다.

봇 (같은 플로우)브라우저 1 · 계정 A브라우저 2 · 계정 B브라우저 3 · 계정 C… 동시 실행
한 봇을 여러 계정 브라우저에서 동시에 — for_each 행은 균등 분할.
  • 봇 툴바에서 봇을 브라우저 하나 또는 여러 개에 배정합니다.
  • 여러 개를 고르면 같은 플로우가 각 창에서 동시에 돌고, for_each 행은 균등 분할됩니다(10개 = 약 10배).
  • 서로 다른 봇도 각자 브라우저에서 병렬로 실행됩니다.

발행 · 버전

편집 중인 것은 드래프트, 발행하면 스케줄러가 도는 라이브 버전이 됩니다(반쯤 만든 편집이 프로덕션을 건드리지 않음). 모든 편집은 자동으로 버전 기록되어, 언제든 이전 버전으로 복원할 수 있습니다.

데이터 API

표준 봉투로 읽고 씁니다.

# read (raw · canonical · combination)
GET /v1/data?source=tiktok.post_metrics&where=views:gt:1000&order=record.views.desc

# write (the local store is a real DB)
POST   /v1/data/:source        # add a row
PATCH  /v1/data/:source/:id    # update fields
DELETE /v1/data/:source/:id    # delete

로컬은 열려 있고(localhost), 외부(터널)는 토큰이 필요합니다. 파일 경로·내보내기 엔드포인트는 이 PC에서만 동작합니다.

MCP (Claude Code · Codex)

MCP는 표준 프로토콜이라 하나의 서버가 모든 코딩 에이전트에서 그대로 동작합니다. Claude Code, Codex, Cursor 어디서든 같은 도구를 씁니다 — 등록 형식만 다릅니다.

Claude CodeCodexCursor …Nora MCP 서버같은 서버 · 같은 도구 — 등록 형식만 다름

핵심: 이 설정만 복사하면 Codex든 Claude Code든 됩니다. 설정 › MCP 탭에서 사용하는 에이전트 것만 복사해 붙여넣으세요(경로·토큰 자동 채움).

  • Claude Codeclaude mcp add nora-intake -- node …/index.mjs
  • Codex~/.codex/config.toml 에 [mcp_servers.nora-intake]
  • Cursor / 기타{ "mcpServers": { "nora-intake": … } }

도구는 앱 거의 전 범위를 덮습니다: 연동·수집·로컬 읽기/쓰기·조합·가공·봇 설계/실행·브라우저 관리·실행결과 확인·파일 내보내기·발행/버전 복원. 앱이 켜져 있어야 합니다.

릴레이 / 원격

공개 도메인(터널)을 켜면 데이터 API를 외부에서 읽을 수 있습니다. 이때는 토큰이 필수이고, 라이선스가 유효할 때만 응답합니다. 데이터는 사용자 PC를 떠나지 않으며, 원격 공유는 사용자가 켤 때만 열립니다.

자동 업데이트

앱은 코드 서명·공증·서명된 업데이터로 검증된 패치만 받아 설치합니다. 새 버전이 올라오면 자동으로 감지합니다.

FAQ

데이터가 외부로 나가나요?

아니요. 수집 데이터는 이 PC에만 저장됩니다. 릴레이를 켜서 직접 공유할 때만, 그것도 토큰으로 잠긴 채 나갑니다.

Codex와 Claude Code를 동시에 써도 되나요?

네. 같은 MCP 서버에 둘 다 등록하면 됩니다. 도구는 동일합니다.

개발 환경에서도 라이선스가 필요한가요?

아니요. 개발 빌드는 라이선스 없이 동작합니다.

더 궁금하면 앱의 설정 화면 각 탭에서 바로 확인할 수 있어요.