惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
博客园_首页
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
酷 壳 – CoolShell
酷 壳 – CoolShell
Y
Y Combinator Blog
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
G
Google Developers Blog
Last Week in AI
Last Week in AI

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Tú Apruebas, la IA Publica: Circuito de Aprobación Humana...
jesus manriq · 2026-05-15 · via DEV Community

Tu pipeline ya genera copy y genera imágenes. El siguiente paso es la decisión más importante: ¿publicas o no?

El patrón "human-in-the-loop" es lo que separa un juguete de IA de una herramienta de producción real. El humano decide. La IA ejecuta. Y el canal más inmediato para esa decisión: WhatsApp.

La Arquitectura de Aprobación

IA genera copy + imagen → WhatsApp Preview (texto + imagen)
                              ↓
                         Tú respondes:
                    ┌──────┴──────┐
                   OK             NO (+ feedback)
                    ↓              ↓
              Publica en      Regenera con
              IG/TikTok       las correcciones
                    ↓              ↓
         WhatsApp: "✅       Vuelve a enviar
         Publicado"           preview

Enter fullscreen mode Exit fullscreen mode

Tiempo total de revisión: 30 segundos. Abres WhatsApp, ves la imagen, lees el copy. Si te gusta, "OK". Si no, "NO, cambia el tono a más técnico". La IA entiende el feedback en lenguaje natural.

Opciones de Integración WhatsApp

Opción A: Evolution API (recomendada para self-hosted)

Evolution API es un gateway WhatsApp open-source que expone una API REST limpia:

# Docker
docker run -d -p 8080:8080 atendai/evolution-api

# Enviar mensaje de texto
POST http://localhost:8080/message/sendText/evolution
Headers: apikey: YOUR_API_KEY
Body: {
  "number": "584140108660",
  "text": "📱 *Nuevo post listo para revisión:*\n\n{ copy }\n\n¿OK o NO?"
}

# Enviar imagen
POST http://localhost:8080/message/sendMedia/evolution
Headers: apikey: YOUR_API_KEY
Body: {
  "number": "584140108660",
  "mediatype": "image",
  "caption": "Preview del post",
  "media": "https://tu-servidor/images/preview.png"
}

Enter fullscreen mode Exit fullscreen mode

Opción B: Meta WhatsApp Cloud API (oficial)

Requiere un Meta Business Account verificado. Más burocrático pero más estable:

POST https://graph.facebook.com/v21.0/{phone_number_id}/messages
Headers: Authorization: Bearer {meta_token}
Body: {
  "messaging_product": "whatsapp",
  "to": "584140108660",
  "type": "image",
  "image": { "link": "https://tu-servidor/images/preview.png", "caption": "¿OK o NO?" }
}

Enter fullscreen mode Exit fullscreen mode

Opción C: Webhook directo a OpenClaw (la que usamos en esta serie)

Si tu asistente de IA ya está conectado a WhatsApp vía OpenClaw, el webhook n8n envía el preview y OpenClaw escucha tu respuesta:

// n8n → OpenClaw webhook
POST https://ai.guayoyo.tech/plugins/webhooks/approval
Body: {
  "action": "send_preview",
  "recipient": "+584140108660",
  "copy": "texto del post...",
  "image_url": "https://...",
  "brief_id": "post-2026-05-14-001"
}

Enter fullscreen mode Exit fullscreen mode

El Circuito en n8n

Nodo 1: Enviar Preview por WhatsApp

// HTTP Request → Evolution API
const preview = {
  number: "584140108660",
  text: `📱 *Nuevo post para revisar*\n\n${$json.hook}\n\n${$json.body}\n\n${$json.hashtags}\n\n${$json.cta}\n\n---\nResponde *OK* para publicar o *NO* + feedback`,
  delay: 500
};
// Si hay imagen, enviar primero la imagen y luego el texto

Enter fullscreen mode Exit fullscreen mode

Nodo 2: Esperar Respuesta (Webhook)

n8n expone un Webhook node que espera la respuesta:

Webhook Node (POST /approval-response)
  ↓
IF node: ¿El texto contiene "OK"?
  ├─ Sí → Continuar a publicación
  └─ No → Extraer feedback → Regenerar

Enter fullscreen mode Exit fullscreen mode

Configuración del Webhook en n8n:

  • Método: POST
  • Path: /approval-response
  • Response: { "status": "received" }

OpenClaw escucha tu WhatsApp y cuando respondes "OK" o "NO...", reenvía al webhook de n8n.

Nodo 3: Switch — OK o NO

const response = $input.first().json.body.toLowerCase();

if (response.includes("ok") && !response.includes("no ok")) {
  return [{ action: "publish", data: $input.first().json }];
} else {
  // Extraer feedback después de "NO"
  const feedback = response.replace(/^no[,\s]*/i, "").trim();
  return [{ action: "regenerate", feedback: feedback, data: $input.first().json }];
}

Enter fullscreen mode Exit fullscreen mode

Nodo 4: Timeout — 30 Minutos

Si no respondes en 30 minutos, el flujo guarda un borrador y te avisa:

// n8n Wait node configurado a 30 minutos
// Si expira sin respuesta:
const draft = {
  copy: $json.copy,
  image_url: $json.image_url,
  status: "draft_timeout",
  timestamp: new Date().toISOString()
};
// Guardar en base de datos o Google Sheet
// Enviar WhatsApp: "⏰ El post de las 10am quedó en borrador. Revísalo cuando puedas."

Enter fullscreen mode Exit fullscreen mode

Flujo Completo del Circuito

1. Agente genera copy + SD genera imagen
         ↓
2. WhatsApp Preview: "📱 Nuevo post para revisar"
         ↓
3. Webhook espera tu respuesta (timeout 30 min)
         ↓
    ┌────┴────┐
   OK         NO + feedback
    ↓          ↓
4a. Publicar   4b. Regenerar
    IG/TikTok    (volver al agente
    ↓            con el feedback)
5. WhatsApp:     ↓
   "✅ Listo"  Nuevo preview

Enter fullscreen mode Exit fullscreen mode

Por Qué WhatsApp y No un Dashboard

Dashboard Web WhatsApp
Requiere abrir navegador + login Ya lo tienes abierto
Tienes que ir a buscarlo Te llega solo
~2-3 minutos por revisión ~30 segundos por revisión
Solo en desktop En cualquier lado

La fricción mata la consistencia. Si publicar requiere 3 pasos extra, al tercer día dejas de hacerlo. Con WhatsApp, es un reflejo: ves, respondes, listo.

Seguridad: Solo Tú Apruebas

El webhook de aprobación solo acepta respuestas de tu número:

// En el webhook de OpenClaw
if (incoming.from !== "+584140108660") {
  return { status: "ignored", reason: "not_authorized" };
}

Enter fullscreen mode Exit fullscreen mode

Nadie más puede aprobar publicaciones. El circuito es humano, pero la seguridad es programática.


¿Listo para un pipeline de contenido donde tú decides y la IA ejecuta? En Guayoyo Tech construimos el circuito completo — desde la generación hasta la publicación, con tu aprobación en cada paso.