Instale o skill belt CLI:
npx skills add belt-sh/cli
Fluxos de Trabalho de IA Automatizados
Construa fluxos de trabalho de IA automatizados via CLI do inference.sh.

Início Rápido
Requer a CLI do inference.sh (
belt). Instruções de instalação
belt login
# Automação simples: Gerar imagem diária
belt app run falai/flux-dev --input '{
"prompt": "Fundo para citação inspiradora, design minimalista, data: '"$(date +%Y-%m-%d)"'"
}'
Padrões de Automação
Padrão 1: Processamento em Lote
Processe múltiplos itens com o mesmo fluxo de trabalho.
#!/bin/bash
# batch_images.sh - Gerar imagens para múltiplos prompts
PROMPTS=(
"Paisagem montanhosa ao amanhecer"
"Ondas do mar ao pôr do sol"
"Caminho na floresta no outono"
"Dunas do deserto à noite"
)
for prompt in "${PROMPTS[@]}"; do
echo "Gerando: $prompt"
belt app run falai/flux-dev --input "{
\"prompt\": \"$prompt, fotografia profissional, 4K\"
}" > "output_${prompt// /_}.json"
sleep 2 # Limitação de taxa
done
Padrão 2: Pipeline Sequencial
Encadeie múltiplas operações de IA.
#!/bin/bash
# content_pipeline.sh - Pipeline completo de criação de conteúdo
TOPIC="IA na saúde"
# Passo 1: Pesquisa
echo "Pesquisando..."
RESEARCH=$(belt app run tavily/search-assistant --input "{
\"query\": \"$TOPIC últimos desenvolvimentos\"
}")
# Passo 2: Escrever artigo
echo "Escrevendo artigo..."
ARTICLE=$(belt app run openrouter/claude-sonnet-45 --input "{
\"prompt\": \"Escreva um post de blog de 500 palavras sobre $TOPIC baseado em: $RESEARCH\"
}")
# Passo 3: Gerar imagem
echo "Gerando imagem..."
IMAGE=$(belt app run falai/flux-dev --input "{
\"prompt\": \"Imagem de cabeçalho para artigo sobre $TOPIC, moderna, profissional\"
}")
# Passo 4: Gerar post social
echo "Criando post social..."
SOCIAL=$(belt app run openrouter/claude-haiku-45 --input "{
\"prompt\": \"Escreva um tópico no Twitter (5 tweets) resumindo: $ARTICLE\"
}")
echo "Pipeline concluído!"
Padrão 3: Processamento Paralelo
Execute múltiplas operações simultaneamente.
#!/bin/bash
# parallel_generation.sh - Gerar múltiplos assets em paralelo
# Iniciar todos os trabalhos em segundo plano
belt app run falai/flux-dev --input '{"prompt": "Imagem principal..."}' > hero.json &
PID1=$!
belt app run falai/flux-dev --input '{"prompt": "Imagem de recurso 1..."}' > feature1.json &
PID2=$!
belt app run falai/flux-dev --input '{"prompt": "Imagem de recurso 2..."}' > feature2.json &
PID3=$!
# Aguardar todos concluírem
wait $PID1 $PID2 $PID3
echo "Todas as imagens geradas!"
Padrão 4: Fluxo de Trabalho Condicional
Ramifique com base nos resultados.
#!/bin/bash
# conditional_workflow.sh - Processar baseado na análise de conteúdo
INPUT_TEXT="$1"
# Analisar conteúdo
ANALYSIS=$(belt app run openrouter/claude-haiku-45 --input "{
\"prompt\": \"Classifique este texto como: positivo, negativo ou neutro. Retorne apenas a classificação.\n\n$INPUT_TEXT\"
}")
# Ramificar baseado no resultado
case "$ANALYSIS" in
*positivo*)
echo "Gerando imagem de celebração..."
belt app run falai/flux-dev --input '{"prompt": "Celebração, sucesso, felicidade"}'
;;
*negativo*)
echo "Gerando mensagem de apoio..."
belt app run openrouter/claude-sonnet-45 --input "{
\"prompt\": \"Escreva uma resposta solidária e encorajadora para: $INPUT_TEXT\"
}"
;;
*)
echo "Gerando reconhecimento neutro..."
;;
esac
Padrão 5: Retry com Fallback
Lide com falhas de forma elegante.
#!/bin/bash
# retry_workflow.sh - Repetir operações com falha
generate_with_retry() {
local prompt="$1"
local max_attempts=3
local attempt=1
while [ $attempt -le $max_attempts ]; do
echo "Tentativa $attempt..."
result=$(belt app run falai/flux-dev --input "{\"prompt\": \"$prompt\"}" 2>&1)
if [ $? -eq 0 ]; then
echo "$result"
return 0
fi
echo "Falhou, tentando novamente..."
((attempt++))
sleep $((attempt * 2)) # Backoff exponencial
done
# Fallback para modelo diferente
echo "Usando modelo alternativo..."
belt app run google/imagen-3 --input "{\"prompt\": \"$prompt\"}"
}
generate_with_retry "Um lindo pôr do sol sobre montanhas"
Automação Agendada
Configuração de Cron Job
# Editar crontab
crontab -e
# Geração diária de conteúdo às 9h
0 9 * * * /caminho/para/daily_content.sh >> /var/log/ai-automation.log 2>&1
# Relatório semanal toda segunda-feira às 8h
0 8 * * 1 /caminho/para/weekly_report.sh >> /var/log/ai-automation.log 2>&1
# A cada 6 horas: conteúdo de redes sociais
0 */6 * * * /caminho/para/social_content.sh >> /var/log/ai-automation.log 2>&1
Script de Conteúdo Diário
#!/bin/bash
# daily_content.sh - Executar diariamente às 9h
DATE=$(date +%Y-%m-%d)
OUTPUT_DIR="/output/$DATE"
mkdir -p "$OUTPUT_DIR"
# Gerar imagem de citação diária
belt app run falai/flux-dev --input '{
"prompt": "Fundo para citação motivacional, minimalista, vibrações matinais"
}' > "$OUTPUT_DIR/quote_image.json"
# Gerar dica diária
belt app run openrouter/claude-haiku-45 --input '{
"prompt": "Dê-me uma dica de produtividade acionável para hoje. Seja conciso."
}' > "$OUTPUT_DIR/daily_tip.json"
# Postar em redes sociais (opcional)
# belt app run twitter/post-tweet --input "{...}"
echo "Conteúdo diário gerado: $DATE"
Monitoramento e Logging
Encapsulador de Logging
#!/bin/bash
# logged_workflow.sh - Com logging abrangente
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 fluxo de trabalho"
# Rastrear tempo de execução
START_TIME=$(date +%s)
# Executar fluxo de trabalho
log "Gerando imagem..."
RESULT=$(belt app run falai/flux-dev --input '{"prompt": "teste"}' 2>&1)
STATUS=$?
if [ $STATUS -eq 0 ]; then
log "Sucesso: Imagem gerada"
else
log "Erro: $RESULT"
fi
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
log "Concluído em ${DURATION}s"
Alertas de Erro
#!/bin/bash
# monitored_workflow.sh - Com alertas de erro
run_with_alert() {
local result
result=$("$@" 2>&1)
local status=$?
if [ $status -ne 0 ]; then
# Enviar alerta (webhook, e-mail, etc.)
curl -X POST "https://seu-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": "teste"}'
Automação com Python SDK
#!/usr/bin/env python3
# automation.py - Fluxo de trabalho baseado em Python
import subprocess
import json
from datetime import datetime
from pathlib import Path
def run_infsh(app_id: str, input_data: dict) -> dict:
"""Executa app do inference.sh e retorna o 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():
"""Gera conteúdo diário."""
date_str = datetime.now().strftime("%Y-%m-%d")
output_dir = Path(f"output/{date_str}")
output_dir.mkdir(parents=True, exist_ok=True)
# Gerar imagem
image = run_infsh("falai/flux-dev", {
"prompt": f"Inspiração diária para {date_str}, bonita, edificante"
})
(output_dir / "image.json").write_text(json.dumps(image))
# Gerar legenda
caption = run_infsh("openrouter/claude-haiku-45", {
"prompt": "Escreva uma legenda inspiradora para um post de motivação diária. 2-3 frases."
})
(output_dir / "caption.json").write_text(json.dumps(caption))
print(f"Conteúdo gerado para {date_str}")
if __name__ == "__main__":
daily_content_pipeline()
Modelos de Fluxo de Trabalho
Automação de Calendário de Conteúdo
#!/bin/bash
# content_calendar.sh - Gerar semana de conteúdo
TOPICS=("produtividade" "bem-estar" "tecnologia" "criatividade" "liderança")
DAYS=("Segunda" "Terça" "Quarta" "Quinta" "Sexta")
for i in "${!DAYS[@]}"; do
DAY=${DAYS[$i]}
TOPIC=${TOPICS[$i]}
echo "Gerando conteúdo de $DAY sobre $TOPIC..."
# Imagem
belt app run falai/flux-dev --input "{
\"prompt\": \"$TOPIC tema, $DAY motivação, estilo redes sociais\"
}" > "content/${DAY}_image.json"
# Legenda
belt app run openrouter/claude-haiku-45 --input "{
\"prompt\": \"Escreva um post de motivação para $DAY sobre $TOPIC. Inclua hashtags.\"
}" > "content/${DAY}_caption.json"
done
Pipeline de Processamento de Dados
#!/bin/bash
# data_processing.sh - Processar e analisar arquivos de dados
INPUT_DIR="./data/raw"
OUTPUT_DIR="./data/processed"
for file in "$INPUT_DIR"/*.txt; do
filename=$(basename "$file" .txt)
# Analisar conteúdo
belt app run openrouter/claude-haiku-45 --input "{
\"prompt\": \"Analise estes dados e forneça insights principais em formato JSON: $(cat $file)\"
}" > "$OUTPUT_DIR/${filename}_analysis.json"
done
Melhores Práticas
- Limitação de taxa - Adicione atrasos entre chamadas de API
- Tratamento de erros - Sempre verifique códigos de retorno
- Logging - Acompanhe todas as operações
- Idempotência - Projete para reexecuções seguras
- Monitoramento - Alerte sobre falhas
- Backups - Salve resultados intermediários
- Timeouts - Defina limites razoáveis
Skills Relacionados
# Pipelines de conteúdo
npx skills add inference-sh/skills@ai-content-pipeline
# Pipelines RAG
npx skills add inference-sh/skills@ai-rag-pipeline
# Automação de redes sociais
npx skills add inference-sh/skills@ai-social-media-content
# Skill completo da plataforma
npx skills add inference-sh/skills@infsh-cli
Navegue por todos os apps: belt app list