Suite de dos herramientas IA bajo el mismo servidor:
- TechValidator AI (
/validator.html) — Analiza videos de creadores (Reels / Shorts / TikTok) y te dice qué herramientas mencionan, cuáles vale la pena instalar y cuáles no. - Inbox Classifier (
/inbox.html) — Busca enyahoo.com.aupor remitente / asunto / tema / keywords, clasifica los emails en 17 ejes con Gemini, y los sube a Google Drive en carpetas por tema.
Página de inicio (/) es un hub con tarjetas para entrar a cada una.
Analiza lo que recomienda tu influencer favorito.
Descubre qué herramientas realmente valen la pena.
Ver Demo • Instalación • API • Contribuir
Los influencers de tecnología recomiendan decenas de herramientas cada semana:
- "Esta extensión de VS Code te cambiará la vida"
- "Este repo de GitHub tiene 50k estrellas"
- "Esta CLI tool acelera tu workflow 10x"
Tú las guardas... y nunca las revisas. O peor: instalas algo que está abandonado, tiene vulnerabilidades, o simplemente no sirve para tu caso.
TechValidator AI analiza videos de Instagram Reels, YouTube Shorts y TikTok con inteligencia artificial para:
- Extraer todas las herramientas, repos y tecnologías mencionadas
- Investigar cada una: mantenimiento, seguridad, pros/contras, alternativas
- Recomendar con un veredicto claro: ✅ INSTALAR / 🟡 EVALUAR / ❌ SALTAR
- Facilitar la instalación con comandos verificados
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Pega URL de │────▶│ Gemini 2.5 │────▶│ Veredicto + │
│ Instagram/YT │ │ analiza video │ │ Recomendación │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Input: URL de un Reel o video subido
Output: Lista de herramientas con análisis completo
| Feature | Descripción |
|---|---|
| 🎬 Análisis Multimodal | Gemini 2.5 Flash procesa el video completo |
| 🔍 Investigación Automática | Evalúa GitHub stars, mantenimiento, seguridad |
| ✅ Veredictos Claros | INSTALAR / EVALUAR / SALTAR para cada tool |
| 📋 Comandos Verificados | Copia y ejecuta directamente |
| 🌐 Multi-plataforma | Instagram, YouTube, TikTok, archivos locales |
| ⚡ Quick Wins | Herramientas que se instalan en < 5 minutos |
- Node.js 18+
- API Key de Gemini (gratis)
- API Key de RapidAPI para Instagram (opcional, gratis)
# Clonar
git clone https://github.com/takekaraka/techvalidator-ai.git
cd techvalidator-ai
# Instalar
npm install
# Configurar
cp .env.example .env
# Edita .env con tus API keys
# Ejecutar
npm startAbre http://localhost:3000
- Fork este repo
- Conecta en Render
- Configura variables de entorno:
GEMINI_API_KEYRAPIDAPI_KEY
- Deploy automático con Docker
| Método | Endpoint | Descripción |
|---|---|---|
GET |
/api/stats |
Estadísticas generales |
GET |
/api/analyses |
Lista de análisis |
POST |
/api/analyze/upload |
Subir video para análisis |
POST |
/api/analyze/url |
Analizar desde URL |
DELETE |
/api/analyses/:id |
Eliminar análisis |
curl -X POST https://tu-servidor.com/api/analyze/url \
-H "Content-Type: application/json" \
-d '{"url": "https://www.instagram.com/reel/ABC123/"}'techvalidator-ai/
├── server.js # API Express
├── lib/
│ ├── analyzer.js # Pipeline de análisis
│ ├── downloader.js # Descarga de videos
│ ├── gemini.js # Integración Gemini AI
│ └── config.js # Configuración
├── public/ # Frontend standalone
├── Dockerfile # Para Render/Docker
└── render.yaml # Config de Render
// lib/gemini.js línea 17
model = genAI.getGenerativeModel({ model: 'gemini-2.5-pro' });Extiende lib/downloader.js con nuevas funciones de descarga.
El frontend en public/ es vanilla HTML/CSS/JS. Personaliza libremente.
# Fork → Clone → Branch
git checkout -b feature/mi-mejora
# Desarrolla y commitea
git commit -m "Agregar nueva característica"
# Push → Pull Request
git push origin feature/mi-mejora- Backend: Node.js, Express
- AI: Google Gemini 2.5 Flash
- Video: yt-dlp, RapidAPI
- Frontend: Vanilla JS, CSS Custom Properties
- Deploy: Docker, Render
Creado por Renderz Studio
Powered by:
| Escenario | Cómo | Donde queda |
|---|---|---|
| Uso casero entre tu iPad y el iPhone de Isa | Script en Mac (LAN) | Mac de casa, accesible en la WiFi de tu hogar |
| Mac siempre encendida que arranca sola | LaunchAgent (después del script) | Tu Mac, sobrevive a reinicios |
| Deploy público (Render) accesible desde fuera de casa | Botón "Deploy to Render" arriba | onrender.com gratis (con Basic Auth obligatorio) |
bash <(curl -fsSL https://raw.githubusercontent.com/takekaraka/techvalidator-ai/claude/iphone-email-classifier-drive-zfQ6j/scripts/dev-mac.sh)Clona o actualiza el repo, instala dependencias, crea .env si falta, te imprime la IP de la Mac (para conectar desde el iPad/iPhone en la misma WiFi) y arranca el servidor. Para evitar que la Mac se duerma mientras corre:
caffeinate -dimsu &Una vez arriba, toda la configuración de credenciales se hace desde la propia PWA: abrís http://<IP-de-la-Mac>:3000/inbox.html en Safari y pegás Gemini key, email de Yahoo + App Password, y Google OAuth Client ID/Secret en los formularios de la sección "Guía de configuración". El servidor las persiste en data/runtime-config.json (gitignored) y las reinyecta como variables de entorno en caliente.
Una vez clonado el repo:
bash scripts/install-launchagent.shA partir de ahí, cada vez que enciendas/loguees la Mac, el server se levanta solo. Logs en ~/Library/Logs/renderz-inbox.{out,err}.log. Para deshabilitar: bash scripts/uninstall-launchagent.sh.
Tarda ~3 minutos. Render lee render.yaml, te crea el servicio y te pide rellenar las variables sensibles desde su dashboard. El BASIC_AUTH_PASS lo genera Render automáticamente — luego abrís el servicio → Environment → copiás la contraseña que generó. La URL pública queda en https://renderz-studio-tools.onrender.com (o el nombre que elijas).
⚠️ Free tier de Render duerme tras 15 min de inactividad. La primera request del día tarda ~30s en despertar.
Dentro de la PWA hay un botón "📲 Compartir con Isa" que muestra:
- Un QR generado en vivo (Isa apunta la cámara del iPhone y abre la URL en Safari).
- Botón para abrir WhatsApp con un mensaje pre-formateado.
- Botón para mandar por mail.
Añadí en .env:
BASIC_AUTH_USER=isa
BASIC_AUTH_PASS=algo-largo-y-único
Reinicia. Toda la app queda detrás de Basic Auth excepto /healthz.
Una segunda app dentro del mismo servidor: una PWA instalable en la pantalla de inicio del iPhone 17 que busca emails en yahoo.com.au por nombre, asunto, tema o palabras clave, los clasifica en 17 ejes con Gemini y, si se lo pides, los sube organizados a Google Drive (carpeta por tema + .eml + adjuntos).
- En Safari, abre
https://tu-servidor/inbox.html - Compartir → Añadir a pantalla de inicio
- Listo: queda como app standalone.
Yahoo no permite IMAP con tu contraseña normal. Necesitas una "Contraseña de aplicación".
- Login en https://login.yahoo.com con tu cuenta
@yahoo.com.au. - Entra a https://login.yahoo.com/account/security
- Activa la verificación en dos pasos (obligatorio para generar App Passwords).
- Click en "Generar y administrar contraseñas de aplicación".
- Escribe un nombre (ej.
TechValidator AI) → Generar. - Yahoo te mostrará la clave de 16 caracteres (formato
abcd-efgh-ijkl-mnop) una sola vez. Cópiala. - Pégala en
.env:YAHOO_EMAIL=tucuenta@yahoo.com.au YAHOO_APP_PASSWORD=abcd-efgh-ijkl-mnop - Reinicia el servidor.
- Abre https://console.cloud.google.com/
- Crear proyecto → nómbralo
TechValidator AI. - APIs y servicios → Biblioteca → busca Google Drive API → Habilitar.
- APIs y servicios → Pantalla de consentimiento → tipo Externo → completa nombre, email de soporte y email del desarrollador. Scope:
drive.file. - Credenciales → Crear credenciales → ID de cliente OAuth 2.0 → Tipo Aplicación web. URI de redirección autorizado:
(en producción, sustituye por tu dominio).
http://localhost:3000/api/auth/google/callback - Copia Client ID y Client Secret al
.env:GOOGLE_CLIENT_ID=... GOOGLE_CLIENT_SECRET=... GOOGLE_REDIRECT_URI=http://localhost:3000/api/auth/google/callback - Reinicia. En la PWA, pulsa "Conectar Google Drive" → consentimiento → vuelves a la app conectado.
/Inbox-Classified/
├── impuestos-au/
│ ├── 2026-04-02__Origin Energy__Your electricity bill.eml
│ └── invoice-march.pdf
├── viajes/
│ └── 2026-05-10__Qantas__Booking SYD-BCN.eml
└── personal/
└── 2026-05-18__Maria Lopez__Cumpleaños de Lucas.eml
| Eje | Para qué sirve |
|---|---|
| Remitente / contacto | Match exacto, dominio, autoridad (ato.gov.au ≠ linkedin.com) |
| Asunto literal | Substring case-insensitive |
| Keywords full-text | IMAP BODY search en servidor de Yahoo (no descarga todo) |
| Tema semántico | Gemini infiere el topic aunque no esté en el texto |
| Intención | informativo / acción-requerida / confirmación / promocional / personal / factura / viaje / seguridad |
| Urgencia | Heurística + LLM |
| Sentimiento | positivo / neutro / negativo |
| Idioma | ES / EN / … (para responder con plantilla correcta) |
| Entidades NER | Personas, organizaciones, fechas, importes |
| Adjuntos | Tipo + tamaño |
| Entidades AU | ABN, GST, BSB, TFN — pensado para yahoo.com.au |
| Importes A$ | Para deducciones / cierres de mes |
| Newsletter detect | Header List-Unsubscribe |
| Acciones sugeridas | responder / archivar / pagar / calendario / guardar-adjunto |
| Match score | Combina remitente (+3) + asunto (+3) + tema (+2) + cada keyword (+1) |
| Confianza | 0–1 del modelo, permite modo conservador |
| Carpeta sugerida | Nombre auto-derivado para Drive |
Si te falta configurar Yahoo o Drive, la app funciona igual con datos de ejemplo para que veas el flujo end-to-end. Los pills del header te dicen qué está conectado y qué no.
| Método | Endpoint | Descripción |
|---|---|---|
GET |
/api/mail/setup-status |
Estado de configuración + pasos guiados |
POST |
/api/mail/search |
Busca y clasifica emails |
POST |
/api/mail/upload |
Sube a Drive los emails seleccionados |
GET / POST / DELETE |
/api/mail/rules[/:id] |
Reglas guardadas |
GET |
/api/mail/history |
Historial de búsquedas y subidas |
GET |
/api/auth/google |
Inicia OAuth de Drive |
GET |
/api/auth/google/callback |
Callback OAuth |
MIT License — Usa, modifica y distribuye libremente.
Si TechValidator te ahorra horas de investigación:
¿Preguntas? → hola@renderz-studio.com