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 Shopify Accions de GitHub La botiga Aparició de foc Python Bash 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 Crea un arxiu anomenat 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 # .github/workflows/enrich-products.yml name: Shopify Product Enrichment on: workflow_dispatch: El 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 en un moment concret. workflow_dispatch Programar-lo per executar-lo automàticament Programar-lo per executar-lo automàticament API Keys Claus de foc Necessitaríem algunes claus API per completar la nostra configuració: Per a les operacions i Per comunicar-se amb la nostra botiga. OPENAI_API_KEY SHOPIFY_ACCESS_TOKEN Obteniu la clau API OpenAI des de i posar-la Obtenir un token d'accés de Shopify és complicat ja que cal crear una aplicació d'estúpida per fer-ho. Per obtenir un. , El teu compte obert Com un secret a GitHub Aquesta guia oficial El teu compte obert Com un secret a GitHub Aquesta guia oficial ShopCTL La botiga Utilitzarem una per exportar i actualitzar els nostres productes. Creem una acció personalitzada que podem reutilitzar per a referència en el nostre pipeline. a l'interior del directori d'accions i afegir la següent configuració. Línia de comandament de les eines setup-shopctl.yml Línia de comandament de les eines # .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. a l'arrel del repo i afegir la següent configuració en un fitxer anomenat Substituir tots els esdeveniments de amb el teu aliat. shopctl .shopconfig.yml store1 # 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í. Aquí Aquí El nostre gasoducte té quatre etapes, vis: Export -> Enrich -> Update -> Notify Stage 1: Export Products Fase 1: Exportació de productes El primer pas en la nostra canonada és exportar els productes més recents de la nostra botiga. En la Arxiu que hem creat abans. export-products enrich-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 L'obra més amunt s'establirà Exportarà tots els productes creats en els últims 7 dies i els carregarà com a artefactes si existeixen nous productes. La botiga La botiga Stage 2a: Review Catalog Fase 2a: Revisió del catàleg La 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 el 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í. , que es carrega com a artefacte en el següent pas (exemple de sortida a continuació). needs 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 El guió de mostres i el prompt poden ser . Trobat aquí Trobat aquí Stage 2b: Enrich Products Fase 2b: Enriquiment de productes Semblant a la treball, afegir un que executarà el guió per revisar el títol del producte i generar un títol SEO i descripció per al producte utilitzant OpenAI. Aquest treball s'executa en paral·lel amb el treball de catàleg de revisió i genera un CSV amb detalls sobre les metadades per actualitzar. review-catalog enrich-products Treball Treball El guió de mostres i el prompt poden ser . found here Trobat aquí Stage 3: Update Products Fase 3: Actualització de productes Un cop generades les metadades a l'etapa 2b, podem actualitzar els productes utilitzant Utilitzarem un script bash en lloc de Python en aquesta etapa. La botiga La botiga Afegir un treball anomenat Com es mostra més avall. 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!" 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.