mcpField
P
product-content-enrichment

product-content-enrichment

github.com/finsilabs营销与增长6088 次安装6 天前更新
代码仓库

关于 product-content-enrichment

面向电商商家的商品内容完善技能指南,介绍如何借助 AI 丰富商品描述、属性和图片替代文本。内容涵盖平台工具、批量处理以及发布前的人工审核。

主要功能

  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 描述生成,内置)Jasper for Shopify,或使用 ChatGPT 通过 CSV 批量生成
WooCommerce无原生功能ChatGPT + WP All Import 批量导入;Hypotenuse AI WooCommerce 插件
BigCommerce无原生功能Feedonomics 用于商品数据源丰富化;Jasper 或 ChatGPT 用于生成描述
任何平台(批量处理)Claude / ChatGPT / Gemini通过 CSV 批量生成描述,然后使用平台工具导入

步骤 2:平台专属设置

Shopify

选项 A:Shopify Magic(内置、免费)

所有套餐的 Shopify 商家均可使用 Shopify Magic。

  1. 前往 Admin → Products → [Product]
  2. 在产品描述编辑器中,点击右上角的闪光图标(✨)
  3. 输入提示词,或让 Shopify Magic 根据产品标题和现有详情生成内容
  4. 检查生成的文本,并编辑以符合品牌语气
  5. 满意后点击 Save

限制:Shopify Magic 一次只能处理一个产品,不适合批量丰富内容。

选项 B:使用 CSV + AI 批量生成

一次丰富数百种产品的内容:

  1. 导出当前商品目录:Admin → Products → Export(下载为 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 → Products → Export(CSV)
  2. 使用你选择的 AI 工具(ChatGPT、Claude、Jasper)生成描述
  3. 导入丰富后的数据:使用 WP All Import Pro 将更新后的 CSV 导入回 WooCommerce,并将描述列映射到产品描述字段

WooCommerce 版 Hypotenuse AI:

  • 从 WooCommerce.com 安装 Hypotenuse AI 插件
  • 在产品列表中选择多个产品
  • 点击 Generate Content 批量创建描述
  • 发布前检查并批准

提取属性:

  • 使用 AI 从现有描述中提取结构化属性(材料、尺寸、重量、保养说明)
  • 在 Attributes 标签页下,将提取出的属性添加到 WooCommerce 产品属性中
  • 这些属性会成为导航中可筛选的选项

BigCommerce

批量生成描述:

  1. 前往 Products → Export,下载产品目录 CSV
  2. 使用 AI 工具生成内容更丰富的描述
  3. 通过 Products → Import 重新导入

使用 Feedonomics 丰富商品 Feed:

  • 从 BigCommerce 应用市场安装 Feedonomics
  • Feedonomics 可使用 AI 专门针对 Google Shopping、Amazon 和其他渠道优化产品标题和描述
  • 对于丰富 Feed 目标平台要求的属性(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. 使用简单的电子表格或平台的产品编辑页面逐一审核
  3. 在批准前调整语气、准确性和品牌风格
  4. 跟踪批准率——如果拒绝的草稿超过 30%,请改进提示词

优先丰富以下产品:

  • 流量高、转化率低的产品(查看 Analytics)
  • 没有描述或描述非常简短的产品
  • 需要 SEO 内容以开始提升排名的新品

步骤 4:为产品图片添加替代文本

替代文本有助于无障碍访问和图片 SEO。

Shopify:

  • 前往 Products → [Product] → Images
  • 点击任意图片上的 ... 菜单 → Edit alt text
  • 输入描述性替代文本(例如,“蓝色圆领棉质 T 恤,男款 M 码”)
  • 批量添加替代文本:使用 Matrixify,并添加 Image Alt Text 列

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

评论

支持 Markdown