Ce qu'il fait
Prend un ensemble de plateformes de financement et produit un plan : quelles surfaces afficher,
dans quel ordre, avec quelle étiquette et quelle barrière. Il référence chaque plateforme par un
identifiant canonique (par ex. patreon: fedpromptly) et ne stocke ni n'émet jamais une
URL de paiement en direct, un ID client, une clé publiable, un identifiant de bouton d'achat ou un ID marchand.
Prérequis
bashetjqdans lePATHreferences/funding-links.jsonprésentreferences/embeds.mdprésent (explique pourquoi aucun HTML d'intégration n'est stocké ici)
Vérifier l'environnement
Exécutez avant toute chose :
command -v jq && command -v bash
Si l'un ou l'autre manque, arrêtez-vous et signalez : MISSING_DEP: jq.
Procédure pas à pas
-
Confirmer que les données de référence sont présentes :
test -f references/funding-links.json -
Pour chaque identifiant de plateforme, rechercher son entrée de plan :
bash scripts/classify.sh "patreon:fedpromptly" -
Assembler le plan dans cet ordre (abonnements récurrents en premier, dons uniques en dernier) :
- GitHub Sponsors
- Patreon
- Ko-fi
- Buy Me a Coffee
- PayPal Subscription
- Stripe
- Crypto (NOWPayments)
-
Pour chaque entrée, émettre :
label,handle,class,gateetdisclosure(si applicable). Ne jamais émettre une URL, une clé ou un ID. -
Si un utilisateur vous donne une URL de paiement en direct, ne la planifiez pas. Résolvez-la en l'identifiant canonique, planifiez celui-ci, et signalez
RESOLVED: <url> -> <handle>.
Ne jamais supposer
- Ne jamais émettre d'ID client, de clé publiable, d'identifiant de bouton d'achat ou d'ID marchand dans un plan. Le plan référence les plateformes uniquement par leur identifiant canonique.
- Ne jamais placer d'URL de paiement en direct dans le plan. Uniquement des pages de renvoi canoniques.
- Ne jamais supposer que Patreon est abandonné simplement parce qu'il est absent d'une page donnée.
Recouper avec
references/funding-links.jsonavant d'émettre. - Ne jamais barrer un bouton de paiement par une vérification d'âge. Le paiement n'est pas du contenu soumis à restriction d'âge ; si du contenu adulte existe, barrez le contenu côté serveur, pas le bouton.
- Ne jamais générer de HTML. Le plan est une donnée.
- Ne jamais stocker d'ID de widget, d'identifiant de bouton d'achat ou de jeton de bouton d'image. Voir
references/embeds.mdpour comprendre pourquoi l'intégration de chaque plateforme reste hors du dépôt.
Sortie
Un plan de financement : liste ordonnée de {label, handle, class, gate, disclosure}.
Pas d'URL, pas de clés, pas d'ID, pas de HTML.
Gestion des erreurs
classify.shrenvoieUnknown→ signalerUNCLASSIFIED: <handle>, arrêt.- Un identifiant de connexion en direct est détecté dans un fichier suivi → signaler
CREDENTIAL_LEAK: <path>, arrêt. references/funding-links.jsonmanquant → signalerMISSING_REF, arrêt.