Go Public
Objectif : le workflow que l'utilisateur vient d'exécuter avec vous devient un lien qui fonctionne pour tout le monde : ils l'ouvrent, remplissent les entrées, appuient sur Exécuter et obtiennent le même type de résultat. Les visiteurs n'ont besoin d'aucun compte. La page est alimentée par une petite dotation quotidienne gratuite en IA.
Tout se fait via share.py dans le dossier de ce skill (Python 3, bibliothèque standard). <skill> ci-dessous désigne le dossier de ce skill.
1. Définir le workflow (demander, ne pas deviner)
À partir de la conversation, notez en 3 à 6 lignes et montrez à l'utilisateur :
- Le visiteur donne : chaque entrée (une zone de texte, un champ monoligne, ou un choix dans une liste).
- Les étapes : chaque appel IA dans l'ordre, et ce qu'il fait. La plupart des workflows ont 1 à 3 étapes. Utilisez les invites qui ont réellement fonctionné dans cette conversation, rédigées pour être compréhensibles sans contexte.
- Le visiteur obtient : les résultats des étapes qui sont affichés.
- Titre et une description d'une phrase qu'un inconnu comprendrait.
Demandez à l'utilisateur de confirmer ou de corriger. Demandez aussi dans quelle langue la page doit être si cela n'est pas évident.
Ne construisez pas de pages qui demandent des mots de passe, des paiements ou des informations de carte bancaire, des codes à usage unique, ou qui se font passer pour une autre entreprise ou personne. Ne mettez pas de données privées issues de la conversation (noms, e-mails, informations internes) dans les invites ou les exemples ; utilisez des exemples fictifs.
2. Écrire workflow.json
Dans le dossier actuel de l'utilisateur. Format :
{
"title": "Notes de réunion → email de suivi",
"description": "Collez des notes brutes de réunion. Obtenez les décisions, les responsables et un court email de suivi.",
"inputs": [
{"id": "notes", "label": "Vos notes de réunion", "type": "textarea", "placeholder": "Le désordre est accepté…"},
{"id": "tone", "label": "Ton", "type": "select", "options": ["Amical", "Formel"]}
],
"steps": [
{"id": "facts", "prompt": "Liste les décisions, les actions (responsable — tâche — date limite) et les questions ouvertes. Utilise uniquement ce que disent les notes. Texte brut, pas de Markdown.", "input": "{{notes}}", "show": true, "label": "Ce qui a été décidé"},
{"id": "email", "prompt": "Rédige un email de suivi sur un ton {{tone}}, en moins de 150 mots. Texte brut, pas de Markdown.", "input": "{{facts}}", "show": true, "label": "Email de suivi"}
],
"examples": [{"label": "Point produit", "values": {"notes": "lancement repoussé au 2 déc à cause d'un bug paiement. Raj corrige le bug d'ici vendredi…", "tone": "Amical"}}]
}
Règles :
type:textarea(par défaut),textouselect(nécessiteoptions). Les entrées sont obligatoires sauf si"required": false.{{id}}dansprompt,systemouinputest remplacé par une entrée ou la réponse d'une étape précédente. Placez le texte du visiteur dansinput, l'instruction dansprompt; unsystemoptionnel définit le rôle et les règles.show: trueaffiche cette étape. Les étapes masquées sont utiles pour le travail intermédiaire. La dernière étape affichée est diffusée en continu.maxTokenspar étape, par défaut 800 (c'est aussi la limite de la page).- Donnez toujours au moins un exemple : les visiteurs cliquent dessus pour voir la page fonctionner avant de taper.
- Les réponses sont affichées en texte brut, donc
**gras**apparaît avec des astérisques. Terminez chaque invite d'étape affichée par "Texte brut, pas de Markdown." et utilisez des tirets simples pour les listes.
3. Vérifier et essayer pour de vrai
python3 <skill>/share.py check workflow.json
python3 <skill>/share.py try workflow.json # exécute l'exemple 1 via l'IA réelle, affiche chaque étape
Lisez la sortie comme le ferait un inconnu. Si une étape est vague, erronée ou trop longue, corrigez l'invite et relancez try. Montrez à l'utilisateur le résultat final de l'exemple avant de publier.
4. Construire et publier
python3 <skill>/share.py build workflow.json page.html
python3 <skill>/share.py publish page.html
publish affiche le lien public. Il enregistre l'identifiant de la page et un jeton d'édition privé dans .go-public.json (et l'ajoute à .gitignore dans un dépôt git). Dites à l'utilisateur :
- le lien, prêt à être envoyé à n'importe qui ;
- que
.go-public.jsonest ce qui lui permet de modifier ou supprimer la page plus tard, donc qu'il doit le conserver et ne pas le partager.
Ne modifiez pas page.html à la main : changez workflow.json et reconstruisez.
5. Modifier ou supprimer plus tard
Modifiez workflow.json, puis exécutez build et publish à nouveau dans le même dossier : même lien, nouveau contenu. python3 <skill>/share.py delete la supprime.
Limites à exposer honnêtement quand elles surviennent
- Chaque page dispose d'une dotation quotidienne gratuite en IA et d'une limite de taux par visiteur (imprimée par
publish). Lorsqu'une page très sollicitée épuise sa dotation, elle l'indique et fonctionne à nouveau le lendemain. - Si l'utilisateur demande comment augmenter la limite ou voir l'utilisation : le
claim_urldans.go-public.jsonlui permet de revendiquer la page. Il entre un email, le confirme depuis sa boîte de réception, et la page fonctionne alors avec sa propre dotation. Mentionnez cela seulement lorsqu'il le demande ou que la dotation est épuisée. La petite marque "Made with OneTag · Report" reste sur chaque page. - Les visiteurs peuvent signaler une page ; une page signalée par plusieurs personnes est retirée pour examen.
- La page ne peut pas charger d'images, de polices ou de bibliothèques externes, et n'a ni stockage ni connexion : c'est un formulaire, des étapes IA et des résultats.