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
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.yml
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
name: Shopify Product Enrichment
on:
workflow_dispatch:
Elworkflow_dispatch
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
API Keys
Llaves de fuegoNecesitamos algunas claves de API para completar nuestra configuración:OPENAI_API_KEY
Para las operaciones ySHOPIFY_ACCESS_TOKEN
Para comunicarse con nuestra tienda.
Obtenga la clave API de OpenAI desde
ShopCTL
CompañíaNosotros utilizaremos asetup-shopctl.yml
en el directorio de acciones y agregue la siguiente configuración.
# .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.shopctl
en la raíz del repo y agregue la siguiente configuración en un archivo llamado.shopconfig.yml
Reemplazar todos los eventos destore1
Con 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í.
Nuestro gasoducto tiene cuatro etapas, viz:Export -> Enrich -> Update -> Notify
Stage 1: Export Products
Fase 1: Exportación de productosEl primer paso en nuestra pipeline es exportar los productos más recientes de nuestra tienda.export-products
En laenrich-products.yml
archivo 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á
Stage 2a: Review Catalog
Etapa 2a: Revisión del catálogoLo 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 elneeds
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 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 ser
Stage 2b: Enrich Products
Fase 2b: Enriquecimiento de productosSimilar a lareview-catalog
trabajo, añade unenrich-products
El Sample Script y el Prompt pueden ser
Stage 3: Update Products
Fase 3: Actualización de productosUna vez que los metadatos se generan en la etapa 2b, podemos actualizar productos utilizando
Agregar un trabajo llamadoupdate-products
Como 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: NotificacionesAhora, 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.