# Sociofy M0 詳細手順書

最終更新: 2026-05-26

## 1. 目的

M0は、実装を始める前に開発判断を止める未決定事項をなくし、外部API申請で後戻りしない状態を作るフェーズである。

この手順書では、各ステップを以下の3種類に分類する。

| 区分 | 意味 |
| --- | --- |
| Codex対応可 | Codexがファイル作成、調査、整理、ドラフト作成、静的サイト更新まで実行できる。 |
| Codex支援 + 手作業 | Codexが文案、表、チェックリスト、申請文面を作れるが、最終判断、ログイン、承認、外部画面操作は人間が行う。 |
| 手作業必須 | 認証、MFA、外部アカウント作成、法務承認、SNSアカウント所有確認など、人間または社内担当者が実行する。 |

## 2. M0の完了条件

M0は、以下が揃った時点で完了とする。

- 初期対象プロダクトが1つ決まっている。
- 初期編集切り口が人間により決定されている。SmartScout初期は既存4切り口を採用する。
- MVP対象言語が決まっている。最低対応は英語、スペイン語、韓国語、中国語。
- 初期運用するSNSアカウント候補が、言語別に整理されている。
- TikTok Developer account、Organization、Sandbox appの準備状況が確認されている。
- TikTok申請動画で示すべきUI、products、scopes、ドメインが仮決めされている。
- Instagram/Meta、YouTube/Googleの開発者アカウント準備方針が決まっている。
- Privacy Policy、Terms、問い合わせ先、アプリ名、アプリアイコンの暫定版が用意されている。
- M1で作るモノレポ、AWS、DB、CI/CDの前提が確定している。

## 3. M0成果物

| 成果物 | 保存先/管理先 | 実行区分 | 説明 |
| --- | --- | --- | --- |
| M0 Decision Log | docsまたは社内Wiki | Codex支援 + 手作業 | 決定事項、未決事項、担当、期限を記録する。 |
| Product Brief | docsまたは社内Wiki | Codex支援 + 手作業 | 初期対象プロダクト、価値提案、禁止表現、訴求軸を整理する。 |
| Editorial Angle定義 | docsまたは社内Wiki | Codex支援 + 手作業 | 人間が切り口を作り、Codexは台帳整形と不足項目チェックを支援する。SmartScout初期は既存4切り口を取り込む。 |
| Account Inventory | spreadsheetまたは社内台帳 | 手作業必須 | SNSアカウント、メール、MFA、管理者、復旧手段を管理する。 |
| Developer App Inventory | spreadsheetまたは社内台帳 | 手作業必須 | TikTok、Meta、Googleのapp ID、owner、mode、callback URLを管理する。 |
| Scope Matrix | docsまたは社内Wiki | Codex支援 + 手作業 | SNS別に必要scope、用途、UI上の利用箇所、申請タイミングを整理する。 |
| Policy URL Matrix | docsまたは社内Wiki | Codex支援 + 手作業 | Privacy Policy、Terms、support、data deletion等のURLを整理する。 |
| TikTok Review Video Plan | docsまたは社内Wiki | Codex対応可 | M3/M5で撮る動画の画面順、説明文、映すscopeを定義する。 |
| M0 Go/No-Go checklist | docsまたは社内Wiki | Codex対応可 | M1へ進む前の確認リスト。 |

## 4. 推奨実行順

### M0-01: キックオフと責任者決定

| 項目 | 内容 |
| --- | --- |
| 実行区分 | 手作業必須 |
| 主担当 | Product owner |
| Codexの役割 | 議事録テンプレート、決定ログ、チェックリストを作成する。 |

手順:

1. M0の責任者を1名決める。
2. SNSアカウント担当、法務/ポリシー担当、開発代表、デザイン担当を決める。
3. M0 Decision Logの置き場所を決める。
4. M0完了予定日を決める。目安は1週間。

完了条件:

- M0責任者と各担当が明記されている。
- 未決事項の管理場所が決まっている。

### M0-02: 初期対象プロダクトの決定

| 項目 | 内容 |
| --- | --- |
| 実行区分 | Codex支援 + 手作業 |
| 主担当 | Product owner |
| Codexの役割 | Product Brief、訴求軸、禁止表現候補を整理する。切り口の新規提案は行わない。 |

手順:

1. 初期対象プロダクトを1つ選ぶ。
2. プロダクトURL、LP、既存資料、ターゲット顧客、競合、強み、避けたい表現をまとめる。
3. CodexにProduct Briefの整理を依頼する。
4. 分析結果からMVPで扱う価値提案を3-5個に絞る。

Codex依頼例:

```text
Sociofyの初期対象として以下のプロダクトを分析して。
ターゲット、主要価値、避けるべき表現、SNS投稿で使える訴求軸を整理して。
編集切り口は人間が別途定義するため、新規の切り口提案はしないで。
```

完了条件:

- 初期対象プロダクトが1つに固定されている。
- Codexがプロダクト分析に使える情報が揃っている。

### M0-03: 人間による編集切り口の仮決定

| 項目 | 内容 |
| --- | --- |
| 実行区分 | 手作業必須 |
| 主担当 | Product owner / Social ops |
| Codexの役割 | 人間が作った切り口定義の台帳整形、不足項目チェック、表記ゆれ整理を支援する。 |

手順:

1. Product owner / Social opsが、人間の判断でMVPに使う編集切り口を作る。SmartScout初期は既存4切り口を採用する。
2. 各切り口について、対象読者、投稿トーン、避ける話題、主なCTAを整理する。
3. Codexに、切り口の不足項目、重複、表記ゆれをチェックさせる。
4. 人間が最終確認し、MVP対象として確定する。
5. 選ばなかった切り口はバックログに残す。

完了条件:

- MVP対象の切り口が人間により仮決定している。SmartScout初期は4切り口。
- それぞれの切り口に対象読者と投稿トーンがある。

### M0-04: 言語とアカウント設計の確定

| 項目 | 内容 |
| --- | --- |
| 実行区分 | Codex支援 + 手作業 |
| 主担当 | Social ops |
| Codexの役割 | 言語別アカウント命名案、プロフィール文、投稿トーンを提案する。 |

手順:

1. MVP対象言語を確定する。最低対応は英語、スペイン語、韓国語、中国語。
2. 言語ごとに別アカウント運用する前提を確認する。
3. SmartScout初期は4切り口 x 4 active locale = 16 logical feedsをMVPの基準にする。切り口数と言語数はプロダクトごとに変更可能にする。
4. SmartScoutの中国語初期運用は繁体字 `zh-Hant` にし、簡体字 `zh-Hans` はcandidateとして残す。
5. 各logical feedにアカウント名候補、プロフィール文、表示言語、担当者を割り当てる。

完了条件:

- SmartScout初期16 logical feedsの台帳がある。
- 各feedに言語、切り口、想定アカウント名、担当者がある。

### M0-05: SNS内部検証アカウントの準備

| 項目 | 内容 |
| --- | --- |
| 実行区分 | 手作業必須 |
| 主担当 | Social ops |
| Codexの役割 | アカウント台帳テンプレート、命名案、プロフィール文を作る。 |

手順:

1. TikTok、Instagram、YouTubeの内部検証用アカウントを用意する。
2. 各アカウントの所有メール、MFA、復旧方法、管理者を台帳に記録する。
3. Instagramはprofessional accountとFacebook Pageの紐づけが必要なため、対象PageとBusiness設定を確認する。
4. YouTubeは投稿先channelとGoogle accountの管理者を確認する。
5. SNSアカウント作成やログイン情報はCodexに入力しない。

完了条件:

- 内部検証用アカウントに人間がログインできる。
- 管理者、復旧手段、MFAが台帳化されている。

### M0-06: TikTok Developer account / Organization / Sandbox appの準備

| 項目 | 内容 |
| --- | --- |
| 実行区分 | 手作業必須 |
| 主担当 | Engineering lead / Social ops |
| Codexの役割 | 入力文面、scope説明、チェックリスト、動画計画を作る。 |

手順:

1. TikTok developer accountを作成する。
2. 可能であれば会社/チームのOrganizationを作成または参加する。
3. TikTok Developer PortalでSociofy用appを作る。
4. Sandbox modeを有効にし、M3/M5で使う検証導線を準備する。
5. Content Posting API productを追加する。
6. Direct Post configurationを有効にする。
7. Photo Mode前提でも、TikTok Content Posting APIのDirect Postでは `video.publish` scopeの承認とユーザー認可が必要になる前提でscope matrixに記録する。
8. Web URL、Privacy Policy URL、Terms URL、Content Posting APIで利用するmedia URL prefix/domainの検証要否を記録する。
9. App ID、Client key、Client secretはSecrets Managerへ入れる前提で、台帳にはsecret本体を書かない。

注意点:

- TikTok公式資料では、Sandboxは審査前に統合を試すための制限環境として説明されている。
- 初回App ReviewではSandbox環境で統合を示す必要がある。
- App Reviewでは、最新のend-to-end flowを示す動画が少なくとも1本必要で、最大5本、各50MBまで。
- 選択したproducts/scopesは動画内で明確に示す必要がある。不要なscopeは申請前に外す。
- Web appの場合、デモ動画に映るドメインと申請時のwebsite URLを一致させる。

完了条件:

- TikTok Developer PortalにSociofy用appがある。
- Sandbox appでContent Posting APIを試せる準備がある。
- 申請予定product/scopeがM0時点で仮決定している。

### M0-07: Meta / Instagram開発者準備

| 項目 | 内容 |
| --- | --- |
| 実行区分 | 手作業必須 |
| 主担当 | Engineering lead / Social ops |
| Codexの役割 | 必要権限候補、App Review説明文、テスト手順を整理する。 |

手順:

1. Meta for Developersの管理者を決める。
2. Meta appを作るか、既存appを使うかを決める。
3. Instagram professional accountとFacebook Pageの紐づきを確認する。
4. MVPで必要な権限候補をscope matrixに記録する。
5. Instagram Carousel/Reelsの投稿に必要なmedia URL、Page role、Business設定を確認する。
6. M0ではproduction App Review提出までは必須にしない。内部検証に必要なapp role/test userで進める。

MVPで想定する権限候補:

- `instagram_basic`
- `instagram_content_publish`
- `pages_read_engagement`
- 必要に応じて `pages_show_list`

完了条件:

- Instagram投稿検証に使うprofessional accountとFacebook Pageが決まっている。
- Meta appの管理者と検証方法が決まっている。

### M0-08: Google / YouTube開発者準備

| 項目 | 内容 |
| --- | --- |
| 実行区分 | 手作業必須 |
| 主担当 | Engineering lead / Social ops |
| Codexの役割 | OAuth consent文面、scope説明、監査リスク整理を作る。 |

手順:

1. Google Cloud projectを作るか、既存projectを使うか決める。
2. YouTube Data API v3を有効化する。
3. OAuth consent screenのapp name、support email、developer contact、Privacy Policy URL、Terms URLを準備する。
4. OAuth clientはserver-side web app前提で準備する。
5. `https://www.googleapis.com/auth/youtube.upload` をscope候補に入れる。
6. YouTube Data APIはservice account flowを使えないため、人間が管理するYouTube channelのOAuth認可を前提にする。
7. 2020-07-28以降に作成された未検証API projectでは、`videos.insert` でアップロードした動画がprivateに制限される点を記録する。公開投稿を本格化する前にYouTube API Services auditが必要になる。

完了条件:

- YouTube投稿検証に使うGoogle account/channelが決まっている。
- OAuth consentとOAuth clientの準備方針が決まっている。

### M0-09: Policy URLと公開ページの準備

| 項目 | 内容 |
| --- | --- |
| 実行区分 | Codex支援 + 手作業 |
| 主担当 | Legal / Product owner |
| Codexの役割 | Privacy Policy、Terms、support、data deletion文面の初稿を作る。 |

手順:

1. Sociofyのofficial website URLを決める。
2. Privacy Policy、Terms、support/contact、data deletion requestのURLを用意する。
3. Codexに暫定文面を作らせる。
4. 法務または責任者がレビューする。
5. TikTok/Google/Metaの開発者設定に入力するURLと、実際に公開されるURLが一致していることを確認する。

完了条件:

- Privacy Policy URLとTerms URLが外部からアクセスできる。
- 内容がSociofyの実際のデータ利用、AI生成、SNS投稿、OAuth token管理に合っている。

### M0-10: アプリ名、説明文、アイコンの準備

| 項目 | 内容 |
| --- | --- |
| 実行区分 | Codex支援 + 手作業 |
| 主担当 | Product owner / Design |
| Codexの役割 | アプリ説明文、ストア/審査用説明文、アイコン要件チェックを作る。 |

手順:

1. App nameを決める。初期案は `Sociofy`。
2. App descriptionを100-300文字程度で作る。
3. TikTok認可画面などに出る説明文として、誤解がないか確認する。
4. App iconを作る。TikTokでは1024 x 1024 px、JPEG/JPG/PNG、5MB以下の要件がある。
5. 生成AIでアイコンを作る場合も、人間がブランド確認し、商標や既存ブランドとの混同がないか確認する。

完了条件:

- app name、description、iconが用意されている。
- 各Developer Portalに登録できる形式になっている。

### M0-11: Scope Matrixの作成

| 項目 | 内容 |
| --- | --- |
| 実行区分 | Codex対応可 |
| 主担当 | Engineering lead |
| Codexの役割 | scope matrixを作成し、申請scopeとUI上の利用箇所を対応づける。 |

最小テンプレート:

| Platform | Product/API | Scope/Permission | MVPで使う理由 | UIで見せる場所 | M0判断 |
| --- | --- | --- | --- | --- | --- |
| TikTok | Content Posting API Direct Post | `video.publish` | Photo Mode Direct Postに必要 | TikTok接続、投稿確認、PublishJob | M5申請対象 |
| Instagram | Instagram Graph API | `instagram_content_publish` | Carousel/Reels投稿 | Instagram投稿設定、承認画面 | M6検証対象 |
| Instagram | Instagram Graph API | `instagram_basic` | IG professional account識別 | account connection | M6検証対象 |
| Instagram | Instagram Graph API | `pages_read_engagement` | Page/IG連携確認 | account readiness | M6検証対象 |
| YouTube | YouTube Data API | `youtube.upload` | Shorts MP4アップロード | YouTube投稿設定 | M6検証対象 |

完了条件:

- 申請予定scopeが「使う画面」と紐づいている。
- 使わないscopeが申請候補に入っていない。

### M0-12: TikTok申請動画の構成仮決め

| 項目 | 内容 |
| --- | --- |
| 実行区分 | Codex対応可 |
| 主担当 | Engineering lead / Product owner |
| Codexの役割 | M3/M5で撮影する動画の台本と画面順を作る。 |

推奨構成:

1. SociofyのWeb appを開く。
2. ログインする。
3. Productを選択する。
4. ContentPackageを作る。
5. 4枚のAI生成画像 + 固定CTA画像を確認する。
6. TikTok Photo Modeを選択する。
7. caption、AI生成/ブランド投稿ラベル、公開設定を確認する。
8. TikTok OAuth接続と必要scopeを確認する。
9. Human approvalを実行する。
10. PublishJobを作成し、Sandboxで `content/init` を実行する。
11. PublishJob statusとplatform responseを確認する。

完了条件:

- M3で作るべきUIが動画構成から逆算できている。
- 動画に映すscopeと申請内容が一致している。

### M0-13: M1着手前Go/No-Go

| 項目 | 内容 |
| --- | --- |
| 実行区分 | 手作業必須 |
| 主担当 | Product owner |
| Codexの役割 | Go/No-Go checklistを作り、未決事項を一覧化する。 |

Go条件:

- 初期product、4切り口、4 active locale、16 logical feedsが決まっている。
- SNS検証アカウントの作成担当と期限が決まっている。
- TikTok app/Sandboxの作成担当と期限が決まっている。
- Policy URLsの公開担当と期限が決まっている。
- Scope Matrixが作成済み。
- M3/M5のTikTok申請動画で必要な画面一覧が決まっている。
- M1で作るモノレポ構成が確定している。

No-Go条件:

- 初期productが決まっていない。
- SNSアカウント管理者が不明。
- TikTok Developer Portalの責任者が不明。
- Privacy Policy/Termsの公開見込みがない。
- 申請scopeがUIや実装予定と結びついていない。

## 5. Codexで対応できる作業一覧

| 作業 | Codex対応 |
| --- | --- |
| M0 Decision Logテンプレート作成 | 対応可 |
| Product Brief整理 | 対応可 |
| 人間が作った切り口定義の台帳整形、不足項目チェック | 支援可 |
| アカウント名候補とプロフィール文作成 | 対応可 |
| Scope Matrix作成 | 対応可 |
| TikTok申請動画の台本作成 | 対応可 |
| Privacy Policy / Terms初稿作成 | 支援可 |
| App Review説明文作成 | 支援可 |
| Cloudflare Pagesへのドキュメント反映 | 対応可 |
| TikTok/Meta/Googleへのログイン | 手作業必須 |
| Developer app作成、MFA、OAuth secret取得 | 手作業必須 |
| SNSアカウント作成、電話番号認証、MFA設定 | 手作業必須 |
| 法務承認、最終公開判断 | 手作業必須 |

## 6. M0 Decision Logテンプレート

| ID | 論点 | 決定内容 | 担当 | 期限 | 状態 |
| --- | --- | --- | --- | --- | --- |
| D-001 | 初期対象product |  | Product owner |  | Open |
| D-002 | MVP対象言語 | SmartScout初期は en-US, es-US, ko-KR, zh-Hant。zh-Hansはcandidate | Product owner |  | Draft |
| D-003 | 編集切り口 |  | Social ops |  | Open |
| D-004 | TikTok Developer owner |  | Engineering lead |  | Open |
| D-005 | Privacy Policy / Terms URL |  | Legal |  | Open |
| D-006 | TikTok申請scope | `video.publish`予定 | Engineering lead |  | Draft |
| D-007 | M1モノレポ構成 | apps/web, apps/api, apps/worker, packages/shared, packages/ui, packages/config | Engineering lead |  | Draft |

## 7. Account Inventoryテンプレート

| Platform | Language | Angle | Account handle | Owner | Email owner | MFA status | Recovery owner | Status |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| TikTok | en |  |  |  |  | 未設定 |  | Draft |
| Instagram | en |  |  |  |  | 未設定 |  | Draft |
| YouTube | en |  |  |  |  | 未設定 |  | Draft |

注意:

- パスワード、refresh token、client secretはこの台帳に書かない。
- secret類はAWS Secrets Managerへ入れる前提にする。
- CodexにsecretやMFA codeを入力しない。

## 8. 参照資料

公式資料確認日: 2026-05-26

- TikTok Register Your App: https://developers.tiktok.com/doc/getting-started-create-an-app
- TikTok App Review Guidelines: https://developers.tiktok.com/doc/app-review-guidelines
- TikTok Developer Guidelines: https://developers.tiktok.com/doc/our-guidelines-developer-guidelines/
- TikTok Content Posting API Get Started: https://developers.tiktok.com/doc/content-posting-api-get-started/
- Instagram Content Publishing: https://developers.facebook.com/docs/instagram-platform/content-publishing/
- Instagram IG User Media: https://developers.facebook.com/docs/instagram-platform/instagram-graph-api/reference/ig-user/media
- YouTube Data API videos.insert: https://developers.google.com/youtube/v3/docs/videos/insert
- YouTube OAuth guide: https://developers.google.com/youtube/v3/guides/authentication
- Google OAuth 2.0 scopes: https://developers.google.com/identity/protocols/oauth2/scopes
