Enginyeria d'un flux de treball completament automatitzat per a una botiga de Shopify
Enginyeria d'un flux de treball completament automatitzat per a una botiga de Shopify
El manteniment d'una botiga de comerç electrònic d'èxit ve amb la seva justa proporció de reptes. requereix una atenció constant als detalls en constant canvi a través de l'inventari, l'experiència del client i les actualitzacions de la plataforma.
És aquí on entra l'automatització, no només com a conveniència, sinó com a necessitat per mantenir la vostra botiga funcionant de manera eficient i a escala.Mentre que Shopify ofereix un ric ecosistema d'aplicacions i interfícies de desplaçament, sovint requereix que comercieu transparència i control per conveniència.
Recuperar el control
Deixeu que els robots es preocupin per les coses avorrides!
Deixeu que els robots es preocupin per les coses avorrides!
Tard o d'hora, arribaràs als límits amb les aplicacions fora de la taula i els fluxos de treball manuals i començaràs a buscar alternatives.Una d'aquestes alternatives és canviar d'eines centrades en la interfície gràfica cap a canonades programables que ofereixen flexibilitat i control complet.
- Propietat plena de les seves dades
- Millores adaptades a la teva marca i productes
- Fluxos de treball compartits: múltiples botigues podrien utilitzar el mateix flux de treball amb pocs o cap ajust
- Confiança en cada pas del procés
Ara, anem a explorar com podem construir una canonada de CI automatitzada per ajudar a mitigar els problemes esmentats anteriorment. Com a prova de concepte, crearem una canonada per agilitzar el nostre flux de treball de contingut del producte. La canonada utilitzarà LLM per revisar els productes més recents a la nostra botiga, optimitzar el títol, afegir títol i descripció SEO, i generar un resum per a l'equip per revisar.
El Stack
Això és el que impulsa el flux de treball:
- Shopify - on viuen els nostres productes
- Accions de GitHub - per a l'orquestració i l'automatització
- ShopCTL — Una utilitat de línia de comandes per a la gestió de la botiga de Shopify
- OpenAI API - per revisar els títols de productes, generar contingut SEO i proporcionar suggeriments
- Python i alguns scripts de Bash - per a la lògica d'enriquiment i actualitzacions
Primeres coses primer - Establir la pila
Comencem per configurar un flux de treball d'accions de GitHub. Emmagatzemarem les configuracions de la canonada en el.github/workflows/
Crea un arxiu anomenatenrich-products.yml
dins del directori de fluxos de treball. Aquest fitxer definirà els llocs de treball per al nostre flux de treball de contingut de producte.
# .github/workflows/enrich-products.yml
name: Shopify Product Enrichment
on:
workflow_dispatch:
Elworkflow_dispatch
esdeveniment en GitHub Actions li permet desencadenar manualment un flux de treball des de la interfície de GitHub o a través de l'API, o pot
API Keys
Claus de focNecessitaríem algunes claus API per completar la nostra configuració:OPENAI_API_KEY
Per a les operacions iSHOPIFY_ACCESS_TOKEN
Per comunicar-se amb la nostra botiga.
Obteniu la clau API OpenAI des de
ShopCTL
La botigaUtilitzarem unasetup-shopctl.yml
a l'interior del directori d'accions i afegir la següent configuració.
# .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"
A més de les accions personalitzades, necessitem afegir una configuració per a la botiga que operem.shopctl
a l'arrel del repo i afegir la següent configuració en un fitxer anomenat.shopconfig.yml
Substituir tots els esdeveniments destore1
amb el teu aliat.
# shopctl/.shopcofig.yml
ver: v0
contexts:
- alias: store1
store: store1.myshopify.com
currentContext: store1
Finalització del gasoducte
La font completa de la canonada es pot trobar aquí.
La font completa de la canonada es pot trobar aquí.
El nostre gasoducte té quatre etapes, vis:Export -> Enrich -> Update -> Notify
Stage 1: Export Products
Fase 1: Exportació de productesEl primer pas en la nostra canonada és exportar els productes més recents de la nostra botiga.export-products
En laenrich-products.yml
Arxiu que hem creat abans.
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
L'obra més amunt s'establirà
Stage 2a: Review Catalog
Fase 2a: Revisió del catàlegLa següent cosa que volem fer és revisar el nostre catàleg. Utilitzarem l'API OpenAI per revisar mostres de dades de productes i identificar el següent:
- Problemes o inconsistències en etiquetes, tipus de producte o variants
- Manca o inconsistència d'informació d'inventari
- Gaps en la configuració del producte o en l'estructura de les variants
- Productes duplicats o massa similars
- Recomanacions generals per millorar la qualitat del catàleg i la seva completesa
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!"
Observeu elneeds
Secció. Volem executar-lo després que els productes s'exportin i es facin disponibles com a artefactes. També necessitem configurar Python, ja que el nostre guió de revisió està escrit en Python. Podeu utilitzar qualsevol idioma de la vostra elecció aquí.review_summary.md
, que es carrega com a artefacte en el següent pas (exemple de sortida a continuació).
## Identified Issues
### 1. Missing or Inconsistent Information:
- Some products have missing or inconsistent `productType` (e.g. `"gid://shopify/Product/8790718087392"`, `"gid://shopify/Product/879071795632
El guió de mostres i el prompt poden ser
Stage 2b: Enrich Products
Fase 2b: Enriquiment de productesSemblant a lareview-catalog
treball, afegir unenrich-products
El guió de mostres i el prompt poden ser
Stage 3: Update Products
Fase 3: Actualització de productesUn cop generades les metadades a l'etapa 2b, podem actualitzar els productes utilitzant
Afegir un treball anomenatupdate-products
Com es mostra més avall.
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!"
La tasca és relativament simple; utilitza un script bash per llegir el fitxer CSV generat en l'etapa anterior, actualitzar el producte utilitzant ShopCTL i crear un fitxer de registre.
Stage 4: Notify
Etapa 4: NotificacióAra, l'única cosa que queda és notificar als interessats que la feina s'ha completat (o fracassat) i el que ha canviat. Podeu enviar una notificació de Slack o enviar un correu electrònic els detalls.
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
Posant-ho tot junts
L'exemple anterior mostra com podeu aprofitar les eines disponibles per crear alguna cosa única i potent, adaptada al vostre cas d'ús, sense transmetre dades sensibles d'emmagatzematge a aplicacions externes.
Mentre que la nostra prova de concepte passa per sobre d'alguns elements essencials de nivell de producció - com l'ús d'una botiga d'escenari per a les aprovacions manuals i el maneig adequat d'errors - li dóna una idea general de com començar.
Trobada
Aquest nivell de flexibilitat i control obre possibilitats il·limitades: des de les proves A/B automatitzades de còpies de productes, fluxos de treball d'enriquiment multilingüe, experiments de preu dinàmic i neteja automàtica d'inventari fins a recomanacions personalitzades i més enllà.
Amb cada pas en el vostre control, podeu experimentar amb noves idees, adaptar-vos ràpidament als canvis del mercat i escalar les operacions sense esforç a mesura que creix el vostre negoci.