本文へスキップ

テクニカルドキュメント

Threadaの仕組み、要件、統合方法。

アーキテクチャ概要

  • クロール — サイトマップと内部リンクに従ってドメインのページを取得
  • レンダリング — 抽出前にJavaScriptの多いページをレンダリング
  • 抽出 — 構造化データを含むコンテンツを抽出
  • 分割 — コンテンツを意味単位で分割
  • 埋め込み — 分割した内容をベクトル埋め込みに変換
  • インデックス — 検索のために埋め込みを保存
  • 検索 — 意味的類似性で関連チャンクを取得
  • 生成 — 取得した内容から回答を生成
  • 引用 — 関連内容があれば出典ページにリンク

クロール

クロール対象

  • サイトマップまたは内部リンクのHTMLページ
  • 構造化データ(JSON‑LD、schema.org)
  • 手動アップロード文書(PDF、HTML、DOCX)

クロールの挙動

  • robots.txtを尊重
  • User‑Agentを識別
  • サーバー負荷を避けるためレート制限
  • 429または5xxでバックオフ

JavaScriptレンダリング — SPAや動的コンテンツは抽出前にヘッドレスブラウザでレンダリングします。

再インデックス

  • サイトマップ監視で自動再インデックス
  • 手動再インデックスはいつでも可能
  • プランに応じたスケジュール再インデックス

検索

セマンティック検索 クエリは埋め込みに変換され、キーワードではなく意味の近さで一致します。

関連度しきい値 設定可能。高いほど回答は少ないが自信が高く、低いほど広くカバーして確認質問が増えます。

回答生成

取得したコンテンツをコンテキストとしてモデルに渡し、回答はそのコンテキストのみから生成されます。

出典引用 — 関連コンテンツが見つかると、回答に出典ページへのリンクを含みます。不確実性を認める場合、リンクできる出典がないため引用がないことがあります。

境界での挙動

  • 知らないことを認める
  • 確認質問をする
  • 関連トピックを提案する

埋め込み統合

インストール スクリプトスニペット1つ。非同期で読み込み。

対応

  • WordPress
  • Webflow
  • Shopify
  • Squarespace
  • カスタム構築
  • SPA(React、Vue、Angular)

ダッシュボード設定

  • 色、ロゴ、配置
  • 歓迎メッセージ、トーン
  • 言語設定
  • 関連度しきい値

公開API

チケットとアクションをチャネル横断で操作できる、テナント単位の安全なAPIアクセス。

認証とアクセス

  • `X-Api-Key` ヘッダーでAPIキーを送信します。
  • Admin → API keys でキーを作成/失効し、統合ごとに1つ使用します。
  • キーはテナント単位で、スコープによる最小権限を適用します。

スコープ

  • `support.read` — チケット、メッセージ、アクションの一覧/取得。
  • `support.write` — チケットの作成/更新とメッセージ追加。
  • `support.actions` — アクションの実行と状態確認。

主要エンドポイント

  • `/api/v1/public/tickets` — チケットの一覧/作成。
  • `/api/v1/public/tickets/{ticket_id}` — チケット詳細の取得/更新。
  • `/api/v1/public/tickets/{ticket_id}/messages` — メッセージの一覧/追加。
  • `/api/v1/public/tickets/{ticket_id}/actions` — チケットのアクションを実行。
  • `/api/v1/public/actions` — アクションの一覧/状態取得。

レスポンス形式

  • JSONレスポンス。タイムスタンプはRFC 3339。
  • エラーは `{ error: { type, message, code } }` を返します。
  • 一覧エンドポイントは `limit` と `page_token` を受け付けます。

チャネル値

  • `web`, `email`, `sms`, `whatsapp`, `social`, `voice`, `custom`.
  • 外部会話の対応付けに `channel_id` と `channel_thread_id` を使用します。
  • メッセージ書き込みの重複排除に `external_message_id` を使用します。

Zapier セットアップ

Zapier と接続して、制御された範囲でノーコード自動化を実現します。

送信自動化(Threada → Zapier)

  • Webhooks by Zapier の “Catch Hook” トリガーでZapを作成し、hook URLをコピーします。
  • Admin → Support → Integrations で、Webhook URLと任意のシークレットヘッダーを設定したZapier統合を追加します。
  • Custom HTTPアクションでペイロードを送信します。Custom HTTP統合が未選択の場合、既定でZapierが使用されます。

受信自動化(Zapier → Threada)

  • Zapier用のスコープ付きAPIキーを作成(最小権限)。
  • Webhooks by Zapier から公開APIのチケット/アクションエンドポイントを呼び出します。
  • キーはZapier内で安全に保管し、定期的にローテーションします。

エンタープライズ運用

  • 環境ごとにキーを分離(本番/サンドボックス)。
  • Zapを無効化、または所有者が変わったらキーを失効します。
  • 書き込みが必要な場合を除き、読み取り専用スコープを優先します。

セキュリティ

ホスティング:GCP(既定はUS‑Central1)。暗号化:通信TLS 1.2+、保存AES‑256。認証:EnterpriseでOIDC/SAMLのSSO。コンプライアンス:GDPR準拠、保持期間設定、監査ログ。脅威モデルはprompt injection、XSS、SSRF、データ流出をカバー。

データ取り扱い

保存されるもの

  • インデックス済みコンテンツ
  • 埋め込みベクトル
  • チャットログ
  • 分析
  • 設定

保存しないもの

  • 支払い情報(決済事業者が処理)
  • 平文の認証情報

保持 テナントごとに設定可能。削除要求に対応。

学習 コンテンツはAIモデルの学習には使用されません。

FAQ

パスワード保護ページは?
現在は非対応です。非公開コンテンツはドキュメントをアップロードしてください。
ページを除外できますか?
はい。robots.txtまたはダッシュボード設定で可能です。
更新はどれくらい早い?
自動再インデックスは通常24時間以内。手動は即時です。
クロール中にサイトが落ちたら?
クローラーはバックオフして再試行します。以前のコンテンツは利用可能です。
インデックス済みコンテンツを確認できますか?
はい。ダッシュボードでインデックス済みページと状態を確認できます。
多言語は?
対応しています。自動検出または埋め込みごとの既定言語を設定可能です。
引用がないことがあるのはなぜ?
引用は出典へのリンクです。不確実性を認める場合、リンクできる出典がないため引用がありません。