Qué hace
Toma un conjunto de plataformas de financiación y produce un plan: qué superficies mostrar,
en qué orden, con qué etiqueta y control de acceso. Hace referencia a cada plataforma mediante un
identificador canónico (p. ej., patreon: fedpromptly) y nunca almacena ni emite una
URL de pago en vivo, ID de cliente, clave publicable, ID de botón de compra o ID de comerciante.
Prerrequisitos
bashyjqenPATHreferences/funding-links.jsonpresentereferences/embeds.mdpresente (se explica por qué nunca se almacena HTML de inserción aquí)
Verificar entorno
Ejecutar antes que nada:
command -v jq && command -v bash
Si falta alguno, detenerse e informar: MISSING_DEP: jq.
Pasos
-
Confirmar que los datos de referencia están presentes:
test -f references/funding-links.json -
Para cada identificador de plataforma, buscar su entrada en el plan:
bash scripts/classify.sh "patreon:fedpromptly" -
Ensamblar el plan en este orden (recurrentes primero, únicos al final):
- GitHub Sponsors
- Patreon
- Ko-fi
- Buy Me a Coffee
- PayPal Subscription
- Stripe
- Crypto (NOWPayments)
-
Para cada entrada emitir:
label,handle,class,gateydisclosure(si corresponde). Nunca emitir una URL, clave o ID. -
Si un usuario te da una URL de pago en vivo, no la planifiques. Resuélvela al identificador canónico, planifícalo e informa
RESOLVED: <url> -> <handle>.
Nunca asumas
- Nunca emitas un ID de cliente, clave publicable, ID de botón de compra o ID de comerciante en un plan. El plan hace referencia a plataformas solo mediante identificadores canónicos.
- Nunca pongas una URL de pago en vivo en el plan. Solo páginas de aterrizaje canónicas.
- Nunca asumas que Patreon está retirado solo porque falta en una página determinada.
Reconcíliate contra
references/funding-links.jsonantes de emitir. - Nunca protejas un botón de pago con un control de edad. El pago no es contenido restringido por edad; si existe contenido para adultos, protégelo en el servidor, no en el botón.
- Nunca renderices HTML. El plan son datos.
- Nunca almacenes un ID de widget, ID de botón de compra o token de botón de imagen. Consulta
references/embeds.mdpara saber por qué la inserción de cada plataforma se mantiene fuera del repositorio.
Salida
Un plan de financiación: lista ordenada de {label, handle, class, gate, disclosure}.
Sin URLs, sin claves, sin IDs, sin HTML.
Manejo de errores
classify.shdevuelveUnknown→ informarUNCLASSIFIED: <handle>, detenerse.- Se detecta una credencial en vivo en cualquier archivo rastreado → informar
CREDENTIAL_LEAK: <path>, detenerse. references/funding-links.jsonno encontrado → informarMISSING_REF, detenerse.