@junyoung.ai 무료 배포 리드 마그넷. 이 문서만 따라 하면 유료 분석툴 없이, 공식 API(무료)로 내가 발행한 글의 반응(조회·좋아요·댓글·리포스트)을 자동으로 모읍니다.
우리가 실제로 셋업해서 매일 자동으로 돌리게 만든 그대로(2026-06). 셋업하면서 걸렸던 함정까지 다 적었습니다 — 그게 이 가이드의 진짜 알맹이입니다.
토큰·앱ID 같은 건 전부 본인 것으로 채우세요.
curl 몇 줄. 어려우면 그 줄을 그대로 AI에 붙여 "이거 실행 도와줘" 하면 됩니다.① Meta 앱 생성 → ② 리디렉션·콜백 URL 설정 → ③ 내 계정을 테스터로 추가+수락
→ ④ OAuth 인증으로 '코드' 받기 → ⑤ 코드를 60일 토큰으로 교환 → (이후) 인사이트 읽기공식 API는 "내 계정 = 내가 만든 앱의 테스터"로 묶여야 내 데이터를 읽습니다. 앱 검수(review)는 내 계정 것만 볼 거면 필요 없습니다(개발 모드).
1. developers.facebook.com → 앱 만들기
2. 유스케이스 = "Threads API에 액세스(Access the Threads API)" (인스타도 할 거면 나중에 "Instagram" 유스케이스 추가)
3. 앱 이름 짓고 생성.
4. 앱 안에서 Threads 유스케이스 → 사용자 지정(Customize) → 권한에 threads_basic, threads_manage_insights 확인.
Threads 유스케이스 설정(Settings) 에서:
https://localhost/https://내도메인.com/)⚠️ 함정 1: 이 3칸을 다 안 채우면 "양식을 저장할 수 없음"으로 막힙니다. 리디렉션은 브라우저만 돌아가는 주소라localhostOK지만, 제거·삭제 콜백은 Meta 서버가 실제 호출해서localhost는 거부될 수 있으니 실재 도메인으로.
⚠️ 함정 2: URL 입력 후 Enter로 "등록(칩)" 시켜야 저장됩니다. 그냥 타이핑만 하고 저장 누르면 "리디렉션 URI를 지정하세요"가 뜹니다.
1. 앱 → 앱 역할(App roles) → 역할(Roles) → 아래로 스크롤 → "Threads 테스터(Threads testers)" 섹션
2. 본인 Threads 사용자명 추가 → 초대 발송
3. 휴대폰 Threads 앱에서: 프로필 → ≡ → 설정 → 계정 → 웹사이트 권한 → 초대 수락
⚠️ 함정 3: 일반 "테스터(Testers)" 칸(페이스북 사용자용)에 넣으면 "비즈니스 역할 충돌"로 거부됩니다. 반드시 "Threads 테스터" 별도 섹션에.
⚠️ 함정 4: 수락을 안 하면 다음 단계에서 error_code 1349245 (has not accepted the invite) 가 납니다.
브라우저에 아래 주소를 엽니다(본인 계정으로 로그인된 상태). {THREADS_APP_ID} 를 본인 Threads 앱 ID로 교체:
https://threads.net/oauth/authorize?client_id={THREADS_APP_ID}&redirect_uri=https://localhost/&scope=threads_basic,threads_manage_insights&response_type=code"허용" 누르면 → https://localhost/?code=... 로 이동합니다. 페이지는 안 열려도 정상 — 주소창의 code= 뒤 값(끝의 #_ 제외)이 인증 코드입니다.
단기 토큰부터 (코드는 몇 분 안에 만료되니 바로):
curl -s -X POST "https://graph.threads.net/oauth/access_token" \
-d "client_id={THREADS_APP_ID}" \
-d "client_secret={THREADS_APP_SECRET}" \
-d "grant_type=authorization_code" \
--data-urlencode "redirect_uri=https://localhost/" \
--data-urlencode "code={위에서_받은_코드}"
# → {"access_token":"TH...","user_id":...} (단기, 1시간)이걸 60일짜리로 교환:
curl -s -G "https://graph.threads.net/access_token" \
--data-urlencode "grant_type=th_exchange_token" \
--data-urlencode "client_secret={THREADS_APP_SECRET}" \
--data-urlencode "access_token={위에서_받은_단기_토큰}"
# → {"access_token":"TH...","expires_in":5183999} (약 60일)⚠️ 함정 5: 토큰 응답의user_id와, 인사이트 호출에 쓸 user_id 를 헷갈리지 마세요. 정확한 값은 아래/me로 확인:
curl -s "https://graph.threads.net/v1.0/me?fields=id,username&access_token={장기토큰}"
# → {"id":"<이게 내 user_id>","username":"<내 핸들>"}팔로워 수:
curl -s "https://graph.threads.net/v1.0/{user_id}/threads_insights?metric=followers_count&access_token={토큰}"내 글 목록 → 글별 반응:
# 1) 내 글 id 목록
curl -s "https://graph.threads.net/v1.0/me/threads?fields=id,permalink,timestamp&access_token={토큰}"
# 2) 글 하나의 인사이트
curl -s "https://graph.threads.net/v1.0/{글media_id}/insights?metric=views,likes,replies,reposts,quotes&access_token={토큰}"반응률(ER) 로 비교하면 팔로워 적어도 어떤 글이 잘 됐는지 보입니다: ER = (좋아요 + 2×댓글 + 3×리포스트) ÷ 팔로워. 절대 좋아요 ❌, 팔로워 대비 ⭕.
instagram_business_basic, instagram_business_manage_insights.https://www.instagram.com/oauth/authorize?... , 토큰 교환: https://api.instagram.com/oauth/access_token → 장기: graph.instagram.com/access_token?grant_type=ig_exchange_token.⚠️ 함정 6: 인스타 리디렉션 URI는 "설정"에 바로 없고 "비즈니스 로그인 설정(Business login settings)" 버튼을 한 번 더 눌러야 그 칸이 나옵니다. (Threads와 위치 다름.) 같은 앱이라도 리디렉션은 제품별로 따로 등록.
1. 위 curl들을 스크립트 하나로 묶어 → 내 글마다 반응을 뽑습니다. 복붙해서 시작할 골격:
#!/bin/bash
TOKEN="{60일토큰}"; G="https://graph.threads.net/v1.0"
curl -s "$G/me/threads?fields=id,permalink&access_token=$TOKEN" | jq -r '.data[].id' | while read MID; do
INS=$(curl -s "$G/$MID/insights?metric=views,likes,replies,reposts&access_token=$TOKEN")
echo "글 $MID → $INS"
# 여기서 Notion API로 그 글 행에 기록: PATCH https://api.notion.com/v1/pages/{page_id}
done이 골격을 AI에게 "내 토큰이랑 Notion DB에 맞게 끝까지 완성해줘" 하면 완성본까지 만들어 줍니다. 처음부터 직접 짤 필요 없습니다.
2. 결과를 Notion DB에 기록(글 행마다 조회·좋아요·댓글·ER). Notion API는 무료.
3. cron으로 하루 1회 실행(예: 50 23 *). 자주 할 필요 없습니다 — 반응은 천천히 쌓이니 일 1회면 충분.
4. 글이 수백 개로 쌓이면 매일 다 돌 필요 없이 최근 14일 글만 갱신(그 이전은 반응이 안정됐으니 동결). 처리량이 일정해집니다.
— 막히는 부분 있으면 @junyoung.ai 로 오세요. 같이 봅니다.