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 Shopify Acciones de GitHub Compañía Apertura de fuego Python Bash 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 Crear un archivo con el nombre dentro del directorio de flujos de trabajo. Este archivo definirá trabajos para nuestro flujo de trabajo de contenido de producto. .github/workflows/ enrich-products.yml # .github/workflows/enrich-products.yml name: Shopify Product Enrichment on: workflow_dispatch: El evento en GitHub Actions le permite activar manualmente un flujo de trabajo desde la interfaz de GitHub o a través de la API, o puede en un momento específico. workflow_dispatch Programa para que se ejecute automáticamente Programa para que se ejecute automáticamente API Keys Llaves de fuego Necesitamos algunas claves de API para completar nuestra configuración: Para las operaciones y Para comunicarse con nuestra tienda. OPENAI_API_KEY SHOPIFY_ACCESS_TOKEN Obtenga la clave API de OpenAI desde y lo establece Obtener un token de acceso de Shopify es complicado ya que necesita crear una aplicación dummy para hacerlo. Para obtener uno. , tu cuenta abierta como un secreto en github this official guide tu cuenta abierta como un secreto en github Esta guía oficial ShopCTL Compañía Nosotros utilizaremos a para exportar y actualizar nuestros productos. Vamos a crear una acción personalizada que podamos reutilizar para la referencia en nuestra pipeline. en el directorio de acciones y agregue la siguiente configuración. Herramientas de línea de comandos setup-shopctl.yml 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. en la raíz del repo y agregue la siguiente configuración en un archivo llamado Reemplazar todos los eventos de Con su aliado de tienda. shopctl .shopconfig.yml store1 # 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. En la archivo que hemos creado anteriormente. 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 El trabajo de arriba se creará Exportará todos los productos creados en los últimos 7 días y los enviará como artefactos si existen nuevos productos. Compañía 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 el Secció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 genera , que se carga como un artefacto en el siguiente paso (exemplo de salida a continuación). 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 Sample Script y el Prompt pueden ser . found here encontrado aquí Stage 2b: Enrich Products Fase 2b: Enriquecimiento de productos Similar a la trabajo, añade un que 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. review-catalog enrich-products Trabajo Trabajo El Sample Script y el Prompt pueden ser . found 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 utilizando Utilizaremos un script bash en lugar de Python en esta etapa. Compañía Compañía Agregar un trabajo llamado Como se muestra más abajo. 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!" 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.