Pipeline completo de publicação no LinkedIn: evaluator → redator → editor → art → director → publisher - Seed com 37 posts em _sugestoes.md - Sorteio de formato com N=3 bloqueados (format-history) - Reciclagem mensal de posts com rotação de formato - Revisão via Telegram com chat livre (Gemini 2.5 Flash) - Publicação via LinkedIn API (OAuth2) - Makefile com targets para Windows/Linux/ARM64 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
90 lines
3.5 KiB
Bash
90 lines
3.5 KiB
Bash
#!/usr/bin/env bash
|
|
# test-pipeline.sh — roda o pipeline completo sem postar no LinkedIn
|
|
# Usa workspace de teste separado para não contaminar o real.
|
|
#
|
|
# Uso: bash test-pipeline.sh [slug]
|
|
# slug: força um slug específico do _sugestoes.md (opcional)
|
|
#
|
|
# Para desfazer tudo depois: bash test-cleanup.sh
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
TEST_WS="$SCRIPT_DIR/workspace-test"
|
|
BINS="$SCRIPT_DIR/bin"
|
|
|
|
# Copiar _sugestoes.md para o workspace de teste
|
|
mkdir -p "$TEST_WS/_inbox"
|
|
cp "$SCRIPT_DIR/workspace/_inbox/_sugestoes.md" "$TEST_WS/_inbox/_sugestoes.md"
|
|
|
|
echo ""
|
|
echo "══════════════════════════════════════════════"
|
|
echo " ldpost — PIPELINE DE TESTE"
|
|
echo " Workspace: $TEST_WS"
|
|
echo "══════════════════════════════════════════════"
|
|
echo ""
|
|
|
|
# ── 1. Evaluator ──────────────────────────────────────────────────────────────
|
|
echo "▶ [1/5] Evaluator — sorteio + aprovação no Telegram..."
|
|
if [[ -n "${1:-}" ]]; then
|
|
EVALUATOR_FLAGS="--force-slug $1"
|
|
else
|
|
EVALUATOR_FLAGS=""
|
|
fi
|
|
|
|
SLUG=$("$BINS/ldpost-evaluator.exe" \
|
|
--workspace "$TEST_WS" \
|
|
$EVALUATOR_FLAGS \
|
|
2>&1 | tee /dev/stderr | tail -1)
|
|
|
|
if [[ -z "$SLUG" ]]; then
|
|
echo "❌ Evaluator não retornou slug. Abortando."
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo "✅ Slug criado: $SLUG"
|
|
echo ""
|
|
|
|
# ── 2. Redator ────────────────────────────────────────────────────────────────
|
|
echo "▶ [2/5] Redator — gerando rascunho via Groq..."
|
|
"$BINS/ldpost-redator.exe" \
|
|
--workspace "$TEST_WS" \
|
|
--post "$SLUG"
|
|
|
|
echo ""
|
|
|
|
# ── 3. Editor ─────────────────────────────────────────────────────────────────
|
|
echo "▶ [3/5] Editor — formatando para LinkedIn..."
|
|
echo " (modo não-interativo — use --no-interactive para pular loop)"
|
|
"$BINS/ldpost-editor.exe" \
|
|
--workspace "$TEST_WS" \
|
|
--post "$SLUG" \
|
|
--no-interactive
|
|
|
|
echo ""
|
|
|
|
# ── 4. Director ───────────────────────────────────────────────────────────────
|
|
echo "▶ [4/5] Director — revisão final no Telegram (sem imagens)..."
|
|
"$BINS/ldpost-director.exe" \
|
|
--workspace "$TEST_WS" \
|
|
--post "$SLUG" \
|
|
--skip-images
|
|
|
|
echo ""
|
|
|
|
# ── 5. Publisher (manual — não posta) ─────────────────────────────────────────
|
|
echo "▶ [5/5] Publisher — modo manual (NÃO posta no LinkedIn)"
|
|
echo " Quando pedir URL do post, pressione Enter para pular."
|
|
echo ""
|
|
"$BINS/ldpost-publisher.exe" \
|
|
--workspace "$TEST_WS" \
|
|
--post "$SLUG" \
|
|
--manual
|
|
|
|
echo ""
|
|
echo "══════════════════════════════════════════════"
|
|
echo " Pipeline de teste concluído!"
|
|
echo " Para limpar: bash test-cleanup.sh"
|
|
echo "══════════════════════════════════════════════"
|