Habla con Marciano.
Un chat de verdad, con IA: pregúntale por hosting, dominios, correo o tu WordPress y te contesta en lenguaje llano. Mientras piensa pone cara de pensar, y al responder elige él mismo la expresión.
- Pensando mientras espera la respuesta
- Feliz / guiño en respuestas normales y consejos
- Enamorado si le das las gracias
- Triste si algo no funciona
- Sorprendido con algo inesperado
Abajo a la derecha tienes también la versión flotante, lista para ponerla en cualquier página.
← Todas las demosMarciano
Conectando…
Marciano puede equivocarse. Para precios, contratos o tu cuenta, contacta con el soporte de Hostarys.
Cómo funciona
El navegador habla con POST /api/chat, que llama a la API de Claude desde el servidor (la clave nunca llega al cliente) y devuelve la respuesta en streaming. Sin clave, el endpoint responde 503 y el chat usa el asistente sin conexión.
1. Variables de entorno
# apps/web/.env.local (en Vercel: Settings → Environment Variables)
ANTHROPIC_API_KEY=sk-ant-... # solo servidor, nunca NEXT_PUBLIC_
CLAUDE_MODEL=claude-haiku-5-5 # opcional2. Protocolo de expresiones
// El modelo empieza cada respuesta con dos etiquetas:
[[mood:happy]][[say:¡A por ese dominio!]]¡Buena idea...
// /api/chat las separa del texto (aunque lleguen
// partidas entre trozos) y las envía como eventos SSE:
event: mood data: {"mood":"happy"}
event: say data: {"text":"¡A por ese dominio!"}
event: delta data: {"text":"¡Buena idea..."}
event: done data: {"stopReason":"end_turn"}3. Personalidad
El prompt de sistema está en src/lib/chat/system-prompt.ts: tono, temas, reglas (no inventar precios ni compromisos, derivar al soporte de Hostarys) y el formato de etiquetas. Las expresiones válidas son dots, hearts, spiral, sleepy, cross, angry, surprised, happy, sad, wink y thinking; cualquier otra se convierte en dots.
4. Protecciones
- Máx. 20 mensajes de historial y 2.000 caracteres por mensaje; respuestas de 600 tokens como mucho.
- Mismo origen obligatorio y límite de 15 peticiones/minuto por IP (por instancia: en producción, añade una regla en Vercel Firewall).
- No se registra el contenido de los mensajes.
5. Chat flotante
// app/layout.tsx: el botón flotante en toda la web
import { MarcianoChatLauncher } from "@/components/chat";
<body>
...
<MarcianoChatLauncher />
</body>