Nova Història

Una guia sobre com construir un gasoducte d'enriquiment de productes automatitzat alimentat per IA per a Shopify

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

Massa Llarg; Per llegir

Construirem un pipeline utilitzant Accions de GitHub per exportar els productes més recents de la botiga de Shopify, realitzar algunes accions utilitzant LLM i actualitzar els productes.
featured image - Una guia sobre com construir un gasoducte d'enriquiment de productes automatitzat alimentat per IA per a Shopify
Ankit P. HackerNoon profile picture


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
ShopifyAccions de GitHubLa botigaAparició de focPythonBash

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.ymldins 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_dispatchesdeveniment 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 potProgramar-lo per executar-lo automàticamenten un moment concret.

Programar-lo per executar-lo automàticament

API Keys

Claus de foc

Necessitaríem algunes claus API per completar la nostra configuració:OPENAI_API_KEYPer a les operacions iSHOPIFY_ACCESS_TOKENPer comunicar-se amb la nostra botiga.


Obteniu la clau API OpenAI des deEl teu compte obert,i posar-laCom un secret a GitHubObtenir un token d'accés de Shopify és complicat ja que cal crear una aplicació d'estúpida per fer-ho.Aquesta guia oficialPer obtenir un.

El teu compte obertCom un secret a GitHubAquesta guia oficial

ShopCTL

La botiga

Utilitzarem unaLínia de comandament de les einesper exportar i actualitzar els nostres productes. Creem una acció personalitzada que podem reutilitzar per a referència en el nostre pipeline.setup-shopctl.ymla l'interior del directori d'accions i afegir la següent configuració.

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.shopctla l'arrel del repo i afegir la següent configuració en un fitxer anomenat.shopconfig.ymlSubstituir tots els esdeveniments destore1amb 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í.

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.export-productsEn laenrich-products.ymlArxiu 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àLa botigaExportarà tots els productes creats en els últims 7 dies i els carregarà com a artefactes si existeixen nous productes.

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 elneedsSecció. 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 serTrobat aquí.

Trobat aquí

Stage 2b: Enrich Products

Fase 2b: Enriquiment de productes

Semblant a lareview-catalogtreball, afegir unenrich-products Treballque 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.

Treball


Generated enriched_products.csv file



El guió de mostres i el prompt poden serfound 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 utilitzantLa botigaUtilitzarem un script bash en lloc de Python en aquesta etapa.

La botiga


Afegir un treball anomenatupdate-productsCom 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.

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks