Takazudo Modular Docs

Type to search...

to open search from anywhere

商品フィード生成 (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-feedout/feeds/google-merchant.xmlGoogle Merchant Center (RSS 2.0 形式)。YouTube Shopping 向け
pnpm generate:meta-feedout/feeds/meta-catalog.xmlMeta 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.tsGoogle Merchant 用 RSS 2.0 XML を生成
scripts/generate-meta-feed.tsMeta Commerce 用 Atom XML を生成

データソース

両スクリプトは以下をインポートする:

  • src/data/product-master-data.mjsallProducts - 商品マスターデータ
  • src/data/brands.mjsallBrands - ブランド slug → 表示名のマップ

フィードへの掲載条件

getEligibleProducts() で、以下を満たす商品のみフィードに含める:

  • price != null (価格が設定されている)
  • detailHref != null (詳細ページが存在する)

上記を満たさない商品は、フィードから除外される。

在庫状況の変換

商品の mercariStatus をプラットフォーム側の値へマップする。

Google Merchant

mercariStatusGoogle availability
sold / discontinued / unavailableout_of_stock
incomingpreorder
askToBuy / undefinedin_stock

Meta Commerce

mercariStatusMeta availability
sold / discontinued / unavailableout of stock
incomingavailable for order
askToBuy / undefinedin 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.mjssrc/data/brands.mjs がビルド不要で読み込めることを前提とする
  • CI では自動実行していない。フィード更新が必要なタイミングで手動実行する想定