officialSns マージ手順書
data/work/members.json の officialSns を Vercel Blob 上のメンバーデータに一括マージする手順を記述する。
- 対象スクリプト:
scripts/patch-official-sns.ts - 関連 Issue: #155
背景
PR #149 で data/members.json に officialSns フィールドを追加したが、アプリが実際に読み書きするデータは
Vercel Blob 上にある。そのため、デプロイ済みアプリでは officialSns が空のまま(公式SNSセクションが非表示)となっている。
本スクリプトを 一度だけ 実行することで、Blob 上のデータに officialSns をマージする。
前提条件
.env.local に以下の環境変数が設定されていること:
| 変数名 | 説明 |
|---|---|
BLOB_READ_WRITE_TOKEN |
Vercel Blob の読み書きトークン(Vercel ダッシュボード > Storage > Connect から取得) |
MEMBERS_BLOB_URL |
Blob 上の members.json の URL(Vercel ダッシュボード > Storage > Blobs から取得) |
実行手順
1. 事前確認
data/work/members.json に officialSns が設定されていることを確認する:
cat data/work/members.json | bun -e "
const d = await Bun.stdin.json();
const withSns = d.members.filter(m => m.officialSns?.length > 0);
console.log('officialSns 設定済み:', withSns.length, '件');
"
2. スクリプトを実行
bun scripts/patch-official-sns.ts
実行成功時の出力例:
30 件のメンバーに officialSns をマージしました。
Vercel Blob への書き戻しが完了しました。
officialSns のマージが完了しました。
3. 動作確認
デプロイ済みアプリで officialSns を持つメンバーの詳細ページを開き、「公式SNS」セクションが表示されることを確認する。
同期スクリプト(sync-members.yml)の次回実行ログで、SNS ドメイン限定検索が動作していることを確認する。
注意事項
- 一回限りの操作: 本スクリプトは初期マージ用として設計されている。今後
officialSnsを更新する場合はdata/work/members.jsonを編集した上で再実行するか、Blob を直接編集すること。 - 再実行時の上書き: Blob 側に既に
officialSnsが存在する場合、data/work/members.jsonの値で上書きされる。Vercel ダッシュボード等で Blob を直接編集したofficialSnsを保持したい場合は本スクリプトを再実行しないこと。 - 上書き保存:
put()はallowOverwrite: trueで既存 Blob を上書きする。実行前に Blob の現在の内容をバックアップしたい場合は、Vercel ダッシュボードから JSON をダウンロードしておくこと。 - id 照合:
data/work/members.jsonに存在しないメンバーが Blob 上にいる場合、そのメンバーのofficialSnsは変更されない。 - officialSns 未設定のメンバー: ローカルで
officialSnsが空配列または未定義のメンバーは、Blob 上のデータも変更されない。
トラブルシューティング
BLOB_READ_WRITE_TOKEN が設定されていません
.env.local に BLOB_READ_WRITE_TOKEN が設定されているか確認する。Vercel ダッシュボード > Storage > プロジェクトの Blob ストア > .env.local スニペットからコピーできる。
MEMBERS_BLOB_URL が設定されていません
.env.local に MEMBERS_BLOB_URL が設定されているか確認する。同スニペットに含まれている。
Vercel Blob からのデータ取得に失敗しました
MEMBERS_BLOB_URL が正しい URL を指しているか確認する。Vercel ダッシュボード > Storage > Blobs で members.json の URL を確認すること。