제품 개발자

제품에 게시 기능 추가.

가상의 저널링 앱이 사용자 확인을 거쳐 소셜 게시물을 예약하고 결과를 표시하는 작업을 추가합니다.

자체 제품 + SOSOAPI

설명용 통합 흐름
  1. 자체 제품준비 및 확인
  2. SosoAPI확인된 게시물 하나 예약
  3. 소셜 계정결과 추적
통합 흐름 예제. 안내에서 서버 측 API 요청과 응답 필드를 확인하세요.

세 단계

  1. 콘텐츠 준비

    제품 안에서 문구와 이미지를 모으세요.

  2. 사용자 확인 제공

    예약 전에 계정, 콘텐츠, 시간을 보여주세요.

  3. 결과 가져오기

    진행 상황과 최종 게시 결과를 표시하세요.

소셜 게시가 제품의 일부가 됩니다.

전체 안내 보기

시나리오

가상의 저널링 제품에 의도적이고 검토 가능한 “이 소식 예약” 작업을 추가하세요. 사용자의 Workspace와 정확한 연결 계정을 계속 표시하고 제공업체 게시를 암시하지 않으며 반환 상태를 보여주세요.

“제품에 게시 기능을 추가하세요.”를 위한 SosoAPI 예시 Workspace 일러스트
가상 데이터가 있는 공용 New Post 작성기. 게시물은 제출되지 않았습니다.

시작 전

  • SosoAPI 계정을 만들고 인증한 뒤 원하는 Workspace를 선택하세요.
  • App Settings → Agents & API Access에서 API 키를 생성하세요. 서버 환경의 SOSOAPI_API_KEY로 저장하세요. JavaScript 예제는 Node.js 20+를 사용하며 SosoAPI 소스 저장소는 필요하지 않습니다.
  • 현재 승인된 범위에서만 실제 Workspace UUID와 Threads 소셜 계정 UUID를 선택하세요. 계정은 Threads 텍스트 게시물에 적격해야 합니다.
  • API 키 소유자는 선택한 Workspace의 editor 또는 owner 접근이 필요합니다. 키는 서버에 보관하고 브라우저 코드, 요청 JSON, 로그에 넣지 마세요.

입력 예제

가상 제품
Harborlight Journal · 비공개 저널링 앱 콘셉트; 실제 통합을 주장하지 않습니다.
사용자 의도
선택한 Threads 계정에 검토한 제품 메모 하나를 미래 현지 시간으로 예약하세요.
예시 문구
“나중을 위한 짧은 메모: Harborlight Journal이 더 짧은 일상 성찰을 위한 여유를 만듭니다. 생각 하나만 남기고 나머지는 내일로 미뤄 보세요.”
필수 런타임 범위
현재 사용자가 승인한 범위의 <workspace-uuid> 및 <threads-social-account-uuid>. ID를 추측하지 마세요.
예약
<future ISO-8601 instant with offset>, display_timezone은 Asia/Hong_Kong으로 설정합니다.
재시도 ID
<unique stable idempotency key for this one user intent>; 같은 요청을 안전하게 재시도할 때만 재사용하세요.

단계별 안내

  1. API 호출 전에 제품 확인 단계 설계

    SosoAPI에서 이 영역 열기
    • SosoAPI 앱에서 원하는 Workspace를 선택하고 연결된 계정을 검토하세요. 제품 목업에도 같은 사용자 선택 Workspace와 계정을 표시하고 조용히 대신 선택하지 마세요.

    • 확인 단계에서 정확한 캡션, 계정, 현지 시간, 시간대를 보여주세요. 당사자가 Schedule을 선택해야 하며 양식 열기만으로 제출되어서는 안 됩니다.

    예상 결과

    쓰기 전에 사람이 대상과 시간을 확인할 수 있습니다. 가상 제품 목업은 설계 연습이며 설치된 고객 통합이 아닙니다.

  2. 서버에서 현재 Scheduled Posts 읽기

    • <workspace-uuid>를 선택한 Workspace ID로 교체하고 서버에서 이 읽기 전용 요청을 실행하세요:

    • const apiKey = process.env.SOSOAPI_API_KEY;
      if (!apiKey) throw new Error("Configure a SosoAPI API key on your server");
      const response = await fetch(
        "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/scheduled-posts/list",
        {
          method: "POST",
          headers: {
            "Authorization": "Bearer " + apiKey,
            "Content-Type": "application/json"
          },
          body: JSON.stringify({"workspace_id":"<workspace-uuid>"})
        }
      );
      const result = await response.json();
      if (!response.ok) throw new Error("SosoAPI request failed: " + response.status);
      // Use result in your server response; never return or log the API key.
    • 반환 데이터로 제품 목록을 갱신하세요. 사용자 확인은 이 읽기와 별도로 유지하세요.

    예상 결과

    Workspace의 현재 게시물 또는 인증/검증 오류를 받습니다. 이 읽기 전용 요청은 게시물을 생성하지 않습니다.

  3. 사용자의 명시적 확인 후에만 제출

    • Calendar를 열고 New Post를 선택하여 같은 앱 작업의 검토 단계를 비교하세요.

    • 모든 자리표시자를 승인된 ID, 오프셋이 있는 미래 ISO 시각, 고유 멱등성 키로 교체하세요. 서버 측 요청 실행 전에 계정, 문구, 시간을 검토하세요.

    • const apiKey = process.env.SOSOAPI_API_KEY;
      if (!apiKey) throw new Error("Configure a SosoAPI API key on your server");
      const response = await fetch(
        "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/scheduled-posts/create",
        {
          method: "POST",
          headers: {
            "Authorization": "Bearer " + apiKey,
            "Content-Type": "application/json"
          },
          body: JSON.stringify({
        "workspace_id": "<workspace-uuid>",
        "social_account_id": "<threads-social-account-uuid>",
        "caption": "A small note for later: Harborlight Journal is making room for shorter daily reflections. Keep one thought; leave the rest for tomorrow.",
        "hashtags": [],
        "media": [],
        "provider_payload": {"platform": "threads", "publish_options": {"post_type": "TEXT"}},
        "scheduled_at": "<future ISO-8601 instant with offset>",
        "display_timezone": "Asia/Hong_Kong",
        "idempotency_key": "<unique-stable-key-for-this-intent>"
      })
        }
      );
      const result = await response.json();
      if (!response.ok) throw new Error("SosoAPI request failed: " + response.status);
      // Use result in your server response; never return or log the API key.
    • 이 요청을 실행하면 실제 예약이 생성됩니다. 사용자 확인 후에만 제출하고 API 키를 브라우저에 노출하지 마세요.

    예상 결과

    유효한 접수 응답은 생성된 Scheduled Post를 식별하며 제공업체 게시를 증명하지 않습니다. 기능 거부, 잘못된 범위/계정, 미지원 페이로드, 예약 거부는 성공이 아닌 오류로 표시해야 합니다.

  4. 반환된 상태를 표시하고 사용자에게 안전한 후속 조치 제공

    SosoAPI에서 이 영역 열기
    • 반환된 Scheduled Post ID를 저장하고 제품에 현재 상태, 대상, 예약을 표시하세요.

    • 해당 Scheduled Post 상세로 사용자를 연결하세요. 전송에 사람의 조치가 필요하면 조용히 재제출하는 대신 Needs Attention 항목을 연결하세요.

    • 제공업체가 확인한 최종 상태가 기록될 때까지 요청을 게시 완료로 표시하지 마세요.

    예상 결과

    제품은 요청 영수증과 예약, 게시 중, 게시 완료, 실패, 알 수 없음 관찰을 구별합니다. 알 수 없는 결과는 새 쓰기 전에 기존 게시물과 대조합니다.

요청 영수증. 그다음 게시 결과.

아래 예제는 가상의 값으로 API 응답 필드 일부를 보여줍니다. 예약 생성 후 post.id를 저장하고 해당 게시물의 결과를 확인하세요.

1. 생성 응답

{
  "post": {
    "id": "10000000-0000-4000-8000-000000000001",
    "status": "scheduled",
    "scheduled_at": "2100-01-05T10:00:00+08:00",
    "published_at": null,
    "permalink": null
  },
  "deduped": false
}

2. 같은 게시물 읽기

POST /studio-api/scheduled-posts/get
{
  "id": "10000000-0000-4000-8000-000000000001"
}

제공업체 확인 후 상세 응답에는 다음이 포함될 수 있습니다:

{
  "post": {
    "id": "10000000-0000-4000-8000-000000000001",
    "status": "published",
    "published_at": "2100-01-05T02:00:08Z",
    "permalink": "https://www.threads.net/@example/post/EXAMPLE"
  },
  "delivery": {
    "stage": "terminal",
    "message": "Published on Threads."
  }
}
post.status
scheduled, publishing, published, failed 같은 실제 상태를 사용하세요. 연결이 끊기면 무슨 일이 있었는지 판단하기 전에 같은 게시물을 읽으세요.
post.permalink
가능한 제공업체 게시물 링크이며 null일 수 있습니다. 위 URL은 예시입니다.
delivery / outcomes
상세 응답에는 게시 진행 상황과 해당 게시물의 가능한 플랫폼 결과가 표시됩니다. 실패하면 다음 작업을 정하기 전에 상세와 Needs Attention을 확인하세요.

실제 게시 영수증이 아닌 필드 예제입니다. 이 페이지는 API를 호출하지 않습니다.

각 상태의 의미

Submitted요청 응답
요청이 접수되었습니다. 예약 또는 게시 완료로 판단하기 전에 현재 게시물 상태를 확인하세요.
Scheduled게시물 상세
Scheduled Post가 미래 시간으로 접수되었습니다. 대기 중에도 대상과 예약 시간을 표시하세요.
Publishing게시물 상세
전송이 진행 중입니다. 최종 결과를 기다리세요. 진행 상태는 성공이 아닙니다.
Published게시물 상세
Scheduled Post에 대해 SosoAPI가 최종 제공업체 확인을 기록한 후에만 사용하세요.
Failed게시물 상세
최종 실패는 검토가 필요합니다. 변경 또는 재시도할 내용을 정하기 전에 게시물 상세와 가능한 작업을 확인하세요.
Unknown앱에 표시되는 내용
연결이 끊겨 결과가 불명확하면 재제출 전에 Scheduled Posts와 Needs Attention을 확인하세요.

관련 안내

안내에는 서버 측 API 예제가 있습니다. 실행 전에 승인된 ID와 API 키를 설정하세요. 페이지 자체는 요청을 보내지 않습니다.

첫 업무 흐름을 시작하세요.

계정을 만들고 Free로 시작하세요.

Free로 시작