実装ガイド — StructFlow × n8n × Shopify

StructFlowとShopify
商品登録を自動化する方法

本記事では、StructFlowとワークフロー自動化ツールn8nを組み合わせて、PDFカタログからShopifyへの商品登録を効率化する方法をご紹介します。データ整理に悩んでいる方や、EC業務の効率化を進めたい方におすすめの内容です。

公開日 — 2026.07.30 使用ツール — StructFlow / n8n / Shopify
20
抽出商品数
7
抽出項目数
5
処理ステップ数
100%
抽出成功率
背景と課題

ECサイトの立ち上げや運用において、多くの担当者が直面する課題の一つが商品データの登録作業です。特に紙のカタログやPDF形式で管理されている商品情報を、そのままECサイトに反映するのは簡単ではありません。手作業での入力は時間がかかるだけでなく、入力ミスや表記ゆれの原因にもなります。また、商品点数が増えるほど作業負担は指数的に増加し、更新作業や在庫管理にも影響が出る可能性があります。

使用するツール

StructFlowの概要

StructFlowは、PDFやテキストなどの非構造化データをJSON形式の構造化データへ変換できるツールです。従来は人手で整理する必要があった商品情報を、自動で抽出し整形できる点が大きな特徴です。さらに、抽出ルールをプロンプトとして柔軟に変更できるため、企業ごとのデータフォーマットや商品仕様に合わせて最適化できます。これにより、単なるデータ変換にとどまらず、データの標準化や一貫性の確保にもつながります。

n8nの概要

n8nは、さまざまなアプリケーションやサービスを連携し、業務の自動化を実現できるワークフロー自動化ツールです。ノーコードまたはローコードで直感的にフローを構築できるため、プログラミングの専門知識がなくても活用しやすい点が特徴です。API連携やデータ変換処理、条件分岐などを組み合わせることで、柔軟な業務プロセスを構築できます。

処理フロー

全体の流れ

今回の仕組みでは、n8nを使って以下のような流れで処理を行います。

// PDFカタログ → Shopify 商品登録パイプライン
1
PDFファイルをアップロード 入力層
2
PDFからテキストを抽出 前処理層
3
StructFlowで商品情報を抽出 AI抽出層
4
JSONをCSV形式へ変換 変換層
5
Shopifyへインポート 登録層

この一連の流れを自動化することで、従来は数時間かかっていた作業を数分に短縮することも可能です。また、担当者の作業負担を軽減し、より付加価値の高い業務に時間を割けるようになります。

n8nで構築したPDFカタログからShopifyへの商品登録ワークフロー全体図
実装 01

n8nによるワークフロー構築

まず、n8nでワークフローを作成します。トリガーにはフォーム送信を利用し、PDFファイルを入力として受け取ります。その後、「Extract from PDF」ノードを使ってテキストを抽出します。ファイル形式に応じて分岐処理を行うことで、より柔軟な運用が可能になります。また、社内のSharePointやTeamsと連携すれば、ファイルアップロードをトリガーにした自動処理も実現できます。

抽出したテキストはStructFlowへ送信し、必要な情報だけを取得するためのプロンプトを設定します。この際、商品名や価格だけでなく、Shopifyで利用されるカテゴリ体系に基づいた商品カテゴリの自動分類も同時に行うよう指示できます。これにより、インポート後のカテゴリ設定作業を省き、よりスムーズに商品登録を進めることが可能になります。さらに、ブランド名やバリエーション情報なども抽出対象に含めることで、より実務に即したデータ整備が可能になります。

prompt — StructFlow システムプロンプト
あなたは高精度なデータ抽出AIです。

入力として与えられるフルーツ・野菜カタログPDFから商品情報を抽出し、以下の仕様に従ってJSON形式で出力してください。

# Shopify Taxonomy参照(必須)

カテゴリは必ず以下のShopify Standard Product Taxonomyに基づく:

https://shopify.github.io/product-taxonomy/releases/unstable/?categoryId=gid%3A%2F%2Fshopify%2FTaxonomyCategory%2Ffb-2-10

※このカテゴリは「Food, Beverages & Tobacco > Food Items > Produce」に属する

※Shopifyではカテゴリは階層(breadcrumb形式)で指定する必要がある

# 重要:カテゴリ出力形式

product-categoryは必ず以下のような「階層(breadcrumb)」形式で出力する:

例:

- Food, Beverages & Tobacco > Food Items > Produce > Fresh Fruits

- Food, Beverages & Tobacco > Food Items > Produce > Fresh Vegetables

※省略は禁止

※「produce.fruit」のような短縮形式は禁止

# 抽出対象

各商品について以下の項目を抽出・生成してください:
# 例

入力:

## りんご

説明: 甘い

単位: 1 個

価格: 150 円

出力:

{
  "catalog_title": "フルーツ・野菜カタログ",
  "products": [
    {
      "sku": "SKU001",
      "name": "りんご",
      "product-category": "Food, Beverages & Tobacco > Food Items > Produce > Fresh Fruits",
      "description": "甘い",
      "unit": "1個",
      "unit-price": "150円",
      "unit_price_value": 150
    }
  ]
}
実装 02

StructFlowによるデータ抽出

StructFlowを実行すると、商品名、価格、カテゴリなどの情報がJSON形式で出力されます。これにより、もともとバラバラだった情報が整理され、機械的に扱える状態になります。さらにカテゴリ分類も自動化できるため、後続のEC登録作業が大幅に簡素化されます。データが構造化されることで、他のシステムとの連携や分析にも活用しやすくなる点もメリットです。

json — StructFlow ジョブ実行結果
rumjvincucbyra1cth2yjc",
"model": "azure/gpt-5.4-mini",
"status": "completed",
"summary": {
  "total": 1,
  "succeeded_count": 1,
  "failed_count": 0
},
"results": [
  {
    "status": "succeeded",
    "output": {
      "catalog_title": "フルーツ・野菜カタログ",
      "products": [
        {
          "sku": "SKU001",
          "name": "りんご",
          "product-category": "Food, Beverages & Tobacco > Food Items > Produce > Fresh Fruits",
          "description": "甘くてシャキシャキした日本産のりんご。",
          "unit": "1個",
          "unit-price": "150円",
          "unit_price_value": 150
        },
        {
          "sku": "SKU002",
          "name": "みかん",
          "product-category": "Food, Beverages & Tobacco > Food Items > Produce > Fresh Fruits",
          "description": "冬に人気の甘い柑橘類。",
          "unit": "1袋",
          "unit-price": "400円",
          "unit_price_value": 400
        },
        {
          "sku": "SKU020",
          "name": "さくらんぼ",
          "product-category": "Food, Beverages & Tobacco > Food Items > Produce > Fresh Fruits",
          "description": "小さくて甘い果物。",
          "unit": "1パック",
          "unit-price": "700円",
          "unit_price_value": 700
        }
      ]
    },
    "id": "uuid:3fc1b1bb-fa32-477a-9d1d-ef1a87d89a3c"
  }
],
"usage": {
  "total_input_characters": 806,
  "processed_input_characters": 806,
  "skipped_characters": 0,
  "output_characters": 4083,
  "vector_bytes": 0
}
}
]
実装 03

CSV変換とShopify連携

ShopifyではCSVファイルを使った商品インポートが可能です。そのため、n8nのJavaScriptノードを使い、JSONデータをCSV形式に変換します。この処理はテンプレート化できるため、一度作成すれば継続的に再利用できます。

javascript — n8n Code ノード / JSON → CSV
const products = $input.first().json.results[0].output.products;

// Build CSV
const headers = Object.keys(products[0]);
let csv = headers.join(",") + "\n";

for (const p of products) {
  let row = [];
  for (const h of headers) {
    let value = String(p[h]);
    if (value.includes(",") || value.includes('"')) {
      value = '"' + value.replace(/"/g, '""') + '"';
    }
    row.push(value);
  }
  csv += row.join(",") + "\n";
}

// Convert CSV string to binary (Buffer)
const binaryData = Buffer.from(csv, "utf-8");

// Return as downloadable file
return [
  {
    binary: {
      data: {
        data: binaryData.toString("base64"), // required format
        mimeType: "text/csv",
        fileName: "catalog.csv"
      }
    }
  }
];

生成されたCSVはダウンロードし、Shopifyの[商品管理]→[インポート]からアップロードします。また、[列見出しの順序を変更する]機能を使えば、CSVの項目とShopifyのフィールドを柔軟に対応付けできます。

Shopifyの商品インポート画面で列見出しの順序を変更する操作

さらに、APIキーを利用すれば、CSVを介さずに直接商品登録を行うことも可能です。これにより、完全自動化された商品登録フローを構築でき、人的作業をほぼゼロに近づけることができます。

APIキーを利用してCSVを介さずShopifyへ直接商品登録するn8nワークフロー
まとめ

まとめ

StructFlowとn8nを組み合わせることで、PDFなどの非構造化データから簡単に商品情報を抽出し、Shopifyへ登録できる仕組みを構築できます。これにより、これまで手作業で行っていた入力作業を削減し、業務効率と正確性を大きく向上させることが可能です。特に商品数が多い企業ほどその効果は大きく、業務コスト削減にも直結します。EC化が進む現在、こうしたデータ活用の自動化は競争力を高める重要な要素となります。ぜひ本記事の内容を参考に、自社の業務改善に役立ててみてください。

技術サマリー
項目内容
使用サービスLDX hub — StructFlow
モデルazure/gpt-5.4-mini
オーケストレーションn8n(フォーム送信トリガー / Extract from PDF / Code ノード)
入力フルーツ・野菜カタログPDF(806文字)
出力商品情報 JSON(4,083文字 / 20商品)
抽出項目7項目(name / description / unit / unit-price / unit_price_value / product-category / sku)
カテゴリ体系Shopify Standard Product Taxonomy(breadcrumb形式)
連携先Shopify(CSVインポート / API 直接登録)