~/social/bluesky-scraper
Bluesky Scraper — 게시물, 프로필, 피드 및 인터랙션
AT Protocol을 통해 Bluesky의 게시물, 프로필, 팔로워, 피드, 스레드, 좋아요한 사용자, 리포스트한 사용자를 추출합니다 — 앱 비밀번호를 사용하면 인증이 필요한 검색과 해시태그 결과도 가져올 수 있습니다. 클린하고 정규화된 JSON.
소셜
TypeScriptAT Protocol
글로벌
카테고리social / 소셜
언어TypeScript
스택TypeScript, AT Protocol
마켓글로벌
출력클린한 RAG-레디 JSON
주요 기능
11가지 모드 — search, profile, posts, followers, following, feed, thread, likers, reposters, actorLikes, hashtag
프로필, 게시물, 팔로워, 팔로잉, 피드, 스레드, 좋아요한 사용자, 리포스트한 사용자까지 — 인증 정보 없이 퍼블릭 API로 조회
인증이 필요한 앱 비밀번호 모드 — search, hashtag, 그리고 본인 계정의 좋아요(actorLikes)
게시물 인게이지먼트 내보내기 — 게시물별 좋아요·리포스트 전체 목록
스레드 평탄화 — 설정 가능한 깊이까지 답글 트리를 탐색
모든 목록 엔드포인트에서 설정한 아이템 상한까지 자동 커서 페이지네이션 수행
모든 모드에서 게시물과 프로필에 동일하게 정규화된 JSON 구조
안정적인 HTTP 처리 — 요청 스로틀링, 지수 백오프, 429/5xx에 대한 재시도
활용 사례
- 인증된 검색을 통한 브랜드 및 키워드 모니터링
- 네트워크 전반의 해시태그 및 트렌드 추적
- 오디언스 내보내기 — 크리에이터나 브랜드의 팔로워·팔로잉 목록
- 인게이지먼트 분석 — 특정 게시물에 누가 좋아요·리포스트했는지 정확히 파악
- 클린하고 정규화된 JSON으로 BI, 분석, RAG 파이프라인용 데이터셋 구축
- 게시물 아래 대화·스레드 아카이빙
입력 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
mode | string | 선택 | 무엇을 크롤링할지 지정: posts, profile, followers, following, feed, thread, likers, reposters, actorLikes, search, hashtag 중 선택(기본값: posts). |
handles | array | 선택 | profile/posts/followers/following/actorLikes 모드에 사용할 Bluesky 핸들, 예: bsky.app. |
query | string | 선택 | 검색어(search 모드) 또는 해시태그(hashtag 모드 — #이 자동으로 붙음). |
postUri | string | 선택 | 게시물의 AT URI — thread, likers, reposters 모드에서 사용. |
feedUri | string | 선택 | 커스텀 피드의 AT URI — feed 모드에서 사용. |
identifier | string | 선택 | 인증이 필요한 모드(search, hashtag, actorLikes)용 Bluesky 로그인 핸들/이메일. |
appPassword | string | 선택 | 인증이 필요한 모드용 Bluesky 앱 비밀번호(메인 계정 비밀번호 아님). |
maxItems | number | 선택 | 저장할 게시물/프로필 최대 개수. 각 항목이 하나의 과금 이벤트입니다(기본값: 100). |
출력 예시
1{
2 "itemType": "post",
3 "mode": "posts",
4 "uri": "at://did:plc:.../app.bsky.feed.post/...",
5 "author": {
6 "did": "did:plc:...",
7 "handle": "bsky.app",
8 "displayName": "Bluesky",
9 "followersCount": 1234567
10 },
11 "text": "Example post text",
12 "createdAt": "2026-06-11T00:00:00Z",
13 "replyCount": 10,
14 "repostCount": 20,
15 "likeCount": 100,
16 "langs": ["en"],
17 "url": "https://bsky.app/profile/bsky.app/post/..."
18}
요금
이벤트당 과금: 저장된 항목(게시물 또는 프로필) 1개당 $0.001. 1,000개를 내보내면 약 $1.00이며, maxItems로 처리량과 비용을 모두 제한할 수 있습니다.
팁
- 퍼블릭 모드부터 시작하세요. 프로필, 게시물, 팔로워, 인게이지먼트(likers/reposters)는 로그인이 필요 없습니다 — 앱 비밀번호 인증은 search와 hashtag 실행에만 사용하세요.
- 게시물뿐 아니라 인게이지먼트도 내보내세요. likers와 reposters 모드는 누가 게시물을 확산시켰는지 정확히 보여줍니다 — 대부분의 Bluesky 스크래퍼가 놓치는 신호입니다.
- 대형 계정의 팔로워/팔로잉을 가져올 때는
maxItems를 제한해 실행 속도를 빠르게 유지하고 비용을 예측 가능하게 하세요.
자주 묻는 질문
Bluesky 인증 정보가 필요한가요?
search, hashtag, actorLikes 모드에서만 필요합니다 — Bluesky 설정에서 앱 비밀번호를 생성해 appPassword로 전달하세요. profile, posts, followers, following, feed, thread, likers, reposters 모드는 모두 퍼블릭 AT Protocol API로 인증 없이 동작합니다.
아무 계정의 좋아요 목록이나 내보낼 수 있나요?
아니요. Bluesky API는 인증된 계정 자신의 actorLikes만 노출하므로, handle과 로그인 identifier가 동일한 계정을 가리켜야 합니다.
게시물이나 피드의 URI는 어떻게 찾나요?
AT URI는 at://did:plc:.../app.bsky.feed.post/... 형태입니다 — Bluesky API 출력이나 개발자 도구에서 복사하세요. 피드 URI는 app.bsky.feed.generator 컬렉션을 사용합니다.
앱 비밀번호를 사용해도 안전한가요?
네 — 메인 비밀번호가 아니라 Bluesky 앱 비밀번호(설정 → 앱 비밀번호에서 생성)를 사용하세요. 권한 범위가 제한되어 있고 언제든 취소할 수 있으며, 시크릿 입력값으로 전달됩니다.
~/social 관련 도구
미디어
YouTube Subtitle & Transcript Scraper — JSON, SRT, VTT, LLM
YouTube 스크립트를 JSON, SRT, VTT, 또는 LLM-레디 텍스트로 제공합니다.
열기