{
  "@context": "https://schema.org",
  "@type": "DataCatalog",
  "@id": "https://ig-harness.jp/research/catalog.json#catalog",
  "name": "IG Harness技術研究カタログ",
  "url": "https://ig-harness.jp/research/",
  "publisher": {
    "@type": "Organization",
    "name": "AIエージェント株式会社",
    "url": "https://aiagent-inc.com/"
  },
  "generatedAt": "2026-08-19T11:17:46.972Z",
  "dataset": [
    {
      "@type": "Dataset",
      "identifier": "ig:webhook-signature-byte-boundary",
      "name": "Instagram Webhook署名はraw bodyで検証する――JSON再生成との境界",
      "description": "IG HarnessのWebhook署名テストから、受信byte列、JSON parse、イベント処理の順序を読み解きます。",
      "url": "https://ig-harness.jp/articles/webhook-signature-byte-boundary/",
      "datePublished": "2026-08-19",
      "dateModified": "2026-08-19",
      "evidenceType": "公開コードに基づく一次資料分析",
      "disclosure": "本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。",
      "isBasedOn": [
        {
          "label": "ig-harness-oss: apps/worker/src/routes/webhook.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/webhook.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/routes/__tests__/webhook-signature.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/__tests__/webhook-signature.test.ts"
        },
        {
          "label": "ig-harness-oss: packages/ig-sdk/src/webhook.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/ig-sdk/src/webhook.ts"
        },
        {
          "label": "ig-harness-oss: packages/ig-sdk/src/webhook.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/ig-sdk/src/webhook.test.ts"
        },
        {
          "label": "IG Harness 取得時刻付きGit分析",
          "url": "https://ig-harness.jp/git/"
        }
      ]
    },
    {
      "@type": "Dataset",
      "identifier": "ig:token-lifecycle-health-probe",
      "name": "Instagram tokenの寿命を監視する――期限・更新・実API probeを分離する",
      "description": "IG token state、health集計、account単位の生存確認をコードとmigrationから整理します。",
      "url": "https://ig-harness.jp/articles/token-lifecycle-health-probe/",
      "datePublished": "2026-08-19",
      "dateModified": "2026-08-19",
      "evidenceType": "公開コードに基づく一次資料分析",
      "disclosure": "本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。",
      "isBasedOn": [
        {
          "label": "ig-harness-oss: apps/worker/src/lib/ig-token.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/lib/ig-token.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/lib/health.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/lib/health.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/routes/health.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/health.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/routes/__tests__/health-aggregate.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/__tests__/health-aggregate.test.ts"
        },
        {
          "label": "ig-harness-oss: packages/db/migrations/0003_ig_token_state.sql",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/migrations/0003_ig_token_state.sql"
        },
        {
          "label": "IG Harness 取得時刻付きGit分析",
          "url": "https://ig-harness.jp/git/"
        }
      ]
    },
    {
      "@type": "Dataset",
      "identifier": "ig:engagement-gate-state-transitions",
      "name": "Instagram engagement gateの状態遷移――コメントからDMまでの分母を固定する",
      "description": "対象投稿、match条件、フォロー確認、DM、再参加を一つの成功率へ混ぜずに測定します。",
      "url": "https://ig-harness.jp/articles/engagement-gate-state-transitions/",
      "datePublished": "2026-08-19",
      "dateModified": "2026-08-19",
      "evidenceType": "公開コードに基づく一次資料分析",
      "disclosure": "本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。",
      "isBasedOn": [
        {
          "label": "ig-harness-oss: apps/worker/src/routes/engagement-gates.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/engagement-gates.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/services/engagement-gate.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/services/engagement-gate.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/services/__tests__/engagement-gate.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/services/__tests__/engagement-gate.test.ts"
        },
        {
          "label": "ig-harness-oss: packages/db/src/engagement-gates.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/src/engagement-gates.ts"
        },
        {
          "label": "ig-harness-oss: packages/db/migrations/0013_gate_allow_repeat.sql",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/migrations/0013_gate_allow_repeat.sql"
        },
        {
          "label": "IG Harness 取得時刻付きGit分析",
          "url": "https://ig-harness.jp/git/"
        }
      ]
    },
    {
      "@type": "Dataset",
      "identifier": "ig:followup-drip-scheduling",
      "name": "DM follow-up dripの時間設計――初回反応・遅延・停止条件を検証する",
      "description": "IG Harnessのfollow-up DMを、登録、実行予定、送信、停止、再試行という時系列で検証します。",
      "url": "https://ig-harness.jp/articles/followup-drip-scheduling/",
      "datePublished": "2026-08-19",
      "dateModified": "2026-08-19",
      "evidenceType": "公開コードに基づく一次資料分析",
      "disclosure": "本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。",
      "isBasedOn": [
        {
          "label": "ig-harness-oss: apps/worker/src/services/engagement-gate.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/services/engagement-gate.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/services/__tests__/followup-drip.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/services/__tests__/followup-drip.test.ts"
        },
        {
          "label": "ig-harness-oss: packages/db/migrations/0008_gate_followup_dm.sql",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/migrations/0008_gate_followup_dm.sql"
        },
        {
          "label": "ig-harness-oss: packages/db/src/messages-log.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/src/messages-log.ts"
        },
        {
          "label": "IG Harness 取得時刻付きGit分析",
          "url": "https://ig-harness.jp/git/"
        }
      ]
    },
    {
      "@type": "Dataset",
      "identifier": "ig:comment-rule-match-semantics",
      "name": "コメント条件一致の意味論――完全一致・任意コメント・対象投稿を分ける",
      "description": "コメント自動化で文字列一致だけを見ず、対象投稿、match type、重複、返信文を含む判定順序を整理します。",
      "url": "https://ig-harness.jp/articles/comment-rule-match-semantics/",
      "datePublished": "2026-08-19",
      "dateModified": "2026-08-19",
      "evidenceType": "公開コードに基づく一次資料分析",
      "disclosure": "本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。",
      "isBasedOn": [
        {
          "label": "ig-harness-oss: apps/worker/src/routes/comment-rules.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/comment-rules.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/services/engagement-gate.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/services/engagement-gate.ts"
        },
        {
          "label": "ig-harness-oss: packages/db/migrations/0005_any_comment_match_type.sql",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/migrations/0005_any_comment_match_type.sql"
        },
        {
          "label": "ig-harness-oss: packages/db/migrations/0006_comment_reply_text.sql",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/migrations/0006_comment_reply_text.sql"
        },
        {
          "label": "IG Harness 取得時刻付きGit分析",
          "url": "https://ig-harness.jp/git/"
        }
      ]
    },
    {
      "@type": "Dataset",
      "identifier": "ig:tracked-link-attribution-chain",
      "name": "Instagram DMからリンククリックまで――tracked link帰属の検証鎖",
      "description": "DM送信、短縮URL、redirect、click保存を一つのコンバージョンと誤認せず段階別に測ります。",
      "url": "https://ig-harness.jp/articles/tracked-link-attribution-chain/",
      "datePublished": "2026-08-19",
      "dateModified": "2026-08-19",
      "evidenceType": "公開コードに基づく一次資料分析",
      "disclosure": "本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。",
      "isBasedOn": [
        {
          "label": "ig-harness-oss: apps/worker/src/routes/tracked-links.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/tracked-links.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/routes/tracked-links.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/tracked-links.test.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/routes/__tests__/click-redirect.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/__tests__/click-redirect.test.ts"
        },
        {
          "label": "ig-harness-oss: packages/db/src/tracked-links.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/src/tracked-links.ts"
        },
        {
          "label": "ig-harness-oss: packages/db/migrations/0009_gate_clicks.sql",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/migrations/0009_gate_clicks.sql"
        },
        {
          "label": "IG Harness 取得時刻付きGit分析",
          "url": "https://ig-harness.jp/git/"
        }
      ]
    },
    {
      "@type": "Dataset",
      "identifier": "ig:line-cross-link-identity",
      "name": "IGからL Harnessへ同一人物をつなぐ――UUID cross-linkの境界",
      "description": "Instagram利用者とLINE友だちを、直接ID共有ではなく一時的なcross-link経路で関連付ける設計を検証します。",
      "url": "https://ig-harness.jp/articles/line-cross-link-identity/",
      "datePublished": "2026-08-19",
      "dateModified": "2026-08-19",
      "evidenceType": "公開コードに基づく一次資料分析",
      "disclosure": "本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。",
      "isBasedOn": [
        {
          "label": "ig-harness-oss: apps/worker/src/routes/cross-link.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/cross-link.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/services/cross-link.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/services/cross-link.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/services/line-cross-link.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/services/line-cross-link.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/services/__tests__/line-cross-link.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/services/__tests__/line-cross-link.test.ts"
        },
        {
          "label": "ig-harness-oss: packages/db/migrations/0011_line_harness_connections.sql",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/migrations/0011_line_harness_connections.sql"
        },
        {
          "label": "IG Harness 取得時刻付きGit分析",
          "url": "https://ig-harness.jp/git/"
        }
      ]
    },
    {
      "@type": "Dataset",
      "identifier": "ig:media-publish-r2-range",
      "name": "Instagramメディア公開の二段階処理――R2保存・Range配信・publish状態",
      "description": "画像・動画をR2へ保存してからInstagramへ公開する経路を、validation、Range、publish状態に分解します。",
      "url": "https://ig-harness.jp/articles/media-publish-r2-range/",
      "datePublished": "2026-08-19",
      "dateModified": "2026-08-19",
      "evidenceType": "公開コードに基づく一次資料分析",
      "disclosure": "本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。",
      "isBasedOn": [
        {
          "label": "ig-harness-oss: apps/worker/src/routes/media-posts.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/media-posts.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/services/media-publish.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/services/media-publish.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/routes/__tests__/media-posts-validation.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/__tests__/media-posts-validation.test.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/routes/__tests__/images-range.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/__tests__/images-range.test.ts"
        },
        {
          "label": "ig-harness-oss: packages/db/migrations/0017_media_posts.sql",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/migrations/0017_media_posts.sql"
        },
        {
          "label": "IG Harness 取得時刻付きGit分析",
          "url": "https://ig-harness.jp/git/"
        }
      ]
    },
    {
      "@type": "Dataset",
      "identifier": "ig:multi-account-index-design",
      "name": "Instagram複数アカウント対応のindex設計――account scopeと検索コスト",
      "description": "ig_accounts追加とaccount index migrationから、既存データを複数アカウントへ分離した変更を読みます。",
      "url": "https://ig-harness.jp/articles/multi-account-index-design/",
      "datePublished": "2026-08-19",
      "dateModified": "2026-08-19",
      "evidenceType": "公開コードに基づく一次資料分析",
      "disclosure": "本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。",
      "isBasedOn": [
        {
          "label": "ig-harness-oss: packages/db/migrations/0014_ig_accounts.sql",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/migrations/0014_ig_accounts.sql"
        },
        {
          "label": "ig-harness-oss: packages/db/migrations/0015_account_indexes.sql",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/packages/db/migrations/0015_account_indexes.sql"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/lib/accounts.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/lib/accounts.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/routes/__tests__/accounts-authz.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/__tests__/accounts-authz.test.ts"
        },
        {
          "label": "IG Harness 取得時刻付きGit分析",
          "url": "https://ig-harness.jp/git/"
        }
      ]
    },
    {
      "@type": "Dataset",
      "identifier": "ig:role-and-rate-limit-boundary",
      "name": "IG Harness管理操作の権限境界――role guardとrate limitを別々に試験する",
      "description": "account認可、staff role、rate limitを分け、正しい認証情報でも拒否すべき操作を整理します。",
      "url": "https://ig-harness.jp/articles/role-and-rate-limit-boundary/",
      "datePublished": "2026-08-19",
      "dateModified": "2026-08-19",
      "evidenceType": "公開コードに基づく一次資料分析",
      "disclosure": "本稿はIG Harnessの開発元が、公開リポジトリの固定コミットを一次資料として分析した技術研究ノートです。第三者による独立評価ではありません。",
      "isBasedOn": [
        {
          "label": "ig-harness-oss: apps/worker/src/middleware/auth.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/middleware/auth.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/middleware/role-guard.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/middleware/role-guard.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/middleware/rate-limit.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/middleware/rate-limit.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/routes/__tests__/friends-authz.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/__tests__/friends-authz.test.ts"
        },
        {
          "label": "ig-harness-oss: apps/worker/src/routes/__tests__/tracked-links-authz.test.ts",
          "url": "https://github.com/Shudesu/ig-harness-oss/blob/0f8ac2a69d4f9359acb41e8989654885b47a86fd/apps/worker/src/routes/__tests__/tracked-links-authz.test.ts"
        },
        {
          "label": "IG Harness 取得時刻付きGit分析",
          "url": "https://ig-harness.jp/git/"
        }
      ]
    }
  ]
}
