Saltar al contenido

PopClip OpenRouter Writing Tools - 7 atajos de IA para tu texto seleccionado

Trabajar con IA para texto significa, en la práctica, abrir ChatGPT o Claude en otra ventana, pegar el texto, escribir un prompt (“corrige esto”, “tradúcelo al inglés”, “resúmelo”), copiar la respuesta y pegarla de vuelta donde estabas. Funciona, pero la fricción es real: cuatro o cinco saltos de contexto por cada operación trivial.

Para reducir todo eso a un clic he construido OpenRouter Writing Tools: una extensión gratuita y open source para PopClip que añade 7 acciones de IA al menú flotante. Selecciona texto en cualquier app, pulsa un botón y el texto se reemplaza por el resultado. Sin saltar de ventana, sin escribir prompts.

Toda la conexión se hace a través de OpenRouter, un proxy que te da acceso a los modelos de OpenAI y Google Gemini con una única API key. Sin mantener cuentas separadas, sin gestionar varias claves.

#BotónQué haceModelo
1CorrectCorrige ortografía, gramática y puntuación. Sin reescribir.openai/gpt-4o-mini
2TranslateTraduce. Por defecto modo auto: español ↔ inglés.google/gemini-2.5-flash
3SummarizeTexto largo → párrafo corto o lista de bullets.openai/gpt-4o-mini
4Improve email/messageLimpia, clarifica, elimina coletillas y repeticiones.google/gemini-2.5-pro
5Improve contentUne varios fragmentos pegados en un documento coherente y destaca lo importante en **negrita**.openai/gpt-4o
6Format HTMLConvierte texto plano en HTML semántico usando solo <h2>, <h3>, <h4>, <p>, <ol>, <ul>, <li>, <strong>, <u>.openai/gpt-4o
7Format MarkdownConvierte texto plano en Markdown limitado a ##, ###, ####, párrafos, listas 1. y - , **bold** y <u> para subrayado.openai/gpt-4o

Cada acción tiene su propia configuración interna (modelo, temperature, max tokens y system prompt afinados a la tarea). Los defaults están pensados para producir buena calidad sin gastar tokens innecesarios.

La acción Translate detecta el idioma del texto seleccionado y elige automáticamente el destino:

Texto seleccionadoResultado
Hola, ¿cómo estás? (español)Hello, how are you? (inglés)
Hello, how are you? (inglés)Hola, ¿cómo estás? (español)
Bonjour le monde (francés)Hello world (inglés)

Si quieres forzar siempre un idioma concreto, abres PopClip → Preferencias → Extensiones → OpenRouter Writing Tools y cambias el campo Target language de auto a german, french, italian, portuguese, japanese, etc. Para volver al modo automático escribes auto.

Estas dos acciones existen porque la mayoría de IAs tienden a vomitar todo el HTML del mundo (<div>, <span>, <style>, atributos class=, etc.) cuando solo quieres pegar algo limpio en un CMS, una nota o un email.

Los system prompts de estas tareas son estrictos: solo permiten las etiquetas listadas arriba. No usan <div>, no añaden atributos, no envuelven en <html> ni <body>, no usan bloques de código. Devuelven HTML semántico listo para pegar en WordPress, Notion HTML, Substack, Mail.app, Outlook o cualquier editor que acepte HTML.

Lo mismo para Markdown: nada de tablas, ni código, ni headings H1, ni blockquotes, ni separadores horizontales. Solo lo equivalente a las etiquetas HTML aprobadas, para que el resultado se vea coherente independientemente del renderer.

OpenRouter es un proxy con API compatible con OpenAI que te da acceso a los catálogos de OpenAI, Google, Anthropic, Meta, Mistral, DeepSeek, etc. con una única clave. Aquí lo limito a los modelos openai/* y google/gemini-*, suficientes para cubrir el espectro velocidad/calidad/precio que necesitan las 7 tareas.

Ventajas concretas:

  • Una sola API key que va en el panel de preferencias de la extensión, en lugar de gestionar credenciales por cada proveedor.
  • Modelos :free disponibles para pruebas (no consumen crédito).
  • Pricing transparente y sin contratos: pagas por token consumido a tu saldo de OpenRouter.
  • Failover automático entre proveedores si alguno cae (lo gestiona OpenRouter).

El único trade-off: OpenRouter cobra un markup del 5-10 % sobre el precio de cada modelo. Para el volumen de uso típico de una extensión personal de PopClip es irrelevante.

  1. Clona el repositorio o descarga el zip:

    Ventana de terminal
    git clone https://github.com/usblsb/popclip-openrouter-writing-tools.git
  2. Doble clic sobre la carpeta OpenRouterWritingTools.popclipext.

  3. PopClip pregunta si quieres instalarla → confirmar.

No hay dependencias externas: la extensión solo usa bash y python3, ambos preinstalados en macOS.

  1. Crea una cuenta en openrouter.ai (oauth con Google o GitHub).
  2. Genera una key en openrouter.ai/keys. Empieza por sk-or-v1-....
  3. Abre PopClip → Preferencias → Extensiones → OpenRouter Writing Tools.
  4. Pega la key en el campo OpenRouter API Key.
  5. (Opcional) Ajusta Response language (default auto, mantiene el idioma del input) y Target language del Translate (default auto, ES ↔ EN).

Con eso ya tienes los 7 botones funcionando en cualquier app donde selecciones texto.

Por defecto, OpenRouter puede reenviar tus prompts a los proveedores que entrenan con datos de usuario. Para desactivarlo, ve a openrouter.ai/settings/privacy y activa “Do not train”. Es una configuración a nivel de cuenta de OpenRouter, no de la extensión.

La extensión en sí no logea, no cachea, no envía nada a ningún sitio que no sea OpenRouter. Toda la lógica vive en un único script Python de unas 250 líneas que puedes auditar antes de instalar.

  • El click siempre pega el resultado. En esta versión no hay todavía un modo “shift+click = solo copiar al portapapeles” para casos en los que no quieras tocar la selección. Está en la lista para v2.
  • No hay streaming: la respuesta llega en bloque tras 1-5 segundos según tarea y longitud del texto.
  • Las 7 acciones siempre están visibles en el menú PopClip. Si alguna no la usas, puedes ocultarla globalmente desde PopClip → Preferencias → Apariencia → Acciones.
  • El catálogo de OpenRouter cambia. Si algún nombre de modelo desaparece, edita jl_writingtools.py y sustitúyelo. Los nombres actuales se consultan en openrouter.ai/models.

La extensión es MIT. Si la usas y echas en falta alguna tarea o quieres afinar algún prompt, abre un issue en el repo o haz fork — todos los system prompts viven al inicio del fichero jl_writingtools.py, fáciles de editar.