이번 X 포스트는 공개 메타데이터만으로 카드 안의 전체 텍스트를 복원할 수는 없었습니다. 다만 공개 검색과 연결된 최신 원본 저장소를 교차 확인한 결과, 현재 확인 가능한 핵심 소스는 steipete/birdclaw입니다. 이 저장소의 README 첫 줄은 매우 직설적입니다. Local Twitter memory in SQLite: archives, DMs, likes, bookmarks. 그리고 바로 이어서 local-first Twitter workspace라고 스스로를 규정합니다. 이 두 문장만으로도 birdclaw의 정체가 꽤 분명해집니다. 이건 예쁜 소셜 클라이언트를 만들겠다는 프로젝트가 아니라, 트위터/X 데이터를 로컬 SQLite에 쌓아 두고, 사람이든 에이전트든 반복 조회·분류·응답·연구에 쓰게 하려는 워크스페이스 에 가깝습니다. GitHub
이 관점이 중요한 이유는, birdclaw를 그냥 “트위터 보관 앱” 정도로 보면 이 프로젝트의 절반만 이해하게 되기 때문입니다. README를 보면 birdclaw는 아카이브 임포트, cached live reads, likes/bookmarks, DM shards, FTS5 검색, AI-ranked inbox, scriptable JSON, reply flows, local blocklist, research briefs, profile analysis까지 한 덩어리로 묶습니다. 즉 이 저장소는 SNS 보기 도구가 아니라, 소셜 데이터를 에이전트가 claw-able 하게 만드는 로컬 메모리 인프라 로 읽는 편이 더 정확합니다. GitHub
Sources
1. birdclaw의 핵심은 ‘소셜 피드 보기’보다 ‘로컬 메모리화’에 있다
README는 birdclaw가 keeps your Twitter data in local SQLite 한다고 못 박습니다. 여기서 포인트는 UI가 아닙니다. 저장 위치와 데이터 모델 입니다. 트윗, 프로필, DMs, likes, bookmarks, followers/following, media cache, avatar cache가 전부 ~/.birdclaw 아래의 로컬 저장소에 쌓입니다. GitHub
이게 중요한 이유는, 대개 소셜 플랫폼을 다룰 때 데이터는 플랫폼 안에 남고 사용자는 화면만 봅니다. 반면 birdclaw는 그 반대로 갑니다.
- 데이터를 로컬 SQLite에 넣고
- 미디어와 프로필도 캐시하고
- archive가 있으면 통째로 가져오고
- 없어도 live sync로 일부를 채우며
- search와 reply와 triage를 그 위에서 합니다
즉 소셜 피드를 소비하는 게 아니라, 소셜 흔적을 로컬에서 재구성 가능한 데이터셋 으로 바꿉니다.
flowchart TD
A["X / Twitter 데이터"] --> B["archive import"]
A --> C["cached live sync"]
B --> D["local SQLite"]
C --> D
D --> E["search / triage / reply / research"]
classDef sourceTone fill:#fde8c0,stroke:#c9a647,color:#333,stroke-width:1px;
classDef storeTone fill:#c5dcef,stroke:#5b8db8,color:#333,stroke-width:1px;
classDef useTone fill:#c0ecd3,stroke:#5ca379,color:#333,stroke-width:1px;
class A,B,C sourceTone;
class D storeTone;
class E useTone;그래서 birdclaw의 핵심은 클라이언트보다 데이터의 재소유화 에 있습니다.
2. archive + live sync를 동시에 쓰는 구조가 중요한 이유
birdclaw README에서 특히 인상적인 부분은 imports archives when you have them과 still works when you do not를 함께 적어 둔 부분입니다. 이 프로젝트는 아카이브가 있으면 과거 전체를 bulk import하고, 아카이브가 없어도 xurl이나 bird를 통해 mentions, likes, bookmarks, home timeline, DMs 같은 live sync를 수행합니다. GitHub
이 설계는 현실적입니다. 소셜 데이터는 한 번에 완전하게 얻기 어렵고, 플랫폼 정책도 계속 바뀝니다. 그래서 birdclaw는 두 경로를 함께 둡니다.
- archive는 과거 전체를 한 번에 회수하는 경로
- live sync는 최신 상태를 부분적으로 따라가는 경로
즉 하나의 정답 수집기가 아니라, 불완전한 여러 경로를 합쳐 로컬 기억을 유지하는 구조 입니다.
flowchart TD
A["Archive import"] --> C["과거 전체 복원"]
B["Live sync"] --> D["최신 상태 보강"]
C --> E["local SQLite memory"]
D --> E
classDef pathTone fill:#fde8c0,stroke:#c9a647,color:#333,stroke-width:1px;
classDef memTone fill:#c5dcef,stroke:#5b8db8,color:#333,stroke-width:1px;
class A,B,C,D pathTone;
class E memTone;이건 단순 구현 세부가 아니라, birdclaw가 “앱”보다 기억 인프라 에 가깝다는 걸 보여 줍니다.
3. 검색과 triage 기능이 붙는 순간 이 프로젝트는 단순 아카이브를 넘어선다
README를 보면 birdclaw는 FTS5 search over tweets and DMs, mentions queue, likes/bookmarks review lanes, inbox, blocks, replied/unreplied filters, AI-ranked inbox, low-signal filtering까지 제공합니다. GitHub
이 조합은 굉장히 의미심장합니다. 단순 아카이브 도구라면 “저장”과 “검색”에서 멈춥니다. 그런데 birdclaw는 그 다음 단계로 갑니다.
- 무엇이 중요한 mention인지 골라내고
- 어떤 DM이 가치가 높은지 정렬하고
- 어떤 링크가 많이 돌고 있는지 모으고
- 무엇에 답장했고 무엇에 안 했는지 추적합니다
즉 소셜 기록을 행동 가능한 작업 큐 로 바꾸는 것입니다. 이게 바로 에이전트 친화적이라는 뜻입니다.
flowchart TD
A["local SQLite memory"] --> B["FTS5 search"]
A --> C["mentions queue"]
A --> D["likes / bookmarks lanes"]
A --> E["AI-ranked inbox"]
A --> F["reply / moderation actions"]
classDef memTone fill:#c5dcef,stroke:#5b8db8,color:#333,stroke-width:1px;
classDef workTone fill:#c0ecd3,stroke:#5ca379,color:#333,stroke-width:1px;
class A memTone;
class B,C,D,E,F workTone;즉 birdclaw는 “내 트윗을 보관해 둔다”보다, 소셜 데이터를 작업 가능한 inbox로 만든다 는 데 더 가깝습니다.
4. scriptable JSON과 CLI가 있다는 건 사람이 아니라 에이전트를 염두에 뒀다는 뜻이다
README는 birdclaw가 exposes scriptable JSON for agents and automation라고 직접 말합니다. 이 문장은 이 저장소의 정체성을 거의 다 설명합니다. 단순 로컬 웹앱이었다면 JSON export를 agent-first 언어로 설명하지 않았을 것입니다. GitHub
또 CLI 예시도 이를 뒷받침합니다.
search tweetssync mentionsgraph summarymentions exportresearchdiscussprofile-analyze
즉 birdclaw의 CLI는 단순 관리 명령이 아니라, 에이전트가 사용할 수 있는 분석 표면 입니다.
flowchart TD
A["birdclaw SQLite"] --> B["Web UI"]
A --> C["CLI"]
C --> D["JSON export"]
D --> E["agents / automation"]
classDef storeTone fill:#c5dcef,stroke:#5b8db8,color:#333,stroke-width:1px;
classDef surfTone fill:#fde8c0,stroke:#c9a647,color:#333,stroke-width:1px;
classDef outTone fill:#c0ecd3,stroke:#5ca379,color:#333,stroke-width:1px;
class A storeTone;
class B,C,D surfTone;
class E outTone;그래서 README 부제인 “Stores all your tweets nicely claw-able for agents”는 농담이 아니라 설계 요약입니다.
5. follow graph, link intelligence, DM workspace가 붙으면서 ‘소셜 메모리’가 된다
birdclaw가 단순 timeline viewer와 다른 이유는, 데이터가 단순 chronological feed로만 남지 않기 때문입니다. README에는:
- follow graph queries
- top followers / unfollows / mutuals / non-mutual following
- links for top URLs across windows
- DMs workspace with influence context
- profile hydration, affiliation badge edges, bio entity extraction
같은 기능이 적혀 있습니다. GitHub
이건 저장소가 소셜 데이터를 세 가지 층으로 다룬다는 뜻입니다.
- timeline memory
- relationship graph
- research / triage workspace
즉 birdclaw는 “트윗 목록”보다 사람, 관계, 링크, 대화, 반응을 모두 엮은 개인 소셜 지식 그래프의 초입 에 가깝습니다.
6. local-first와 safety 규칙을 보면 이건 제품보다 개인 운영체제에 가깝다
README는 safety 섹션에서 local-first by default, tests disable live writes, CI disables live writes, app has no auth layer because it is a local-only tool라고 설명합니다. GitHub
이건 매우 중요한 태도입니다. birdclaw는 많은 SaaS형 소셜 툴과 달리:
- 서버 멀티테넌시를 전제로 하지 않고
- 데이터가 내 디스크에 머무르며
- 실수로 live write가 일어나지 않도록 가드하고
- auth 계층 대신 로컬 신뢰 경계를 사용합니다
즉 이 프로젝트는 “서비스”보다 개인이 소셜 데이터를 자기 작업 환경 안에서 운영하는 운영체제 조각 에 더 가깝습니다.
7. birdclaw가 진짜 흥미로운 이유는 ‘트위터 클라이언트’가 아니라 ‘에이전트용 외부 기억장치’이기 때문이다
이 저장소를 한 문장으로 다시 요약하면 이렇습니다. birdclaw는 트윗을 보기 위한 앱이 아니라, 에이전트가 나의 소셜 기록과 관계망과 DM과 북마크를 로컬에서 읽고 정리하고 분류하고 응답하게 만들기 위한 외부 기억장치 입니다. GitHub
그렇기 때문에 이 프로젝트의 가치도 UI 미감이나 피드 경험보다:
- 로컬 SQLite 정규화
- archive + live sync 병행
- FTS5 검색
- JSON export
- triage / research / discuss 표면
에 있습니다.
핵심 요약
- birdclaw는 단순 트위터 클라이언트보다 로컬 소셜 메모리 워크스페이스 에 가깝습니다.
- archive import와 live sync를 함께 써서 과거 전체와 최신 상태를 동시에 다룹니다.
- FTS5 검색, inbox triage, reply 흐름이 붙어 단순 보관이 아니라 작업 큐화 가 가능합니다.
- CLI와 scriptable JSON은 birdclaw가 사람보다 에이전트와 자동화 를 강하게 염두에 둔 설계임을 보여 줍니다.
- follow graph, links, DMs, profile hydration이 붙으며 단순 timeline이 아니라 관계형 소셜 기억 으로 확장됩니다.
- local-first와 write-guard 규칙 때문에 이 프로젝트는 SaaS보다 개인 운영체제 에 더 가깝습니다.
결론
birdclaw가 흥미로운 이유를 한 문장으로 줄이면 이렇습니다. 이건 트위터를 “보는” 앱이 아니라, 트위터를 에이전트가 만질 수 있는 로컬 메모리로 바꾸는 도구 입니다.
그래서 이 저장소는 소셜 미디어 툴이라기보다, 에이전트 시대의 외부 기억장치가 어떤 모습이어야 하는지 보여 주는 사례로 읽는 편이 더 맞습니다. 내 트윗과 DM과 북마크가 플랫폼 안에만 갇혀 있지 않고, 로컬 SQLite에서 검색·연구·응답 흐름으로 재구성되는 것. 그게 birdclaw가 다른 급으로 보이는 이유입니다.