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.
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_dispatch
GitHub Actions でのイベントでは、GitHub インターフェイスからまたは API 経由でワークフローを手動で起動することもできます。
API Keys
火の鍵私たちの構成を完了するために、いくつかのAPIキーが必要になります。OPENAI_API_KEY
AI オペレーションおよびSHOPIFY_ACCESS_TOKEN
お店とのコミュニケーション
OpenAI API キーを取得する
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"
カスタムアクションに加えて、私たちが運営しているストアの構成を追加する必要があります。shopctl
repo の 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-products
IN 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
上の仕事は、設立します。
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
サンプルスクリプトとプロンプトは、
Stage 2b: Enrich Products
ステージ2B:製品の豊かさ同様に、review-catalog
仕事, add anenrich-products
サンプルスクリプトとプロンプトは、
Stage 3: Update Products
ステップ3:製品の更新ステージ 2b でメタデータが生成されると、製品を更新できます。
呼ばれる仕事を追加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テスト、複数の言語の豊富化ワークフロー、ダイナミックな価格実験、自動的な在庫清掃、パーソナライズされた推奨まで、無限の可能性を開きます。
あなたがコントロールする各ステップで、新しいアイデアを実験し、市場の変化に迅速に適応し、ビジネスが成長するにつれて簡単に事業を拡大することができます。