新しい歴史

A Guide on How to Build an AI-Powered Automated Product Enrichment Pipeline for Shopify に関するガイドライン

Ankit P.12m2025/04/27
Read on Terminal Reader

長すぎる; 読むには

GitHub Actions を使用してパイプラインを構築し、Shopify ストアから最新の製品を輸出し、LLM を使用していくつかのアクションを実行し、製品を更新します。
featured image - A Guide on How to Build an AI-Powered Automated Product Enrichment Pipeline for Shopify に関するガイドライン
Ankit P. HackerNoon profile picture


Shopify ストアのための完全に自動化されたワークフローの設計

Shopify ストアのための完全に自動化されたワークフローの設計


成功した電子商取引ショップを維持するには、その課題の公平な割合が伴います. それは、常に変化する詳細に常に注意を払う必要があり、在庫、顧客体験、プラットフォームのアップデート。


それが自動化の入り口である - 便利性だけでなく、あなたのストアを効率的かつスケール的に稼働させることの必要性です。Shopifyは、アプリケーションとドラッグ・アンド・ドロップ・インターフェイスの豊富なエコシステムを提供している一方で、しばしば透明性とコントロールを便利に取引する必要があります。

コントロールを取り戻す

ロボットが退屈なものを心配するようにしてください!

ロボットが退屈なものを心配するようにしてください!


遅かれ早かれ、あなたはオフ・ザ・シェルフのアプリケーションや手動のワークフローで限界に達し、代替案を探し始めるでしょう。そのような代替案の1つは、完全な柔軟性と制御を提供するプログラミング可能なパイプラインに向かって、GUI中心のツールから移行することです。


  • あなたのデータの完全な所有権
  • あなたのブランドと製品に合わせた改善
  • シェア可能なワークフロー:複数のストアは、ほとんど変更なしで同じワークフローを使用できます。
  • プロセスのあらゆるステップにおける信頼


今、私たちは、上記の問題を軽減するのに役立つ自動化されたCIパイプラインを構築する方法を調べましょう。コンセプトの証明として、私たちは製品コンテンツのワークフローを簡素化するパイプラインを作成します。

スタック

以下は、ワークフローを強化するもの。


  • Shopify - 私たちの製品が生きている場所
  • GitHub Actions — for orchestration and automation オリジナルタイトル
  • ShopCTL — Shopifyストア管理用のコマンドラインユーティリティ
  • OpenAI API - 製品タイトルを修正し、SEOコンテンツを生成し、提案を提供する
  • Python and some Bash scripts — for the enrichment logic and updates. PythonといくつかのBashスクリプト — for the enrichment logic and updates.
ShopifyGitHub アクションお買い物オープン APIPythonBash

First Things First - Set Up the Stack (ファースト・シティ・ファースト・シティ)

まずは GitHub Actions ワークフローを設定し、パイプライン構成をストレージにします。.github/workflows/ファイル名: ファイル名を作成するenrich-products.ymlこのファイルは、当社の製品コンテンツワークフローの仕事を定義します。


# .github/workflows/enrich-products.yml

name: Shopify Product Enrichment

on:
  workflow_dispatch:


THEworkflow_dispatchGitHub Actions でのイベントでは、GitHub インターフェイスからまたは API 経由でワークフローを手動で起動することもできます。自動的に実行するようにスケジュールする特定の時間に

自動的に実行するようにスケジュールする

API Keys

火の鍵

私たちの構成を完了するために、いくつかのAPIキーが必要になります。OPENAI_API_KEYAI オペレーションおよびSHOPIFY_ACCESS_TOKENお店とのコミュニケーション


OpenAI API キーを取得するオープンアカウント,and set itGitHubで秘密として. Shopify アクセス トークンを取得することは、それを実行するためにデュミー アプリを作成する必要があるため困難です。この公式ガイド1を手に入れる。

オープンアカウントGitHubで秘密としてこの公式ガイド

ShopCTL

お買い物

僕らはAを使うコマンドラインツール製品を輸出し、更新するために、パイプラインで参照するために再利用できるカスタムアクションを作成します。setup-shopctl.ymlアクション ディレクトリに入って、次の config を追加します。

コマンドラインツール


# .github/workflows/actions/setup-shopctl.yml

name: Setup ShopCTL
description: Installs Go and ShopCTL CLI
runs:
  using: "composite"
  steps:
    - name: Set up Go
      uses: actions/setup-go@v5
      with:
        go-version: "1.24"

    - name: Install ShopCTL
      shell: bash
      run: |
        sudo apt-get update
        sudo apt-get install -y libx11-dev
        go install github.com/ankitpokhrel/shopctl/cmd/shopctl@main
        echo "$HOME/go/bin" >> "$GITHUB_PATH"


カスタムアクションに加えて、私たちが運営しているストアの構成を追加する必要があります。shopctlrepo の root に、次のような config をファイルに追加します。.shopconfig.ymlすべてのイベントを置き換えるstore1お店のアリスで


# shopctl/.shopcofig.yml

ver: v0
contexts:
    - alias: store1
      store: store1.myshopify.com
currentContext: store1


パイプラインの完成

パイプラインの完全なソースはここで見つけることができます。

パイプラインの完全なソースはここで見つけることができます。

ここここ


私たちのパイプラインには4つの段階があり、 viz:Export -> Enrich -> Update -> Notify

Stage 1: Export Products

ステップ1:輸出製品

私たちのパイプラインの最初のステップは、当店から最新の製品を輸出することです。export-productsIN THEenrich-products.yml以前作成したファイルです。


jobs:
  export-products:
    runs-on: ubuntu-latest
    env:
      SHOPIFY_ACCESS_TOKEN: ${{ secrets.SHOPIFY_ACCESS_TOKEN }} # The secret we set earlier
      SHOPIFY_CONFIG_HOME: ${{ github.workspace }} # This will tell shopctl to use current dir to look for .shopconfig
    outputs:
      has-data: ${{ steps.check.outputs.has_data }}

    steps:
      - name: Checkout repo
        uses: actions/checkout@v3

      - name: Setup ShopCTL
        uses: ./.github/workflows/actions/setup-shopctl

      - name: Export products
        run: |
          mkdir -p data

          # Export latest data (last 7 days) using the shopctl tool as latest_products.tar.gz
          shopctl export -r product="created_at:>=$(date -v -7d +%Y-%m-%d)" -o data/ -n latest_products -vvv

      - name: Check if export has data
        id: check
        run: |
          if [ -s data/latest_products.tar.gz ]; then
            echo "has_data=true" >> "$GITHUB_OUTPUT"
          else
            echo "has_data=false" >> "$GITHUB_OUTPUT"
            echo "No products found to process"
          fi

      - name: Upload exported products
        if: steps.check.outputs.has_data == 'true'
        uses: actions/upload-artifact@v4
        with:
          name: exported-products
          path: data/latest_products.tar.gz


上の仕事は、設立します。お買い物以前作成したカスタムアクションを使用して、過去7日間で作成したすべての製品をエクスポートし、新しい製品が存在する場合、アーティファクトとしてアップロードします。

お買い物

Stage 2a: Review Catalog

ステップ2a:カタログレビュー

私たちはOpenAI APIを使用して製品データサンプルをレビューし、以下のことを特定します。


  • タグ、製品タイプ、または変数における問題または不一致
  • 欠如または不一致の記録情報
  • 製品構成または変数構造におけるギャップ
  • 複製または過度に類似した製品
  • カタログの品質と完全性を向上させるための一般的な勧告


review-catalog:
    needs: export-products
    runs-on: ubuntu-latest
    env:
      OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

    steps:
      - name: Checkout repo
        uses: actions/checkout@v3

      - name: Download product export
        uses: actions/download-artifact@v4
        with:
          name: exported-products
          path: data/

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.13"

      - name: Install dependencies
        run: pip install openai

      - name: Run catalog review script
        run: |
          # Assuming your script is saved in scripts/review_catalog.py
          python scripts/review_catalog.py \
            data/latest_products.tar.gz \
            data/review_summary.md

      - name: Upload catalog summary
        uses: actions/upload-artifact@v4
        with:
          name: catalog-review-summary
          path: data/review_summary.md

      - name: Final summary
        run: echo "✅ Shopify product catalog review completed!"


注目 Theneedsセクション. 我々は製品が輸出され、アーティファクトとして利用可能にされた後、それを実行したい。 我々はまた、我々のレビュースクリプトがPythonで書かれているので、Pythonを設定する必要があります。 あなたはここであなたの選択の言語を使用することができます。 スクリプトは生成しますreview_summary.md次のステップでアーティファクトとしてアップロードされます(下の例出力)。


## Identified Issues

### 1. Missing or Inconsistent Information:
- Some products have missing or inconsistent `productType` (e.g. `"gid://shopify/Product/8790718087392"`, `"gid://shopify/Product/879071795632


サンプルスクリプトとプロンプトは、found here.

ここで見つけた

Stage 2b: Enrich Products

ステージ2B:製品の豊かさ

同様に、review-catalog仕事, add anenrich-products 仕事スクリプトを実行して製品タイトルをレビューし、OpenAIを使用して製品のSEOタイトルと説明を生成します。この仕事はレビューカタログの仕事と並行して実行され、メタデータの詳細を含むCSVを生成します。

仕事


Generated enriched_products.csv file



サンプルスクリプトとプロンプトは、found here.

ここで見つけた

Stage 3: Update Products

ステップ3:製品の更新

ステージ 2b でメタデータが生成されると、製品を更新できます。お買い物この段階では、Python の代わりに bash スクリプトを使用します。

お買い物


呼ばれる仕事を追加update-products下に示す通り。


update-products:
    needs: enrich-products
    runs-on: ubuntu-latest
    env:
      SHOPIFY_ACCESS_TOKEN: ${{ secrets.SHOPIFY_ACCESS_TOKEN }}
      SHOPIFY_CONFIG_HOME: ${{ github.workspace }}

    steps:
      - name: Checkout repo
        uses: actions/checkout@v3

      - name: Setup ShopCTL
        uses: ./.github/workflows/actions/setup-shopctl

      - name: Download enriched products
        uses: actions/download-artifact@v4
        with:
          name: enriched-products
          path: data/

      - name: Apply updates using shopctl
        run: |
          mkdir -p logs
          touch logs/audit.txt

          while IFS=, read -r pid new_title seo_title seo_desc; do
            # Strip leading/trailing quotes
            seo_desc="${seo_desc%\"}"
            seo_desc="${seo_desc#\"}"

            # Use shopctl to update product details
            if output=$(shopctl product update "$pid" \
                --title "$new_title" \
                --seo-title "$seo_title" \
                --seo-desc "$seo_desc" 2>&1); then
                echo "$pid,success" >> logs/audit.txt
            else
              sanitized_error=$(echo "$output" | tr '\n' ' ' | sed 's/,/ /g')
              echo "$pid,failure,$sanitized_error" >> logs/audit.txt
            fi
          done < <(tail -n +2 data/enriched_products.csv)

        - name: Upload audit log
          uses: actions/upload-artifact@v4
          with:
            name: product-audit-log
            path: logs/audit.txt
  
        - name: Final summary
          run: echo "✅ Shopify product enrichment and updates completed!"


作業は比較的単純で、前段階で生成されたCSVファイルから読み取るためにバッシュスクリプトを使用し、ShopCTLを使用して製品を更新し、ログファイルを作成します。

Stage 4: Notify

ステップ4:通知

今、残っているのは、仕事が完了したこと(または失敗したこと)と何が変わったかを関心のある人に通知することだけです. あなたはSlackの通知を送信するか、または詳細を電子メールで送信することができます. We will simply pick up and print the logs for the tutorial's sake.


notify:
    needs: [review-catalog, update-products]
    runs-on: ubuntu-latest

    steps:
      - name: Download audit log
        uses: actions/download-artifact@v4
        with:
          name: product-audit-log
          path: logs/

      - name: Download catalog review
        uses: actions/download-artifact@v4
        with:
          name: catalog-review-summary
          path: data/

      - name: Print audit summary
        run: |
          ls -lah logs/
          ls -lah data/
          echo "🧾 Shopify Product Update Audit"
          echo "-------------------------------"

          total=$(wc -l < logs/audit.txt)
          updated=$(grep -c ',success' logs/audit.txt || true)
          failed=$(grep -c ',failure' logs/audit.txt || true)

          echo "✅ Success: $updated"
          echo "❌ Failed: $failed"
          echo "📦 Total Processed: $total"
          echo ""
          echo "📋 Detailed Audit:"
          cat logs/audit.txt

      - name: Print catalog review summary
        run: |
          echo ""
          echo "🧠 Catalog Review Summary"
          echo "-------------------------"
          cat data/review_summary.md


「Putting It All Together

上記の例では、利用可能なツールを活用して、あなたの使用例に合わせてユニークで強力なものを作成する方法を示していますが、機密ストレージデータを外部のアプリに転送することなく。


当社のコンセプトの証明書は、手動の承認と適切なエラー処理のためのステージストアを使用するなど、いくつかの生産レベルの必要事項を省略しますが、それはあなたがどのように開始するかについて一般的なアイデアを提供します。

Takeaway

この柔軟性とコントロールのレベルは、製品コピーの自動化によるA/Bテスト、複数の言語の豊富化ワークフロー、ダイナミックな価格実験、自動的な在庫清掃、パーソナライズされた推奨まで、無限の可能性を開きます。


あなたがコントロールする各ステップで、新しいアイデアを実験し、市場の変化に迅速に適応し、ビジネスが成長するにつれて簡単に事業を拡大することができます。

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks