Instala la habilidad de la CLI belt:
npx skills add belt-sh/cli
Flujos de Trabajo de Automatización de IA
Construye flujos de trabajo automatizados de IA a través de la CLI de inference.sh.

Inicio Rápido
Requiere la CLI de inference.sh (
belt). Instrucciones de instalación
belt login
# Automatización simple: Genera una imagen diaria
belt app run falai/flux-dev --input '{
"prompt": "Fondo con cita inspiradora, diseño minimalista, fecha: '"$(date +%Y-%m-%d)"'"
}'
Patrones de Automatización
Patrón 1: Procesamiento por Lotes
Procesa múltiples elementos con el mismo flujo de trabajo.
#!/bin/bash
# batch_images.sh - Genera imágenes para múltiples indicaciones
PROMPTS=(
"Paisaje montañoso al amanecer"
"Olas del océano al atardecer"
"Sendero de bosque en otoño"
"Dunas del desierto de noche"
)
for prompt in "${PROMPTS[@]}"; do
echo "Generando: $prompt"
belt app run falai/flux-dev --input "{
\"prompt\": \"$prompt, fotografía profesional, 4K\"
}" > "output_${prompt// /_}.json"
sleep 2 # Límite de tasa
done
Patrón 2: Pipeline Secuencial
Encadena múltiples operaciones de IA.
#!/bin/bash
# content_pipeline.sh - Pipeline completo de creación de contenido
TOPIC="IA en la salud"
# Paso 1: Investigación
echo "Investigando..."
RESEARCH=$(belt app run tavily/search-assistant --input "{
\"query\": \"$TOPIC últimos avances\"
}")
# Paso 2: Escribir artículo
echo "Escribiendo artículo..."
ARTICLE=$(belt app run openrouter/claude-sonnet-45 --input "{
\"prompt\": \"Escribe una publicación de blog de 500 palabras sobre $TOPIC basada en: $RESEARCH\"
}")
# Paso 3: Generar imagen
echo "Generando imagen..."
IMAGE=$(belt app run falai/flux-dev --input "{
\"prompt\": \"Imagen de encabezado de blog para artículo sobre $TOPIC, moderna, profesional\"
}")
# Paso 4: Generar publicación social
echo "Creando publicación social..."
SOCIAL=$(belt app run openrouter/claude-haiku-45 --input "{
\"prompt\": \"Escribe un hilo de Twitter (5 tweets) resumiendo: $ARTICLE\"
}")
echo "¡Pipeline completado!"
Patrón 3: Procesamiento Paralelo
Ejecuta múltiples operaciones simultáneamente.
#!/bin/bash
# parallel_generation.sh - Genera múltiples activos en paralelo
# Inicia todos los trabajos en segundo plano
belt app run falai/flux-dev --input '{"prompt": "Imagen principal..."}' > hero.json &
PID1=$!
belt app run falai/flux-dev --input '{"prompt": "Imagen de característica 1..."}' > feature1.json &
PID2=$!
belt app run falai/flux-dev --input '{"prompt": "Imagen de característica 2..."}' > feature2.json &
PID3=$!
# Espera a que todos terminen
wait $PID1 $PID2 $PID3
echo "¡Todas las imágenes generadas!"
Patrón 4: Flujo de Trabajo Condicional
Ramifica según los resultados.
#!/bin/bash
# conditional_workflow.sh - Procesa basado en el análisis de contenido
INPUT_TEXT="$1"
# Analizar contenido
ANALYSIS=$(belt app run openrouter/claude-haiku-45 --input "{
\"prompt\": \"Clasifica este texto como: positivo, negativo o neutral. Devuelve solo la clasificación.\n\n$INPUT_TEXT\"
}")
# Ramificar según el resultado
case "$ANALYSIS" in
*positivo*)
echo "Generando imagen de celebración..."
belt app run falai/flux-dev --input '{"prompt": "Celebración, éxito, feliz"}'
;;
*negativo*)
echo "Generando mensaje de apoyo..."
belt app run openrouter/claude-sonnet-45 --input "{
\"prompt\": \"Escribe una respuesta de apoyo y ánimo para: $INPUT_TEXT\"
}"
;;
*)
echo "Generando acuse de recibo neutral..."
;;
esac
Patrón 5: Reintento con Respaldo
Maneja fallos con elegancia.
#!/bin/bash
# retry_workflow.sh - Reintenta operaciones fallidas
generate_with_retry() {
local prompt="$1"
local max_attempts=3
local attempt=1
while [ $attempt -le $max_attempts ]; do
echo "Intento $attempt..."
result=$(belt app run falai/flux-dev --input "{\"prompt\": \"$prompt\"}" 2>&1)
if [ $? -eq 0 ]; then
echo "$result"
return 0
fi
echo "Falló, reintentando..."
((attempt++))
sleep $((attempt * 2)) # Retroceso exponencial
done
# Respaldo a modelo diferente
echo "Usando modelo alternativo de respaldo..."
belt app run google/imagen-3 --input "{\"prompt\": \"$prompt\"}"
}
generate_with_retry "Una hermosa puesta de sol sobre las montañas"
Automatización Programada
Configuración de Cron
# Editar crontab
crontab -e
# Generación de contenido diario a las 9 AM
0 9 * * * /ruta/al/daily_content.sh >> /var/log/ai-automation.log 2>&1
# Informe semanal cada lunes a las 8 AM
0 8 * * 1 /ruta/al/weekly_report.sh >> /var/log/ai-automation.log 2>&1
# Cada 6 horas: contenido de redes sociales
0 */6 * * * /ruta/al/social_content.sh >> /var/log/ai-automation.log 2>&1
Script de Contenido Diario
#!/bin/bash
# daily_content.sh - Ejecutar diariamente a las 9 AM
DATE=$(date +%Y-%m-%d)
OUTPUT_DIR="/output/$DATE"
mkdir -p "$OUTPUT_DIR"
# Generar imagen de cita diaria
belt app run falai/flux-dev --input '{
"prompt": "Fondo de cita motivacional, minimalista, vibraciones matutinas"
}' > "$OUTPUT_DIR/quote_image.json"
# Generar consejo diario
belt app run openrouter/claude-haiku-45 --input '{
"prompt": "Dame un consejo de productividad accionable para hoy. Sé conciso."
}' > "$OUTPUT_DIR/daily_tip.json"
# Publicar en redes sociales (opcional)
# belt app run twitter/post-tweet --input "{...}"
echo "Contenido diario generado: $DATE"
Monitoreo y Registro
Envoltorio de Registro
#!/bin/bash
# logged_workflow.sh - Con registro exhaustivo
LOG_FILE="/var/log/ai-workflow-$(date +%Y%m%d).log"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
log "Iniciando flujo de trabajo"
# Rastrear tiempo de ejecución
START_TIME=$(date +%s)
# Ejecutar flujo de trabajo
log "Generando imagen..."
RESULT=$(belt app run falai/flux-dev --input '{"prompt": "prueba"}' 2>&1)
STATUS=$?
if [ $STATUS -eq 0 ]; then
log "Éxito: Imagen generada"
else
log "Error: $RESULT"
fi
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
log "Completado en ${DURATION}s"
Alertas de Error
#!/bin/bash
# monitored_workflow.sh - Con alertas de error
run_with_alert() {
local result
result=$("$@" 2>&1)
local status=$?
if [ $status -ne 0 ]; then
# Enviar alerta (webhook, correo, etc.)
curl -X POST "https://your-webhook.com/alert" \
-H "Content-Type: application/json" \
-d "{\"error\": \"$result\", \"command\": \"$*\"}"
fi
echo "$result"
return $status
}
run_with_alert belt app run falai/flux-dev --input '{"prompt": "prueba"}'
Automatización con SDK de Python
#!/usr/bin/env python3
# automation.py - Flujo de trabajo basado en Python
import subprocess
import json
from datetime import datetime
from pathlib import Path
def run_infsh(app_id: str, input_data: dict) -> dict:
"""Ejecuta la aplicación inference.sh y devuelve el resultado."""
result = subprocess.run(
["belt", "app", "run", app_id, "--input", json.dumps(input_data)],
capture_output=True,
text=True
)
return json.loads(result.stdout) if result.returncode == 0 else None
def daily_content_pipeline():
"""Genera contenido diario."""
date_str = datetime.now().strftime("%Y-%m-%d")
output_dir = Path(f"output/{date_str}")
output_dir.mkdir(parents=True, exist_ok=True)
# Generar imagen
image = run_infsh("falai/flux-dev", {
"prompt": f"Inspiración diaria para {date_str}, hermosa, edificante"
})
(output_dir / "image.json").write_text(json.dumps(image))
# Generar leyenda
caption = run_infsh("openrouter/claude-haiku-45", {
"prompt": "Escribe una leyenda inspiradora para una publicación de motivación diaria. 2-3 frases."
})
(output_dir / "caption.json").write_text(json.dumps(caption))
print(f"Contenido generado para {date_str}")
if __name__ == "__main__":
daily_content_pipeline()
Plantillas de Flujo de Trabajo
Automatización de Calendario de Contenido
#!/bin/bash
# content_calendar.sh - Genera una semana de contenido
TOPICS=("productividad" "bienestar" "tecnología" "creatividad" "liderazgo")
DAYS=("Lunes" "Martes" "Miércoles" "Jueves" "Viernes")
for i in "${!DAYS[@]}"; do
DAY=${DAYS[$i]}
TOPIC=${TOPICS[$i]}
echo "Generando contenido de $DAY sobre $TOPIC..."
# Imagen
belt app run falai/flux-dev --input "{
\"prompt\": \"Tema $TOPIC, motivación $DAY, estilo redes sociales\"
}" > "content/${DAY}_image.json"
# Leyenda
belt app run openrouter/claude-haiku-45 --input "{
\"prompt\": \"Escribe una publicación de motivación de $DAY sobre $TOPIC. Incluye hashtags.\"
}" > "content/${DAY}_caption.json"
done
Pipeline de Procesamiento de Datos
#!/bin/bash
# data_processing.sh - Procesa y analiza archivos de datos
INPUT_DIR="./data/raw"
OUTPUT_DIR="./data/processed"
for file in "$INPUT_DIR"/*.txt; do
filename=$(basename "$file" .txt)
# Analizar contenido
belt app run openrouter/claude-haiku-45 --input "{
\"prompt\": \"Analiza estos datos y proporciona ideas clave en formato JSON: $(cat $file)\"
}" > "$OUTPUT_DIR/${filename}_analysis.json"
done
Mejores Prácticas
- Límite de tasa - Añade demoras entre llamadas API
- Manejo de errores - Siempre verifica los códigos de retorno
- Registro - Rastrea todas las operaciones
- Idempotencia - Diseña para re-ejecuciones seguras
- Monitoreo - Alerta sobre fallos
- Copias de seguridad - Guarda resultados intermedios
- Tiempos de espera - Establece límites razonables
Habilidades Relacionadas
# Pipelines de contenido
npx skills add inference-sh/skills@ai-content-pipeline
# Pipelines RAG
npx skills add inference-sh/skills@ai-rag-pipeline
# Automatización de redes sociales
npx skills add inference-sh/skills@ai-social-media-content
# Habilidad completa de la plataforma
npx skills add inference-sh/skills@infsh-cli
Explora todas las aplicaciones: belt app list