피드로 돌아가기
How I built a Bluesky scraper using the AT Protocol API (and published it on Apify)
Dev.toDev.to
Backend

AT Protocol 기반 Bluesky Scraper 구축 및 API 라우팅 최적화

How I built a Bluesky scraper using the AT Protocol API (and published it on Apify)

Daniel Ainsworth2026년 5월 27일3intermediate

Context

기존 소셜 미디어 스크래퍼의 Cloudflare 차단 및 복잡한 API 비용 체계로 인한 데이터 수집 제약 발생. 공개 데이터 접근이 설계 단계부터 반영된 AT Protocol의 개방형 구조를 활용한 효율적 데이터 추출 체계 필요.

Technical Solution

  • 인증 여부에 따른 API Endpoint 분리 설계를 통한 403 Forbidden 에러 해결
  • 비인증 읽기 요청은 public.api.bsky.app로 전송하여 불필요한 오버헤드 제거
  • 인증 기반의 searchPosts 요청은 bsky.social 엔드포인트와 Bearer Token을 통해 처리
  • Depth-first Search 방식으로 중첩된 Conversation Tree 구조를 평탄화하여 순차적 데이터 리스트 생성
  • Monorepo 환경의 의존성 문제를 해결하기 위해 빌드 타임에 공유 라이브러리를 각 Actor 폴더로 복제하는 전략 채택
  • tsup 번들러를 이용해 모든 의존성을 단일 dist/main.js 파일로 패키징하여 배포 안정성 확보

1. 외부 API 연동 시 인증 토큰 포함 여부에 따른 HTTP 응답 코드(403 등)의 변화를 먼저 테스트할 것

2. Monorepo 기반 클라우드 배포 시 런타임 의존성 해결을 위해 빌드 타임 소스 복제 또는 번들링 전략을 검토할 것

3. 계층형 데이터 구조(Nested Tree) 수집 시 데이터 가공 목적에 맞는 평탄화(Flattening) 알고리즘을 적용할 것

원문 읽기