SNS 대시보드에 Threads 자동 발행 기능 직접 구현하기

아임해피2026. 3. 31.조회 1

소개

SNS 대시보드에서 콘텐츠를 작성하면 여러 플랫폼에 한 번에 발행할 수 있는 기능을 만들고 있었는데, X(Twitter)는 발행이 되는데 Threads는 버튼을 눌러도 아무것도 안 올라가는 문제가 있었습니다. 코드를 보니 Threads 발행 로직 자체가 없었고, 직접 Threads API를 연동해서 실제 발행이 되도록 만들고 싶었습니다.


진행 방법

사용 도구: Claude Code, Supabase Edge Functions, Threads Graph API, Meta 개발자 콘솔

1. 문제 파악 Claude Code에게 "Threads 발행이 왜 안 되냐"고 물었더니 dashboard.jsx 코드를 분석해서 X 발행 로직은 있는데 Threads 발행 코드가 아예 없다는 걸 발견했습니다.

2. Edge Function 생성 X 발행용 post-x 함수를 참고해서 post-threads Edge Function을 새로 만들었습니다. Threads Graph API는 2단계로 동작합니다:

  • 1단계: 미디어 컨테이너 생성 (/{userId}/threads)

  • 2단계: 게시물 발행 (/{userId}/threads_publish)

async function createContainer(userId, text, accessToken) {
  const resp = await fetch(`https://graph.threads.net/v1.0/${userId}/threads`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ media_type: "TEXT", text, access_token: accessToken }),
  });
  const data = await resp.json();
  return data.id;
}

async function publishContainer(userId, containerId, accessToken) {
  const resp = await fetch(`https://graph.threads.net/v1.0/${userId}/threads_publish`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ creation_id: containerId, access_token: accessToken }),
  });
  const data = await resp.json();
  return data.id;
}

3. dashboard.jsx 수정 발행 버튼 클릭 시 Threads 발행 로직 추가

4. Supabase 배포

npx supabase functions deploy post-threads

→ 배포 성공

5. Access Token 발급 시도 (현재 진행 중) Meta 개발자 콘솔에서 Threads API Access Token을 발급받으려 했으나, 단기 토큰→장기 토큰 교환 과정에서 계속 오류 발생. 원인은 토큰을 URL에 넣을 때 특수문자가 깨지는 문제로 파악. OAuth 인증 코드 방식으로 다시 시도 예정.


결과와 배운 점

  • Threads API는 Facebook Graph API 기반이라 Meta 개발자 콘솔에서 앱을 만들고 테스터 등록을 해야 함

  • 단기 토큰(1시간)을 장기 토큰(60일)으로 교환할 때 URL 인코딩이 필수

  • Edge Function 배포는 성공했고, Access Token만 연동하면 실제 발행 가능한 상태

  • 앞으로: OAuth 코드 방식으로 토큰 발급 완료 후 실제 발행 테스트 예정


도움 받은 글


컴퓨터에 있는 한국 TV 앱의 스크린샷

한국 트위터 계정 스크린샷

스터디장 코아님이 거의 떠먹여주다시피해서 잘만 따라하면하게됩니다

sns대시보드 꼭 해야하나 생각해봤는데

AI모르는 직원에게 아이디,비번 노출없이

먼저 마스터 글을 주고

프롬프트 지정하고

발행 SNS 지정하고

예약해두라고 할 수 있을것 같습니다.

생각만해도 너무 좋네요☺️

AI 모르는 직원을 어디서 부터 교육할까 생각했는데

버튼하나만으로 되게 할 생각입니다.

  1. 다음 스텝은 웹에 올려 어디서나 사용하게 해야할 듯합니다.

  2. text를 주로 올리다 보니 x, threds, 유튜브커뮤니티(<==이건 인증키 받았는데 안되서 다시 해봐야겠습니다) 그리고 뉴스레터까지 text위주의 SNS 자동화 해보겠습니다.

다시한번 코아님 감사합니다!

댓글 0

로그인하고 댓글을 작성하세요

SNS 대시보드에 Threads 자동 발행 기능 직접 구현하기 | GPTers