mcpField
P
product-content-enrichment

product-content-enrichment

github.com/finsilabsマーケティング・グロース6088 回インストール5 日前に更新
リポジトリ

product-content-enrichment について

AI で商品説明、属性、画像の代替テキストを充実させる EC チーム向けのスキルガイドです。プラットフォーム別ツールや一括処理に加え、公開前の人による確認も扱います。

主な機能

  1. 01商品説明の生成
  2. 02商品カタログの一括拡充
  3. 03構造化属性の抽出
  4. 04画像の代替テキスト作成
  5. 05生成内容の確認と承認

活用シーン

  1. 01仕入先から取り込んだ商品情報の補完
  2. 02商品説明の文体統一
  3. 03商品画像への代替テキスト一括追加
  4. 04ブランドのトーンに合わせた文章の書き換え

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill product-content-enrichment

インストール後、Claude Code で/product-content-enrichmentを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

tile.json
evals/attribute-extraction-from-descriptions/
criteria.json
task.md
evals/batch-description-generation-pipeline/
criteria.json
task.md
evals/image-tagging-and-human-review-workflow/
criteria.json
task.md

詳細

商品コンテンツの充実

概要

魅力的な説明文、完全な属性情報、適切なタグが付いた画像など、充実した商品コンテンツは、コンバージョンと SEO の両方を促進します。コンテンツが乏しい仕入先からカタログをインポートした場合は、次にコンテンツを充実させましょう。AI ツールを使えば、説明文の生成、属性の抽出、タグの提案を大規模に実行できます。一般的なケースであれば、プラットフォーム標準の AI 機能や専用アプリを使うことで、カスタム開発を行わずに対応できます。

このスキルを使う場面

  • 商品名、SKU、簡素な説明文しか含まれていない仕入先カタログをインポートするとき
  • 商品説明の文体にばらつきがある、または SEO キーワードが不足しているとき
  • 画像のメタデータ(代替テキスト、タグ)がなく、大規模に生成する必要があるとき
  • カタログの更新にあたり、何百もの商品説明を新しいブランドのトーンに合わせて書き直す必要があるとき

基本手順

ステップ 1:プラットフォームを特定し、適切なツールを選ぶ
プラットフォーム組み込み AIおすすめのアプリ/ツール
ShopifyShopify Magic(AI による説明文生成機能を標準搭載)Shopify 向け Jasper、または CSV を使った一括生成用の ChatGPT
WooCommerce標準搭載なし一括インポートには ChatGPT + WP All Import、または Hypotenuse AI WooCommerce プラグイン
BigCommerce標準搭載なしフィードの充実には Feedonomics、説明文の生成には Jasper または ChatGPT
すべてのプラットフォーム(一括処理)Claude / ChatGPT / GeminiCSV 経由で説明文を一括生成し、プラットフォームのツールを使ってインポート

ステップ 2:プラットフォームごとの設定

Shopify

オプション A:Shopify Magic(標準搭載、無料)

Shopify Magic は、どのプランでもすべてのマーチャントが利用できます。

  1. 管理画面 → 商品 → [商品] に移動します
  2. 商品説明エディターで、右上のきらめきアイコン(✨)をクリックします
  3. プロンプトを入力するか、Shopify Magic に商品タイトルと既存の詳細情報から生成させます
  4. 生成されたテキストを確認し、ブランドのトーンに合うように編集します
  5. 問題がなければ 保存 をクリックします

制限事項:Shopify Magic は一度に 1 商品ずつ処理するため、一括でのコンテンツ充実には適していません。

オプション B:CSV + AI による一括生成

何百もの商品を一度に充実させる場合:

  1. 現在のカタログをエクスポート:管理画面 → 商品 → エクスポート(CSV としてダウンロード)
  2. 説明文を一括生成:商品データを ChatGPT、Claude、または別の AI ツールに貼り付け、次のようなプロンプトを使います:
For each of the following products, write a product description in this format:
- Opening sentence: 1 compelling benefit sentence (max 20 words)
- 2-3 sentence paragraph: features and use cases
- 4-6 bullet points: key specifications

Brand voice: [describe your brand voice]
Do not invent specifications not present in the product data.

Products:
[paste your CSV rows]
  1. Shopify に再インポート:Matrixify(App Store)を使って、説明文を更新した CSV をインポートします。説明文の列を Shopify の body HTML フィールドに割り当てます

オプション C:Hypotenuse AI または Jasper(App Store)

これらのアプリは Shopify と直接連携します。

  1. Shopify App Store からインストールします
  2. 商品カタログに接続します
  3. コンテンツを充実させる商品を選び、生成をクリックします
  4. 公開する前に、アプリのエディターで下書きを確認します
  5. 承認した説明文を Shopify に直接公開します

WooCommerce

一括生成のワークフロー:

  1. 商品をエクスポート:WooCommerce → 商品 → エクスポート(CSV)
  2. 選択した AI ツール(ChatGPT、Claude、Jasper)を使って説明文を生成します
  3. 充実させたデータをインポート:WP All Import Pro を使って、更新した CSV を WooCommerce に再インポートし、説明文の列を商品説明フィールドに割り当てます

WooCommerce 向け Hypotenuse AI:

  • WooCommerce.com から Hypotenuse AI プラグインをインストールします
  • 商品一覧から複数の商品を選択します
  • コンテンツを生成をクリックして、説明文を一括作成します
  • 公開する前に確認し、承認します

属性を抽出する場合:

  • AI を使って、既存の説明文から構造化された属性(素材、寸法、重量、お手入れ方法)を抽出します
  • 抽出した属性を、WooCommerce の商品の 属性 タブに追加します
  • 追加した属性は、ナビゲーションで絞り込み可能なファセットになります
BigCommerce

説明の一括生成:

  1. Products → Export に移動し、商品カタログの CSV をダウンロードします
  2. AI ツールを使用して、情報を拡充した説明文を生成します
  3. Products → Import を使用して再インポートします

フィード情報の拡充に Feedonomics を使用する場合:

  • BigCommerce App Marketplace から Feedonomics をインストールします
  • Feedonomics は AI を使用して、Google Shopping、Amazon などのチャネル向けに商品タイトルと説明文を最適化できます
  • フィードの送信先で必須となる属性(GTIN、ブランド、MPN)の情報を拡充する場合に特に便利です

カスタム/ヘッドレス

カスタムデータベースを使用するヘッドレスプラットフォームでは、人によるレビュー工程を設けた情報拡充パイプラインを構築します。

// lib/productEnrichment.ts
import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic();

const DESCRIPTION_PROMPT = `You are a product copywriter. Generate a product description with:
1. A compelling opening sentence (max 20 words) highlighting the main benefit
2. A 2-3 sentence paragraph describing features
3. 4-6 key feature bullet points

Brand voice: {brandVoice}
Constraints:
- Use only the provided attributes — do not invent specifications
- Target: 80-120 words for the paragraph, plus bullets
- Include the product name and 1-2 SEO keywords naturally
- Do not use superlatives like "best" or "amazing"

Product: {name}
Category: {category}
Attributes: {attributes}`;

// Generate description for a single product
export async function generateProductDescription(product: Product, brandVoice: string): Promise<string> {
  const attributeText = Object.entries(product.attributes ?? {})
    .filter(([, v]) => v !== null)
    .map(([k, v]) => `${k}: ${v}`)
    .join('\n');

  const prompt = DESCRIPTION_PROMPT
    .replace('{brandVoice}', brandVoice)
    .replace('{name}', product.name)
    .replace('{category}', product.category)
    .replace('{attributes}', attributeText || 'Not provided');

  const message = await client.messages.create({
    model: 'claude-opus-4-5',
    max_tokens: 400,
    messages: [{ role: 'user', content: prompt }],
  });

  return message.content[0].type === 'text' ? message.content[0].text : '';
}

// Batch enrichment with human review gate — saves drafts, never auto-publishes
export async function enrichProductsBatch(productIds: string[], brandVoice: string) {
  const CONCURRENCY = 5;
  const results = [];

  for (let i = 0; i < productIds.length; i += CONCURRENCY) {
    const chunk = productIds.slice(i, i + CONCURRENCY);
    const batchResults = await Promise.all(chunk.map(async productId => {
      const product = await db.products.findUnique({ where: { id: productId }, include: { attributes: true } });
      try {
        const description = await generateProductDescription(product, brandVoice);
        // Save as draft — requires human approval before going live
        await db.productEnrichmentDrafts.upsert({
          where: { productId },
          create: { productId, description, status: 'pending_review' },
          update: { description, status: 'pending_review', updatedAt: new Date() },
        });
        return { productId, status: 'success' };
      } catch (err) {
        return { productId, status: 'error', error: err.message };
      }
    }));
    results.push(...batchResults);
  }

  return results;
}

// Approve a draft and publish to the product
export async function approveDraft(productId: string, approvedBy: string) {
  const draft = await db.productEnrichmentDrafts.findUnique({ where: { productId } });
  if (!draft) throw new Error('Draft not found');

  await db.$transaction([
    db.products.update({ where: { id: productId }, data: { description: draft.description } }),
    db.productEnrichmentDrafts.update({
      where: { productId },
      data: { status: 'approved', approvedBy, approvedAt: new Date() },
    }),
  ]);
}

ステップ 3:AI が生成したコンテンツをレビューして承認する

AI が生成したコンテンツを、人によるレビューなしで自動公開しないでください。 AI は次のような問題を起こす可能性があります。

  • 元データにない仕様をでっち上げる(ハルシネーション)
  • ブランドに一貫しないトーンを使用する
  • 法的に問題のある主張を含める

レビューワークフロー:

  1. 説明文を下書きとして生成します
  2. シンプルなスプレッドシート、またはプラットフォームの商品編集画面を使って、1件ずつレビューします
  3. 承認する前に、トーン、正確性、ブランドボイスを整えます
  4. 承認率を記録します。下書きの 30% を超えて却下している場合は、プロンプトを調整します

情報を優先的に拡充する商品:

  • トラフィックが多く、コンバージョン率が低い商品(Analytics を確認)
  • 説明文がない、または非常に短い商品
  • SEO コンテンツを追加して検索順位を上げる必要がある新着商品

ステップ 4:商品画像の代替テキストを拡充する

代替テキストは、アクセシビリティと画像 SEO の両方に役立ちます。

Shopify:

  • Products → [Product] → Images に移動します
  • 画像の ... メニューをクリックし、Edit alt text を選択します
  • 説明的な代替テキストを入力します(例:「丸首の青いコットン T シャツ、メンズ M サイズ」)
  • 代替テキストを一括で入力するには、Image Alt Text 列を含む Matrixify を使用します

WooCommerce:

  • 画像をアップロードし、メディアライブラリで Edit をクリックします
  • Alt Text フィールドに入力します
  • 既存の画像の場合は、Media Library → [Image] → Edit に移動します

代替テキストを一括生成する場合:

  1. 商品タイトルとともに、商品画像の一覧をエクスポートします
  2. AI ツールを使って、各画像を説明する代替テキストを生成します
  3. プラットフォームの一括処理ツールを使用して再インポートします

ベストプラクティス

  • AI が生成した説明文は、公開前に必ず人がレビューします — 自動公開はせず、承認率を記録してプロンプトの改善に役立てます
  • AI が生成したコンテンツは、公開中のコンテンツとは別に下書きとして保存します — レビューして承認するまでは、公開済みの説明文を上書きしないでください
  • 商品説明には低めの温度設定を使用します(ChatGPT/Claude では 0.3~0.5)— 創造的なバリエーションよりも、一貫性がありブランドに沿った出力のほうが重要です
  • すべてのプロンプトにブランドボイスのガイドラインを含めます — 「プロフェッショナルでありながら親しみやすく、品質を重視し、最上級表現は使わない」と指定すると、ブランドの文脈を含めずに指示するよりもはるかに良い出力が得られます
  • 優先度の高い商品から情報を拡充します — ロングテールに取り組む前に、売上上位 20% の商品から始めます

よくある問題

問題解決策
AI が元データにない仕様をでっち上げる「提供された属性のみを使用し、値を推測したり、作り出したりしないでください」という明示的な制約をプロンプトに追加し、商品仕様と照合して出力を確認します
AI が生成する説明文がすべて同じように聞こえる商品の種類ごとに指示を追加します(例:靴、電子機器、アパレルで異なるプロンプトを使用する)
説明文に SEO キーワードが含まれないプロンプトに「次の SEO キーワードを自然に取り入れてください:[list]」を含め、生成後にキーワードツールで確認します
一括インポートによって既存の良質な説明文が上書きされる説明文が空、または非常に短い商品のみをインポート対象に絞り、手動で作成した説明文を上書きしないようにします
AI による画像タグ付けの品質が低いキーワードベースのツールではなく、AI 画像分析(GPT-4 Vision、Claude)を代替テキストの生成に使用し、商品名をコンテキストとして提供します

Related Skills

  • @catalog-import-export
  • @product-data-modeling
  • @product-categorization

コメント