Nueva Historia

Guía sobre cómo construir un gasoducto automatizado de enriquecimiento de productos para Shopify

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

Demasiado Largo; Para Leer

Construiremos una pipeline usando GitHub Actions para exportar los productos más recientes de la tienda de Shopify, realizar algunas acciones usando LLM y actualizar los productos.
featured image - Guía sobre cómo construir un gasoducto automatizado de enriquecimiento de productos para Shopify
Ankit P. HackerNoon profile picture


Diseño de un flujo de trabajo totalmente automatizado para una tienda de Shopify

Diseño de un flujo de trabajo totalmente automatizado para una tienda de Shopify


Mantener una tienda de comercio electrónico exitosa viene con su justa cuota de desafíos. requiere atención constante a los detalles en constante cambio en todo el inventario, la experiencia del cliente y las actualizaciones de la plataforma. Con tantas piezas en movimiento, la supervisión manual puede convertirse rápidamente en abrumadora, propensas a errores y demoradas.


Es ahí donde entra la automatización, no sólo como una conveniencia, sino como una necesidad para mantener su tienda funcionando de manera eficiente y a escala.Mientras que Shopify ofrece un rico ecosistema de aplicaciones y interfaces de arrastre y descarga, a menudo requiere que el comercio de transparencia y control para la conveniencia.

Recuperar el control

¡Que los robots se preocupen por las cosas aburridas!

¡Que los robots se preocupen por las cosas aburridas!


Tarde o temprano, usted alcanzará los límites con aplicaciones fuera de la estantería y flujos de trabajo manuales y comenzará a buscar alternativas.Una de estas alternativas es cambiar de las herramientas centradas en la interfaz gráfica hacia tuberías programables que ofrecen flexibilidad y control completos.


  • Propiedad total de sus datos
  • Mejoras adaptadas a tu marca y productos
  • Flujos de trabajo compartidos: múltiples almacenes podrían usar el mismo flujo de trabajo con poco o ningún ajuste
  • Confianza en cada paso del proceso


Ahora, exploremos cómo podemos construir una tubería de CI automatizada para ayudar a mitigar los problemas mencionados anteriormente. Como prueba de concepto, crearemos una tubería para simplificar nuestro flujo de trabajo de contenido de producto. La tubería utilizará LLM para revisar los productos más recientes en nuestra tienda, optimizar el título, agregar el título y la descripción de SEO y generar un resumen para que el equipo lo revise.

El Stack

Aquí está lo que impulsa el flujo de trabajo:


  • Shopify – donde viven nuestros productos
  • Acciones de GitHub – para orquestación y automatización
  • ShopCTL – Una utilidad de línea de comandos para la gestión de la tienda de Shopify
  • OpenAI API – para revisar los títulos de productos, generar contenido SEO y proporcionar sugerencias
  • Python y algunos scripts Bash — para la lógica de enriquecimiento y actualizaciones
ShopifyAcciones de GitHubCompañíaApertura de fuegoPythonBash

Primeras cosas Primero - Establecimiento de la pila

Comencemos configurando un flujo de trabajo de acciones de GitHub. almacenaremos las configuraciones de tuberías en el.github/workflows/Crear un archivo con el nombreenrich-products.ymldentro del directorio de flujos de trabajo. Este archivo definirá trabajos para nuestro flujo de trabajo de contenido de producto.


# .github/workflows/enrich-products.yml

name: Shopify Product Enrichment

on:
  workflow_dispatch:


Elworkflow_dispatchevento en GitHub Actions le permite activar manualmente un flujo de trabajo desde la interfaz de GitHub o a través de la API, o puedePrograma para que se ejecute automáticamenteen un momento específico.

Programa para que se ejecute automáticamente

API Keys

Llaves de fuego

Necesitamos algunas claves de API para completar nuestra configuración:OPENAI_API_KEYPara las operaciones ySHOPIFY_ACCESS_TOKENPara comunicarse con nuestra tienda.


Obtenga la clave API de OpenAI desdetu cuenta abierta,y lo establececomo un secreto en githubObtener un token de acceso de Shopify es complicado ya que necesita crear una aplicación dummy para hacerlo.this official guidePara obtener uno.

tu cuenta abiertacomo un secreto en githubEsta guía oficial

ShopCTL

Compañía

Nosotros utilizaremos aHerramientas de línea de comandospara exportar y actualizar nuestros productos. Vamos a crear una acción personalizada que podamos reutilizar para la referencia en nuestra pipeline.setup-shopctl.ymlen el directorio de acciones y agregue la siguiente configuración.

Herramientas de línea de comandos


# .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"


Además de las acciones personalizadas, necesitamos agregar una configuración para la tienda que operamos.shopctlen la raíz del repo y agregue la siguiente configuración en un archivo llamado.shopconfig.ymlReemplazar todos los eventos destore1Con su aliado de tienda.


# shopctl/.shopcofig.yml

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


Finalizar el gasoducto

La fuente completa para el gasoducto se puede encontrar aquí.

La fuente completa para el gasoducto se puede encontrar aquí.

AquíAquí


Nuestro gasoducto tiene cuatro etapas, viz:Export -> Enrich -> Update -> Notify

Stage 1: Export Products

Fase 1: Exportación de productos

El primer paso en nuestra pipeline es exportar los productos más recientes de nuestra tienda.export-productsEn laenrich-products.ymlarchivo que hemos creado anteriormente.


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


El trabajo de arriba se crearáCompañíaExportará todos los productos creados en los últimos 7 días y los enviará como artefactos si existen nuevos productos.

Compañía

Stage 2a: Review Catalog

Etapa 2a: Revisión del catálogo

Lo siguiente que queremos hacer es revisar nuestro catálogo.Usaremos la API OpenAI para revisar muestras de datos de productos e identificar lo siguiente:


  • Problemas o inconsistencias en etiquetas, tipos de productos o variantes
  • Información inexistente o inconsistente de inventario
  • Lagunas en la configuración del producto o en la estructura de variantes
  • Productos duplicados o demasiado similares
  • Recomendaciones generales para mejorar la calidad del catálogo y su exhaustividad


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!"


Observa elneedsSección. Queremos ejecutarlo después de que los productos se exporten y estén disponibles como artefactos. También necesitamos configurar Python, ya que nuestro script de revisión está escrito en Python. Puedes usar cualquier idioma de tu elección aquí. El script generareview_summary.md, que se carga como un artefacto en el siguiente paso (exemplo de salida a continuación).


## 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 Sample Script y el Prompt pueden serfound here.

encontrado aquí

Stage 2b: Enrich Products

Fase 2b: Enriquecimiento de productos

Similar a lareview-catalogtrabajo, añade unenrich-products Trabajoque ejecutará el script para revisar el título del producto y generar un título SEO y descripción para el producto utilizando OpenAI. Este trabajo se ejecuta en paralelo con el trabajo de catálogo de revisión y genera un CSV con detalles sobre metadatos para actualizar.

Trabajo


Generated enriched_products.csv file



El Sample Script y el Prompt pueden serfound here.

encontrado aquí

Stage 3: Update Products

Fase 3: Actualización de productos

Una vez que los metadatos se generan en la etapa 2b, podemos actualizar productos utilizandoCompañíaUtilizaremos un script bash en lugar de Python en esta etapa.

Compañía


Agregar un trabajo llamadoupdate-productsComo se muestra más abajo.


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!"


El trabajo es relativamente simple; utiliza un script bash para leer del archivo CSV generado en el paso anterior, actualizar el producto usando ShopCTL y crear un archivo de registro.

Stage 4: Notify

Etapa 4: Notificaciones

Ahora, lo único que queda es notificar a los interesados que el trabajo ha sido completado (o fracasado) y qué ha cambiado.Usted puede enviar una notificación Slack o correo electrónico los detalles.


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


Poniéndolo todo juntos

El ejemplo anterior muestra cómo puede aprovechar las herramientas disponibles para crear algo único y potente, adaptado a su caso de uso, sin transferir datos de almacenamiento sensibles a aplicaciones externas.


Mientras que nuestra prueba de concepto salta sobre algunos elementos esenciales de la producción, como el uso de una tienda de estadios para aprobar manualmente y el manejo correcto de errores, le da una idea general de cómo empezar.

Takeaway

Este nivel de flexibilidad y control abre posibilidades ilimitadas: desde pruebas A/B automatizadas sobre copias de productos, flujos de trabajo de enriquecimiento en varios idiomas, experimentos de precios dinámicos y limpieza automática de inventarios hasta recomendaciones personalizadas y más allá.


Con cada paso en su control, puede experimentar con nuevas ideas, adaptarse rápidamente a los cambios del mercado y escalar las operaciones sin esfuerzo a medida que su negocio crece.

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks