# Sociofy M0-04 SmartScout LogicalFeed and Language Matrix

最終更新: 2026-05-26

## 1. M0-04 決定

| 論点 | 決定 |
| --- | --- |
| 初期product | SmartScout |
| 初期EditorialAngle | 既存運用の4切り口: Baseball Data Lover, Pitch Shape Lab, Cage Receipts, Travel Ball Receipts |
| 初期運用locale | `en-US`, `es-US`, `ko-KR`, `zh-Hant` |
| 中国語の初期運用 | SmartScoutは繁体字 `zh-Hant` を中国語の初期運用デフォルトにする |
| 簡体字の扱い | 簡体字 `zh-Hans` は追加候補として残す。初期active feedには含めない |
| 言語数の扱い | AI翻訳/ローカライズ自体はボトルネックにしない。言語数は固定上限ではなく、アカウント作成、承認、投稿先準備、品質確認、運用分析の準備状態でactive化する |
| 公開docsに置く情報 | Product, Angle, Locale, LogicalFeed ID, 既存公開handle, account作成状態 |
| private台帳に置く情報 | 未作成handle候補、ログインメール、MFA、復旧情報、OAuth token、投稿権限、管理者 |

## 2. Locale方針

SmartScout初期運用では、既存TikTok生成プロジェクトに合わせて4 localeをactiveにする。

| Locale | Folder | Language | Script | Status | 方針 |
| --- | --- | --- | --- | --- | --- |
| `en-US` | `en` | English | Latin | Active | US baseball audience向けのsource story |
| `es-US` | `es` | Spanish | Latin | Active | US/Latin American Spanish-speaking baseball audience向け。Spain-only idiomは避ける |
| `ko-KR` | `ko` | Korean | Hangul | Active | 韓国野球の自然な表現。速度/打球速度はhuman-facing copyではkm/h |
| `zh-Hant` | `zh-hant` | Traditional Chinese | Traditional Chinese | Active | SmartScoutの中国語初期運用デフォルト。繁体字のみを使い、簡体字は混ぜない |
| `zh-Hans` | `zh-hans` | Simplified Chinese | Simplified Chinese | Candidate | 追加候補として保持。必要になったら同じsource storyからAI翻訳で生成し、別LogicalFeedとしてactive化する |

設計ルール:

- `language` と `locale` と `script` を分けて保存する。
- `zh-Hant` と `zh-Hans` は同じ「中国語」ではなく、別locale/別scriptとして扱う。
- Productごとに中国語デフォルトを選べるようにする。SmartScoutは `zh-Hant` をデフォルトにする。
- `zh-Hans` はUI上で選択肢として残すが、SmartScout初期の投稿対象には含めない。
- AI翻訳後も、野球用語、単位、禁止表現、CTA、ハッシュタグはlocaleごとのvalidationを通す。

## 3. Active LogicalFeeds

SmartScout初期は4 angles x 4 active locales = 16 logical feedsをMVP基準にする。

| LogicalFeed ID | Angle | Locale | Display name | TikTok account status | Public TikTok handle |
| --- | --- | --- | --- | --- | --- |
| `smartscout.baseball_data_lover.en-US` | Baseball Data Lover | `en-US` | Baseball Data Lover | Existing | `@baseballdata.tips` |
| `smartscout.baseball_data_lover.es-US` | Baseball Data Lover | `es-US` | Datos de Beisbol | Needs creation | Private inventory |
| `smartscout.baseball_data_lover.ko-KR` | Baseball Data Lover | `ko-KR` | 야구 데이터 덕후 | Needs creation | Private inventory |
| `smartscout.baseball_data_lover.zh-Hant` | Baseball Data Lover | `zh-Hant` | 棒球數據控 | Needs creation | Private inventory |
| `smartscout.pitch-shape-lab.en-US` | Pitch Shape Lab | `en-US` | Pitch Shape Lab | Existing | `@pitch.shape.lab` |
| `smartscout.pitch-shape-lab.es-US` | Pitch Shape Lab | `es-US` | Lab de Pitcheo | Needs creation | Private inventory |
| `smartscout.pitch-shape-lab.ko-KR` | Pitch Shape Lab | `ko-KR` | 피치 무브먼트 랩 | Needs creation | Private inventory |
| `smartscout.pitch-shape-lab.zh-Hant` | Pitch Shape Lab | `zh-Hant` | 球路實驗室 | Needs creation | Private inventory |
| `smartscout.cage-receipts.en-US` | Cage Receipts | `en-US` | Cage Receipts | Existing | `@cage.receipts` |
| `smartscout.cage-receipts.es-US` | Cage Receipts | `es-US` | Recibos de Jaula | Needs creation | Private inventory |
| `smartscout.cage-receipts.ko-KR` | Cage Receipts | `ko-KR` | 타격장 영수증 | Needs creation | Private inventory |
| `smartscout.cage-receipts.zh-Hant` | Cage Receipts | `zh-Hant` | 打擊籠收據 | Needs creation | Private inventory |
| `smartscout.travel-ball-receipts.en-US` | Travel Ball Receipts | `en-US` | Travel Ball Receipts | Existing | `@travelballreceipts` |
| `smartscout.travel-ball-receipts.es-US` | Travel Ball Receipts | `es-US` | Recibos Travel Ball | Needs creation | Private inventory |
| `smartscout.travel-ball-receipts.ko-KR` | Travel Ball Receipts | `ko-KR` | 주말야구 영수증 | Needs creation | Private inventory |
| `smartscout.travel-ball-receipts.zh-Hant` | Travel Ball Receipts | `zh-Hant` | 週末棒球收據 | Needs creation | Private inventory |

## 4. Optional Simplified Chinese Feeds

簡体字 `zh-Hans` は初期active feedには含めないが、追加できる構造にしておく。

| LogicalFeed ID | Angle | Locale | Status | 有効化条件 |
| --- | --- | --- | --- | --- |
| `smartscout.baseball_data_lover.zh-Hans` | Baseball Data Lover | `zh-Hans` | Candidate | 簡体字向け投稿先アカウント、レビュー担当、表記ルールが揃った時点 |
| `smartscout.pitch-shape-lab.zh-Hans` | Pitch Shape Lab | `zh-Hans` | Candidate | 簡体字向け投稿先アカウント、レビュー担当、表記ルールが揃った時点 |
| `smartscout.cage-receipts.zh-Hans` | Cage Receipts | `zh-Hans` | Candidate | 簡体字向け投稿先アカウント、レビュー担当、表記ルールが揃った時点 |
| `smartscout.travel-ball-receipts.zh-Hans` | Travel Ball Receipts | `zh-Hans` | Candidate | 簡体字向け投稿先アカウント、レビュー担当、表記ルールが揃った時点 |

`zh-Hans` をactive化した場合の運用規模:

| 項目 | 4 locale初期 | `zh-Hans`追加後 |
| --- | ---: | ---: |
| LogicalFeeds | 16 | 20 |
| ContentPackages/day | 16 | 20 |
| AI generated images/day | 64 | 80 |
| Default publish jobs/day | 48 | 60 |
| Max publish jobs/day | 64 | 80 |

## 5. Platform Account方針

| Platform | M0-04方針 |
| --- | --- |
| TikTok | 既存英語4アカウントをpublic docsに記録する。未作成localized accountsはprivate inventoryでhandle候補、作成状況、所有者、MFAを管理する |
| Instagram | 同じLogicalFeed構造を使う。Professional account/Page接続が必要なため、M0-05以降でprivate inventoryに分離する |
| YouTube Shorts | 同じLogicalFeed構造を使う。Channel/Google account/OAuth ownerはM0-05以降でprivate inventoryに分離する |

公開docsに書かないもの:

- 未作成handle候補
- ログインメール
- 電話番号
- MFA状態の詳細
- recovery method
- OAuth token / refresh token
- App secret / client secret
- Platform account ownerの個人情報

## 6. 実装要件

最低限必要なデータ構造:

- `Product.supportedLocales`: Productごとに利用可能localeを持つ。SmartScoutは `en-US`, `es-US`, `ko-KR`, `zh-Hant` をactive、`zh-Hans` をcandidateにする。
- `LocaleSetting.status`: `active`, `candidate`, `paused` を持つ。
- `LocaleSetting.script`: `Latin`, `Hangul`, `Hant`, `Hans` などを保存する。
- `LocaleSetting.isProductChineseDefault`: SmartScoutでは `zh-Hant=true`、`zh-Hans=false`。
- `LogicalFeed`: `productId`, `editorialAngleId`, `locale`, `status`, `dailyPostTarget` を持つ。
- `SocialAccount`: platform別に `logicalFeedId` と接続する。未作成状態を許容する。
- `TranslationJob`: source localeからtarget localeへslide overlay/captionだけを生成できる。

設計上の注意:

- 言語数をハードコードしない。
- 画像生成はproduction group単位で共有し、slide overlay/captionだけをlocaleごとに生成できるようにする。
- 言語を追加してもProduct/Angle設計は増やさず、LogicalFeedとSocialAccountだけ増えるようにする。
- AI翻訳は低コストに増やせるが、投稿先アカウント作成、人間の承認、ポリシー確認、運用分析はlocale数に比例して増えるため、active化はstatusで管理する。

## 7. M0-04完了条件

- SmartScoutの初期active localeが `en-US`, `es-US`, `ko-KR`, `zh-Hant` に確定している。
- SmartScoutの中国語初期運用デフォルトが `zh-Hant` に確定している。
- `zh-Hans` がcandidateとして残っている。
- 4切り口 x 4 active locale = 16 LogicalFeedsが台帳化されている。
- 未作成handle候補、ログイン、MFA、復旧情報は公開docsではなくprivate inventoryに分ける方針が決まっている。

## 8. 参照元

- `smartscout-tiktok/accounts/index.json`
- `smartscout-tiktok/config/locales.json`
- `smartscout-tiktok/README.md`
