私隱偏好

必要功能

用於安全驗證及網站基本功能。

一直啟用

Landing 診斷及遮蔽重播

量度公開網站到訪、流失及註冊連結操作,只使用此分頁的匿名識別碼,不連結帳戶。所有文字會遮蔽,表格會封鎖。

選擇性使用分析

是否允許 PostHog 分析網站使用情況?您可隨時在頁尾更新選擇。

另外允許重播此公開網站的操作

選擇性跨網站模式的重播會顯示公開頁面及操作,並遮蔽輸入及私人內容。App 重播須另行選擇。

須先開啟選擇性分析;此跨網站模式的重播預設關閉。上方 Landing 模式獨立運作。

瀏覽器分析選擇不會啟用帳戶分析。

產品開發

把社交發佈加入產品。

以虛構日記產品為例,用戶確認後安排社交帖文,並在產品內查看結果。

您的產品 + SOSOAPI

整合流程示意
  1. 您的產品準備並確認內容
  2. SosoAPI安排一篇已確認的帖文
  3. 社交帳戶跟進發佈結果
整合流程示例。開啟操作詳情,查看 server-side API 請求及回應欄位。

三個步驟

  1. 準備內容

    在您的產品收集文案及圖片。

  2. 由用戶確認

    排程前先顯示帳戶、內容及時間。

  3. 帶回發佈結果

    在產品內顯示進度及最終結果。

讓社交發佈成為您的產品的一部分。

查看操作詳情

情境

為一個虛構的記事產品加入明確、可審閱的「排程此更新」操作。清楚顯示用戶所選工作區及確切帳戶,並呈現回傳狀態,不可暗示平台已發佈。

「把社交發佈加入產品。」的 SosoAPI 示例管理平台畫面。
使用共用的 New Post 編輯介面及虛構資料;畫面未提交任何帖文。

開始前

  • 建立並驗證 SosoAPI 帳戶,再選擇目標工作區。
  • 在 App「設定 → Agents & API Access」建立 API key,並在伺服器環境設為 SOSOAPI_API_KEY。以下 JavaScript 示例使用 Node.js 20+,毋須取得 SosoAPI 原始碼。
  • 只可從目前已授權範圍取得真實工作區 UUID 及 Threads 社交帳戶 UUID,不可推測 ID;該帳戶亦須符合 Threads 文字帖文資格。
  • API key 擁有者須具有目標工作區的編輯者或擁有者權限。Key 只可留在伺服器,不可放入瀏覽器程式碼、請求 JSON 或日誌。

示例輸入

虛構產品
Harborlight Journal · 私人記事應用程式概念;不代表已完成任何真實整合。
用戶意圖
為選定的 Threads 帳戶,在未來本地時間排程一篇已審閱的產品短文。
示例文案
「留一句給稍後的自己:Harborlight Journal 正為每日短短的反思騰出空間。記下一個想法,其他留待明天。」
必須由授權範圍提供
<workspace-uuid> 及 <threads-social-account-uuid>;不可推測 ID。
排程時間
<附時區偏移的未來 ISO-8601 時間>,並把 display_timezone 設為 Asia/Hong_Kong。
重試識別碼
<此使用者意圖專用、唯一且穩定的 idempotency key>;只可在安全重試同一請求時沿用。

操作步驟

  1. 先設計 API 呼叫前的用戶確認

    在 SosoAPI 前往此頁
    • 在 SosoAPI app 選擇目標工作區並檢查已連接帳戶。在產品原型中亦要顯示用戶所選的工作區及帳戶,不可暗中代選。

    • 確認畫面須列出確切文案、帳戶、本地時間及時區。必須由用戶選擇 Schedule 才提交;打開表單不可自動送出。

    預期結果

    用戶能在寫入前查看目的地及時間。虛構產品原型只是設計練習,不代表已有客戶整合。

  2. 由伺服器讀取目前已排程帖文

    • 把 <workspace-uuid> 換成所選工作區 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.
    • 用回傳資料更新產品列表;讀取資料與用戶確認排程分開處理。

    預期結果

    您會收到目前工作區的帖文資料,或授權/驗證錯誤;這個唯讀請求不會建立帖文。

  3. 只有用戶明確確認後才提交

    • 打開 Calendar 並選 New Post,對照 App 中同一操作的審閱步驟。

    • 先替換所有佔位符,填入已授權 ID、附時區偏移的未來 ISO 時間及唯一 idempotency key。執行以下伺服器請求前,先審閱帳戶、文案及時間。

    • 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": "留一句給稍後的自己:Harborlight Journal 正為每日短短的反思騰出空間。記下一個想法,其他留待明天。",
        "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 key 暴露於瀏覽器。

    預期結果

    有效的接納回應會識別新建的 Scheduled Post,但不代表平台已發佈。能力遭拒、範圍/帳戶無效、不支援的負載或排程被拒,都應顯示為錯誤,不可報稱成功。

  4. 呈現回傳狀態,並提供安全跟進方法

    在 SosoAPI 前往此頁
    • 儲存回傳的 Scheduled Post ID,並在產品顯示目前狀態、目的地及排程時間。

    • 連結至相應 Scheduled Post 詳情。如發佈需要人手處理,連結至 Needs Attention 項目,而不是靜默重交。

    • 只有記錄到平台最終確認狀態後,才可把請求標示為已發佈。

    預期結果

    產品須分清請求收據、已排程、發佈中、已發佈、失敗及未知。結果未知時,先核對原有帖文狀態,再考慮新寫入。

從請求回應追蹤至發佈結果。

以下是現有 API 回應的部分欄位,使用示例資料。建立排程後保留 post.id;用同一個 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 等實際狀態。連線中斷並非 published;先讀取同一篇帖文核對。
post.permalink
平台提供的帖文連結;尚無連結時可為 null。上述 URL 僅為示例。
delivery / outcomes
詳情回應提供發佈進度及可用的平台結果。失敗時先檢查詳情及 Needs Attention,再決定下一步。

這些是欄位示例,並非實際發佈紀錄。本頁不會呼叫 API。

各狀態的意思

已提交請求回應
請求已收到。請查看帖文目前狀態,再確認是否已排程或發佈。
已排程帖文詳情
Scheduled Post 已接受並安排於未來時間處理;等候期間應保留目的地及排程時間。
發佈中帖文詳情
發佈流程正在進行。請等候最終結果;處理中不等於成功。
已發佈帖文詳情
只有 SosoAPI 記錄社交平台的最終確認後,才可使用此狀態。
失敗帖文詳情
最終結果為失敗時,先查看帖文詳情及可用操作,再決定如何修正或重試。
未知應用程式顯示
如連線中斷而未能確認結果,請先查看「已排程帖文」及「需要處理」,再決定是否重交。

相關指南

操作詳情包含伺服器端 API 示例。執行前請填入已授權的 ID 及 API key;本頁不會執行請求。

開始您的第一個工作流程。

建立帳戶,免費開始使用。

免費開始使用