Ir al contenido principal

Cómo Crear una Extensión de Chrome para Gestionar Prompts en ChatGPT

8 min

promptstack-extension es una extensión de Chrome desarrollada en TypeScript y HTML que integra una biblioteca interna de prompts directamente en ChatG...

📧¿Te gusta este contenido?

Únete a 547+ profesionales que reciben tips de IA cada semana. Sin spam, cancela cuando quieras.

promptstack-extension: Construyendo una biblioteca de prompts colaborativa en tu navegador 🚀

En los últimos años, el uso de herramientas de IA generativa como ChatGPT, Perplexity y GitHub Copilot se ha vuelto esencial en los flujos de trabajo de muchos equipos técnicos. Sin embargo, a medida que los prompts (instrucciones para la IA) se vuelven más complejos y personalizados, surge un nuevo reto: ¿cómo gestionamos, compartimos y reutilizamos prompts de forma eficiente y colaborativa dentro de una organización?

De esta necesidad nació promptstack-extension, una extensión de Chrome desarrollada en TypeScript y HTML que integra directamente una biblioteca interna de prompts en las plataformas de IA más populares. En este post, te cuento cómo diseñé e implementé la arquitectura, los retos técnicos que enfrenté y los aprendizajes de este proyecto, con el objetivo de inspirar a otros a construir soluciones que realmente impacten el día a día de los usuarios.


¿Por qué necesitábamos promptstack-extension?

En mi equipo, nos dimos cuenta de varios problemas recurrentes:

  • Redundancia: cada desarrollador escribía sus propios prompts desde cero, incluso para tareas comunes.
  • Desorganización: los prompts útiles se perdían en chats, wikis o documentos dispersos.
  • Escasa colaboración: compartir y mejorar prompts era un proceso manual y poco eficiente.
  • Falta de control: necesitábamos gestionar la visibilidad y el acceso a los prompts según equipos o dominios.

La solución debía ser rápida de acceder, integrada en las herramientas de IA y soportar colaboración avanzada (rating, comentarios, filtros, etc.). Ahí es donde una extensión de navegador cobraba mucho sentido: podía “inyectar” la funcionalidad justo donde los usuarios la necesitaban, sin interrumpir su flujo de trabajo.


Arquitectura general: Modularidad y escalabilidad como principios

Desde el inicio, opté por un diseño modular basado en las siguientes capas principales:

  1. Frontend de la extensión: UI responsiva hecha en HTML y TypeScript, usando Vite como build tool.
  2. Content scripts: módulos que interactúan directamente con el DOM de ChatGPT, Perplexity y GitHub Copilot para insertar prompts.
  3. Background script: maneja autenticación, almacenamiento local y comunicación con la API backend.
  4. API backend: (fuera del scope de este post, pero esencial), provee endpoints REST para gestionar prompts, usuarios, ratings, etc.
  5. Comunicación entre scripts: usando mensajes (chrome.runtime) para aislar responsabilidades y mantener la seguridad.

Diagrama simplificado

Loading diagram...

Esta arquitectura permite:

  • Escalar el soporte a nuevos sitios fácilmente
  • Separar lógica de UI, manipulación de DOM y autenticación
  • Facilitar el mantenimiento y testing


Decisiones técnicas clave

1. TypeScript + HTML: Robustez y compatibilidad

Elegí TypeScript para toda la lógica de la extensión. Sus ventajas:

  • Tipado fuerte: reduce bugs en tiempo de desarrollo.
  • Refactoring seguro: esencial para agregar features sobre una base estable.
  • Amplio soporte en extensiones Chrome (Manifest V3).

La UI la construí en HTML puro (con algo de CSS modular), priorizando velocidad de carga y simplicidad, dado que el espacio de las extensiones suele ser reducido.

2. Vite como herramienta de build

Vite permite recargar rápido en desarrollo y produce bundles optimizados para producción. Además, su soporte para TypeScript y configuración sencilla lo hace ideal para extensiones.

3. Manifest V3

Adopté Manifest V3 por las siguientes razones:

  • Más seguridad: scripts aislados, menor riesgo de XSS.
  • Mejor manejo de permisos: sólo se activan en los sitios soportados.
  • Comunicación eficiente entre scripts.

4. Inyección de prompts: Multi-sitio y resiliente

Cada plataforma (ChatGPT, Perplexity, Copilot) tiene su propio DOM y UX, así que diseñé content scripts adaptativos. Estos scripts detectan dinámicamente el textarea principal y permiten insertar el prompt seleccionado con un solo clic.

Ejemplo de snippet para insertar en ChatGPT:

typescript
1const textarea = document.querySelector('textarea');
2if (textarea) {
3 textarea.value = promptText;
4 textarea.dispatchEvent(new Event('input', { bubbles: true }));
5}

Este enfoque garantiza compatibilidad incluso si las plataformas cambian levemente su estructura.

5. Filtros avanzados y visibilidad granular

Los prompts pueden filtrarse por:

  • Tags
  • Dominio
  • Autor
  • Rating

Y cada prompt tiene un modo de visibilidad:

  • Organización
  • Equipo
  • Dominio
  • Privado
  • Custom (compartir explícitamente con usuarios/domínios)

Esto exigía manejar bien las relaciones de usuarios, equipos y permisos en el backend, y reflejarlo en una UI clara para el usuario.


Componentes principales

1. Popup UI

  • Búsqueda y filtrado instantáneo
  • Creación y edición de prompts con tags, dominio, visibilidad
  • Leaderboard de contribuyentes destacados
  • Rating y comentarios para fomentar la colaboración

2. Content Scripts

  • Detectan si el usuario está en un sitio soportado
  • Insertan prompts en el lugar adecuado
  • Mantienen la experiencia nativa del sitio

3. Background Script

  • Gestiona autenticación y headers (soporte para environments de desarrollo)
  • Sincroniza con el API backend
  • Almacena datos temporales en chrome.storage.local para performance

4. API Backend (referencia)

  • CRUD de prompts, ratings, comentarios
  • Control de visibilidad y permisos
  • Métricas de uso para el leaderboard


Retos técnicos y cómo los resolví

1. Compatibilidad con múltiples plataformas

Cada sitio tiene un DOM distinto y actualizaciones frecuentes. Para evitar roturas:

  • Implementé selectores robustos y fallback por atributos únicos.
  • Separé la lógica de inyección para cada plataforma en su propio módulo.
  • Añadí logs de errores detallados para detectar rápidamente cualquier incompatibilidad.

2. Sincronización en tiempo real

Para que los cambios (nuevos prompts, ratings, comentarios) se reflejaran instantáneamente:

  • Usé chrome.runtime.sendMessage para comunicación reactiva entre background y popup/content scripts.
  • Cacheé datos relevantes localmente y refrescaba bajo demanda.

3. Gestión de permisos y seguridad

  • Limité los permisos de la extensión a los dominios estrictamente necesarios.
  • Validé todos los datos del usuario antes de enviarlos al backend.
  • Utilicé tokens cortos para autenticación y los renovaba automáticamente.

4. Experiencia de usuario fluida

  • La UI responde en milisegundos gracias al cache local y la optimización de queries.
  • El diseño es minimalista y no interrumpe el flujo del usuario en ChatGPT, Perplexity o Copilot.
  • Añadí accesos rápidos (atajos de teclado) para power users.


Resultados e impacto

Tras desplegar la extensión en nuestro equipo técnico:

  • Ahorro de tiempo: reducción de ~30% en el tiempo dedicado a generar prompts repetitivos.
  • Mejora en la calidad: los prompts mejor valorados se reutilizan más, elevando el nivel general de output.
  • Colaboración real: los comentarios y ratings ayudaron a detectar y mejorar rápidamente los prompts más usados.
  • Escalabilidad: otros equipos (product, data science) empezaron a usar la extensión adaptando los prompts a sus dominios.


Lecciones aprendidas y futuras mejoras

Lo que funcionó bien

  • Integración nativa: los usuarios no necesitan cambiar de pestaña ni copiar/pegar manualmente.
  • Flexible y escalable: agregar nuevos sitios o tipos de visibilidad es sencillo gracias al diseño modular.
  • Colaboración incentivada: el leaderboard y los ratings motivan la participación activa.

Posibles mejoras

  • Soporte para más plataformas (ej. Notion, Slack AI).
  • Sincronización offline/online para usuarios con conectividad intermitente.
  • Sugerencias automáticas de prompts usando IA y contexto del usuario.
  • Más granularidad en permisos (ej. prompts temporales, expiración automática).


Conclusión

Desarrollar promptstack-extension fue una experiencia enriquecedora, donde el mayor reto fue equilibrar usabilidad, seguridad y escalabilidad en un entorno tan dinámico como el de las extensiones de navegador y las plataformas de IA generativa. Si tienes necesidades similares en tu equipo o quieres saber más, no dudes en contactarme (el repositorio es actualmente privado).

Si tienes preguntas técnicas, sugerencias o quieres compartir cómo gestionas tus prompts, ¡te leo en los comentarios!


👨‍💻 Javier Santos Criado Ingeniero de IA apasionado por crear herramientas que potencien el trabajo en equipo y la creatividad técnica.

¿Crees que estás sacando partido a la IA en tu empresa?

Si la respuesta no es un sí rotundo, te estás dejando horas, dinero y ventaja competitiva cada día que pasa. Mientras tú lo valoras, tu competencia ya lo está usando para moverse el doble de rápido.

Te implemento un sistema de IA que ahorra tiempo, reduce costes y aumenta ingresos: 100% adaptado a tu stack, tus datos y tus procesos. En 4-8 semanas tienes una primera versión funcionando, no dentro de seis meses.

📬

¿Te ha gustado? Hay más cada semana

Únete a "IA Sin Humo" — la newsletter donde comparto lo que realmente funciona en inteligencia artificial. Sin teoría innecesaria, sin postureo.

📚

1 Tutorial

Paso a paso, práctico

🛠️

3 Herramientas

Probadas y útiles

💡

0 Bullshit

Solo lo que importa

+547 suscriptores • Cada martes • Cancela cuando quieras

Javier Santos - Especialista en IA & Machine Learning

Javier Santos

Consultor de IA para empresas. Comparto contenido sobre inteligencia artificial, automatización y desarrollo cada semana.