商品フィード生成 (Google Merchant / Meta Commerce)
Google Merchant Center と Meta Commerce Manager 向けの商品フィード XML を生成するスクリプトの仕組み
商品フィード生成 (Google Merchant / Meta Commerce)
product-master-data.mjs をソースとして、外部プラットフォーム向けの商品フィード XML を生成するスクリプト群。YouTube Shopping 連携 (Google Merchant Center) と Instagram / Facebook ショッピング (Meta Commerce Manager) で利用する。
生成されるフィード
| スクリプト | 出力ファイル | 用途 |
|---|---|---|
pnpm generate:google-feed | out/feeds/google-merchant.xml | Google Merchant Center (RSS 2.0 形式)。YouTube Shopping 向け |
pnpm generate:meta-feed | out/feeds/meta-catalog.xml | Meta Commerce Manager (Atom 形式)。Instagram / Facebook ショッピング向け |
pnpm generate:feeds | 上記両方 | 両方のフィードを一度に生成するショートカット |
出力先の out/ ディレクトリは gitignore 対象。フィード XML はコミットせず、外部プラットフォームへ都度アップロードする運用。
実行方法
# Google Merchant Center 用フィードを生成
pnpm generate:google-feed
# Meta Commerce Manager 用フィードを生成
pnpm generate:meta-feed
# 両方を生成
pnpm generate:feeds
スクリプトは pnpm dlx tsx@4 経由で実行するため、プロジェクトに tsx 依存を追加する必要はない。
ファイル構成
| ファイル | 役割 |
|---|---|
scripts/feed-shared.ts | 両スクリプトで共有する型 (FeedProduct, FeedBrand, MercariStatus) と ユーティリティ (XML エスケープ、カテゴリ判定、対象商品フィルタ、ファイル書き出し) |
scripts/generate-google-feed.ts | Google Merchant 用 RSS 2.0 XML を生成 |
scripts/generate-meta-feed.ts | Meta Commerce 用 Atom XML を生成 |
データソース
両スクリプトは以下をインポートする:
src/data/product-master-data.mjsのallProducts- 商品マスターデータsrc/data/brands.mjsのallBrands- ブランド slug → 表示名のマップ
フィードへの掲載条件
getEligibleProducts() で、以下を満たす商品のみフィードに含める:
price != null(価格が設定されている)detailHref != null(詳細ページが存在する)
上記を満たさない商品は、フィードから除外される。
在庫状況の変換
商品の mercariStatus をプラットフォーム側の値へマップする。
Google Merchant
mercariStatus | Google availability |
|---|---|
sold / discontinued / unavailable | out_of_stock |
incoming | preorder |
askToBuy / undefined | in_stock |
Meta Commerce
mercariStatus | Meta availability |
|---|---|
sold / discontinued / unavailable | out of stock |
incoming | available for order |
askToBuy / undefined | in stock |
商品カテゴリ
商品の tags から、Google Product Category を自動判定する:
- タグに
blank-panel/case/stand/rail/cable/accessory/power-supplyのいずれかが含まれる- →
Musical Instruments > Musical Instrument Accessories
- →
- それ以外
- →
Musical Instruments > Electronic Musical Instruments > Synthesizers
- →
画像リンク
各商品の OGP 画像 ({imgSrc}/ogp.jpg) をフィードの image_link として出力する。OGP 画像が生成されていない商品は、フィード上のサムネイルが 404 になるため注意。
OGP 生成ルールは 画像パイプラインの OGP Image Convention を参照。
運用上の注意
- フィード XML は
out/feeds/に書き出されるが、このディレクトリは git 管理外。生成のたびに新しく作られる - 両スクリプトは
console.errorで進捗を出力する (CLI スクリプト標準) - スクリプト実行時に
src/data/product-master-data.mjsとsrc/data/brands.mjsがビルド不要で読み込めることを前提とする - CI では自動実行していない。フィード更新が必要なタイミングで手動実行する想定