¿Qué hace directory-launch-kit?
Objetivo: el usuario recibe una lista corta y honesta de directorios que encajan con su producto, copias listas para pegar en cada formulario, imágenes correctamente dimensionadas y un rastreador, y ellos realizan cada envío y pago. Esta habilidad nunca crea cuentas, envía formularios, paga, vota ni publica en nombre del usuario.
Paso 1 — Leer el producto, no inventarlo
Recopilar, desde el repositorio y el sitio en vivo (preguntar solo lo que falte):
| Campo | Dónde encontrarlo |
|---|---|
nombre, url (https:// en vivo, dominio propio) | metadatos del sitio, package.json, README |
| tagline (≤ 60 caracteres) y descripción (≤ 500) | hero de la página principal y meta descripción |
| precio | página de precios, exactamente como está escrito |
| ia / codigo_abierto / herramienta_desarrollador / skills_agente | lo que realmente es el producto |
| competidores | preguntar al usuario (SaaSHub los necesita) |
| comentario_del_creador | las propias palabras del usuario: redactarlo con él, nunca publicarlo por él |
| logo + 2–5 capturas de pantalla reales | public/, o capturar el sitio en vivo (Paso 3) |
Escribirlo en product.json usando assets/product.example.json como plantilla. Las reglas de copia están en references/copy-guide.md. Nunca añadir números, testimonios, recuentos de usuarios ni afirmaciones de "#1" que el usuario no pueda probar; los directorios las rechazan y los lectores dejan de confiar en la página.
Paso 2 — Verificar de nuevo los datos del directorio
python3 scripts/check_directories.py # OK / CAMBIADO / BLOQUEADO / CAIDO por directorio
references/directories.json registra la URL de envío de cada directorio, el costo observado, las reglas y la fecha en que se leyó. Antes de citar cualquier precio, abrir la página de ese directorio (navegador si está BLOQUEADO o CAMBIADO) y decir la fecha en que se leyó. Actualizar el JSON cuando algo haya cambiado.
Paso 3 — Capturas de pantalla reales
Usar capturas de pantalla del producto real, no maquetas. Si el sitio está en vivo, capturarlo:
npx playwright screenshot --viewport-size=1440,900 https://ejemplo.com captura-1.png
npx playwright screenshot --viewport-size=1440,900 https://ejemplo.com/precios captura-2.png
(o cualquier navegador a 1440×900). Mostrar el producto haciendo su trabajo: la pantalla principal, un resultado, los precios. Tamaños por plataforma: references/assets.md.
Paso 4 — Construir el kit
python3 scripts/make_kit.py --product product.json --out launch-kit
Escribe:
launch-kit/copy.md: una sección por directorio: URL de envío, costo observado y fecha, reglas, cada campo del formulario conn/límite, el comentario del creador. Los campos que excedan un límite se marcanSOBRE EL LÍMITEy el script termina con código 1: acortar el texto enproduct.jsoncon el usuario y volver a ejecutar. Nunca trunca.launch-kit/tracker.csv: id, directorio, url_envio, costo_observado, verificado, backlink_requerido, estado, enviado_en, url_listado, link_rel, notas. Volver a ejecutar conserva los estados ya registrados.launch-kit/images/:ph-thumbnail-240.png,logo-512.png,og-1200x630.png,gallery-N-1270x760.png,screenshot-N-1920x1080.png, con letterbox (nunca recortadas), cada una < 3 MB.
Los directorios que no encajan con el producto se omiten con el motivo (directorios solo de IA para productos que no son de IA, OpenAlternative para código cerrado, DevHunt para herramientas que no son para desarrolladores, marketplaces de skills para agentes a menos que agent_skills: true). Show HN recibe una advertencia si probar el producto requiere un registro.
Paso 5 — Ordenar los envíos (sin fechas, solo orden)
- Directorios gratuitos con largas colas de revisión primero (Fazier gratis, Dang.ai gratis, SaaSHub, Launching Next, Uneed gratis): sus colas avanzan mientras se termina el resto.
- Comunidades donde el usuario debe estar presente para responder (Show HN, Indie Hackers, Reddit, V2EX): uno a la vez, solo cuando el usuario pueda responder a los comentarios durante las próximas horas.
- Product Hunt: primero un borrador, lanzar cuando el usuario pueda estar en él todo el día.
- Actualizaciones de pago solo si el usuario decide que el precio vale la pena; listarlas con el precio observado y la fecha y dejar que el usuario elija. Nunca pagar ni introducir una tarjeta.
Directorios que requieren un backlink (marcados en copy.md): decir al usuario exactamente qué insignia/enlace quiere el directorio y dónde aparecerá en su sitio, y añadirlo solo si él acepta.
Paso 6 — Rastrear lo que se publicó
Después de que el usuario envíe, pegar cada URL de listado en tracker.csv. Luego:
python3 scripts/check_listing.py --tracker launch-kit/tracker.csv --domain ejemplo.com --write
marca las filas como en_vivo (con follow / nofollow), sin-enlace o error.
Reglas
- Nunca enviar, registrarse, pagar, votar, comentar o publicar por el usuario. Redactar; ellos actúan.
- BetaList ofrece una API de agente oficial que solo redacta borradores (betalist.com/agent): se puede crear el borrador solo si el usuario lo pide, luego entregarle el enlace de reclamo; ellos revisan, pagan y publican.
- SaaSHub pide explícitamente a los agentes de IA que dejen que el humano envíe: no automatizarlo.
- Sin anillos de votos, sin mensajes de "por favor voten", sin cuentas falsas. Product Hunt y HN penalizan estas prácticas.
- Citar precios solo como "observado el en ".
Archivos
scripts/make_kit.py: product.json → copy.md, tracker.csv, images/scripts/check_directories.py: verificación en vivo de cada página de directorio y precio registradoscripts/check_listing.py: confirmar que los listados enlacen al usuario, follow vs nofollowscripts/test_kit.py: autoprueba (sin conexión)references/directories.json: los datos (26 directorios, verificados 2026-11-03)references/directories.md: los mismos en una tabla legiblereferences/copy-guide.md: taglines, descripciones, títulos de Show HN, el comentario del creadorreferences/assets.md: tamaños de imagen por plataforma y cómo capturarlos
Listo cuando
-
product.jsoncontiene solo hechos del producto y las propias palabras del usuario -
check_directories.pyse ejecutó y las filas CAMBIADO/BLOQUEADO se leyeron manualmente -
make_kit.pytermina con código 0 (sin campos SOBRE EL LÍMITE) y las imágenes se abrieron y se ven correctas - El usuario tiene
copy.md,tracker.csveimages/, y conoce el orden de envío