Emoji Reactions

Botones de reacción con emojis para sus entradas. Una reacción por lector, recuentos opcionales, sin cookies y sin guardar IP en bruto.

Extensión

Emoji Reactions

Botones de reacción con emojis para sus entradas. Una reacción por lector, recuentos opcionales, sin cookies y sin guardar IP en bruto.

  • Categoría: reactions
  • Estado: Disponible
  • Versión: 0.2.1
  • Precio: Desconocido
  • Fuente: Registro oficial de plugins
  • Instalación: Plugin aislado del registro
  • Verificado: 2026-10-21

Descripción

Reactions añade botones de reacción con emojis (💗 🤔 😗 por defecto) a sus entradas. Cada lector elige una reacción por entrada: volver a hacer clic la quita, y hacer clic en otra la cambia.

Características

  • Hasta 6 botones, configurados desde la página de administración (key=emoji:label).
  • Etiquetas opcionales junto a cada emoji y recuentos públicos opcionales.
  • Una página de administración que lista sus 10 entradas con más reacciones.
  • La página de administración sigue el idioma de la administración (inglés o japonés).
  • Sin base de datos adicional: los datos residen en el almacenamiento EmDash propio del plugin.
  • No solicita permisos ni acceso a la red.

Privacidad

  • Los lectores se reconocen mediante un hash SHA-256 de su dirección IP y de su User-Agent con una sal aleatoria por sitio. La IP y el User-Agent en sí nunca se guardan.
  • Se guarda por cada voto: el ID de la entrada, el hash, la reacción elegida y una marca de tiempo. Sin cookies.

Nota: el plugin no muestra nada por sí solo. Tras instalarlo, añada el componente Reactions.astro a la plantilla de sus entradas (véase Instalación).

Requisitos

  • EmDash 1.x en Cloudflare (D1)
  • Plan Workers Paid (los plugins en sandbox se ejecutan en el enlace Worker Loader)

Instalación

1. Instalar el plugin

Instale Reactions desde esta página con Open in EmDash, o compílelo desde el código fuente:

pnpm install
pnpm run build   # dist/

Al compilar desde el código fuente, añada el paquete a su sitio (pnpm add file:../emdash-plugin-emoji-reactions) y enumérelo en astro.config.mjs bajo sandboxed: [reactions].

2. Activar el sandbox de plugins

Los plugins en sandbox necesitan el enlace Worker Loader. En wrangler.jsonc (comentado en las plantillas):

"worker_loaders": []

Asegúrese de que src/worker.ts exporta PluginBridge (las plantillas *-cloudflare ya lo hacen) y de que astro.config.mjs establece sandboxRunner: sandbox().

3. Añadir los botones a la plantilla de entradas (obligatorio)

Copie site-snippets/Reactions.astro en src/components/ y colóquelo en la página de su entrada:

---
import Reactions from "../../components/Reactions.astro";
// `post` comes from getEmDashEntry()
---

Use post.data.id (el ID de la base de datos), no post.id (el slug). Los slugs cambian cuando se renombra una entrada, y los slugs traducidos contienen /, que el plugin rechaza.

Propiedades: contentId (obligatoria), heading (una cadena vacía la oculta), label (nombre accesible del grupo de botones). Establezca --rx-accent en su CSS para que coincida con su color de acento.

4. Elegir los botones

Abra Reactions en la barra lateral de la administración y edite el campo, por ejemplo:

love=💗:Love, hmm=🤔:Hmm, whistle=😗:Whoa

Hasta 6 entradas. Las claves empiezan por una letra minúscula. Los recuentos se guardan por clave: renombrar una clave inicia un botón nuevo; quitar una la oculta pero conserva sus recuentos.

Preguntas frecuentes

Los botones no aparecen en mi sitio

  1. Compruebe que Reactions.astro está añadido a la plantilla de sus entradas. El plugin en sí no muestra nada.
  2. Abra la consola del navegador. Los fallos se registran como [reactions] state: HTTP 403 CSRF_REJECTED ....
  3. Si copió dist/ en su sitio en lugar de instalar el paquete, compruebe que dist/index.mjs contiene "routes". Sin eso, EmDash trata las rutas públicas como privadas y rechaza las solicitudes.

¿Puedo ocultar los recuentos?

Sí. Desactive Show counts en la página de administración. Los recuentos también se omiten entonces de la API pública, por lo que no pueden leerse desde la página. Se siguen contando y siguen siendo visibles para usted en la página de administración.

Dos personas de mi casa/oficina cuentan como un solo lector

Los lectores detrás de la misma IP con el mismo navegador se tratan como uno. Es un botón de reacción informal, no un sistema de votación.

¿Pueden hacer spam con el botón?

Cada lector tiene una reacción por entrada, así que los clics repetidos solo la alternan. Las rutas, sin embargo, son públicas. Si hace falta, añada una regla de Cloudflare Rate Limiting para /_emdash/api/plugins/reactions/react.

¿Funciona en el desarrollo local?

Sí. Cuando no hay una IP de cliente disponible, el navegador envía en su lugar un ID aleatorio guardado en localStorage (rx-visitor).

Seguridad

Informar de una vulnerabilidad

Informe de los problemas de seguridad de forma privada a través de la notificación privada de vulnerabilidades de GitHub, no en issues públicos.

A qué puede acceder el plugin

  • Sin permisos ni acceso a la red. El plugin no puede leer ni cambiar su contenido, medios, usuarios o ajustes fuera de su propio almacenamiento, y no puede llamar a otros servicios.
  • Solo guarda datos en su propio almacenamiento EmDash: los recuentos por entrada, un registro por voto y los ajustes de sus botones.

Datos guardados sobre los lectores

  • Un hash SHA-256 truncado de la dirección IP y del User-Agent del lector, combinado con una sal aleatoria por sitio. La dirección IP y el User-Agent en sí nunca se guardan.
  • Por cada voto: el ID de la entrada, ese hash, la reacción elegida y una marca de tiempo. Sin cookies.

Rutas públicas

state (GET) y react (POST) son públicas. Ambas validan su entrada: contentId debe coincidir con [A-Za-z0-9_\-:.], las reacciones deben ser una clave configurada y los cuerpos de las solicitudes están limitados a 1 KB. La ruta de administración es privada. Para limitar los abusos, añada una regla de Cloudflare Rate Limiting para /_emdash/api/plugins/reactions/react.

Registro de cambios

0.2.1 — 2026-10-18

  • Se añadió el icono del registro.

0.2.0 — 2026-10-15

Primera versión en el registro de plugins de EmDash.

  • Interruptores Show labels y Show counts en la página de administración. Las etiquetas están ocultas por defecto y se conservan como información emergente y texto para lectores de pantalla. Con los recuentos ocultos, la API pública también los omite.
  • Requiere EmDash 1.x. Los ajustes de los botones pasan a ctx.settings; los botones guardados en la 0.1.x se conservan.
  • La página de administración sigue el idioma de la administración (inglés o japonés). Las etiquetas predeterminadas ahora están en inglés (Love / Hmm / Whoa); las claves no cambian, así que los recuentos existentes siguen asociados.
  • Reactions.astro: registra los fallos en la consola del navegador en lugar de ocultarlos en silencio, añade una propiedad label y la variable CSS --rx-accent, y documenta el paso de post.data.id.
  • pnpm run test ahora termina con una compilación, de modo que dist/ siempre incluye las declaraciones de las rutas públicas.

0.1.0

  • Versión inicial (no publicada en el registro).