Communitygithub.com

Olexan-art/page-text-to-prompts

Découpe le texte d'une page web en blocs (hero, avantages, fonctionnement, témoignages, tarifs, FAQ, CTA, etc.) et génère une invite réutilisable par bloc. Chaque invite produit le même type de texte pour un produit différent, avec un exemple vérifié. Texte uniquement ; le design est ignoré. À utiliser lorsque l'utilisateur donne une URL et demande de décomposer ou rétro-ingénierer le texte d'une page d'accueil, de créer des invites par section, d'écrire un bloc similaire pour son site, ou de voir comment le texte d'un concurrent est rédigé.

Qu'est-ce que page-text-to-prompts ?

Ce skill extrait automatiquement les blocs de texte (hero, avantages, fonctionnement, témoignages, tarifs, FAQ, CTA, etc.) d'une page web publique, puis génère pour chaque bloc une invite (prompt) réutilisable, accompagnée d'un exemple vérifié. L'utilisateur n'a besoin que de fournir une URL ; les scripts Node.js (version 22+) analysent la page, produisent un brouillon, et l'utilisateur ou l'agent enrichit ce brouillon avec des jugements (type de bloc, ton, promesse, etc.) avant la compilation finale en invites markdown, HTML et JSON. Le skill est conçu pour les développeurs et agents IA (Claude Code, Cursor, Codex) qui souhaitent rétro-ingénierer des pages concurrentes ou créer des variantes de texte pour leurs propres sites. Il respecte des règles strictes : pas de répétition de 6 mots consécutifs de la page originale, pas de mention de la marque, pas de texte russe, et chaque bloc correspond exactement à un type valide. Les scripts ne font appel à aucun modèle d'IA et ne nécessitent ni installation, ni clé API, ni connexion ; ils lisent la page en 5 à 30 secondes et échouent proprement si la page est inaccessible, contient un captcha, ou est en russe.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Olexan-art/page-text-to-prompts/tree/HEAD/skills/page-text-to-prompts

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Version 1.008.

Texte de page en invites

Objectif

Les scripts lisent 1 page web et découpent son texte en blocs candidats. Vous rédigez un court fichier de jugement ; la compilation le transforme en invite et en exemple mesuré par bloc. Texte uniquement : 1 page publique, bureau, pas de connexion, pas de contournement de captcha, pas de texte dans les images.

Prérequis

  • Node 22 ou ultérieur. Aucune installation, aucune clé API. Exécutez les scripts dans dist/ depuis le dossier de ce skill.
  • Accès réseau depuis le shell.

Règles

  • R1. Ne demandez rien à l'utilisateur au préalable. Une URL suffit.
  • R2. Vos propres mots. Aucune ligne que vous écrivez ne peut répéter 6 mots consécutifs de la page, sans tenir compte de la casse ni de la ponctuation (overlap). Cela couvre tous les champs et tous les exemples.
  • R3. Ne mentionnez pas la marque du site : nom de domaine, og:site_name (brand). N'utilisez aucun nom provenant de la page.
  • R4. Écrivez analysis.md et chaque fichier d'entrée avec l'outil d'écriture de fichiers, jamais avec un heredoc shell. Si l'outil refuse (certains environnements refusent les fichiers .md d'un sous-agent), écrivez le fichier sous un autre nom et copiez-le avec cp.
  • R5. Ne refaites jamais le travail des scripts à la main. Ne comptez pas les mots ou les caractères. N'écrivez pas d'invites.
  • R6. N'inventez jamais de faits. N'écrivez jamais de texte russe. Les scripts n'appellent aucun modèle.

Procédure

Chaque chemin ci-dessous peut pointer vers n'importe quel emplacement accessible en écriture ; work/ est la valeur par défaut, pas une règle.

  1. Lecture (script). node dist/read.mjs <url> --out work/page.json
    • Options : --no-render (HTML source uniquement), --lang <code> (langue du brouillon).
    • Résultat : dans work/, brief.md (à lire), analysis.md (le brouillon, 1 en-tête par candidat avec un type deviné) et page.json (pour la compilation ; ne l'ouvrez pas). Si analysis.md existe, le brouillon va dans analysis.draft.md.
    • brief.md a 1 ligne par élément : type, nombre de mots, statut (js_only, collapsed, not_in_a11y, ou rien pour ok), texte, regroupés par candidat bNN. [g3#2] est la carte 2 du groupe g3.
    • Temps : 5 à 30 secondes. Le rendu s'arrête après 45 secondes et la lecture continue à partir du HTML.
    • En cas d'échec : REFUSED <code> (code de sortie 2) : arrêtez et informez l'utilisateur (voir Codes de refus). Si les scripts ne peuvent pas s'exécuter (pas de Node 22, pas de shell, pas de réseau), dites-le à l'utilisateur en 1 ligne et proposez la voie de la page sauvegardée.
  2. Remplissez work/analysis.md (jugement). Voir la section suivante. Écrivez en anglais, ou dans la langue demandée par l'utilisateur, avec son code dans language:.
  3. Compilation (script). node dist/build.mjs work/page.json work/analysis.md --html work/report.html --md work/page-prompts.md --json work/page-prompts.json
    • Résultat : les 3 fichiers et checks: 5 of 5 passed. Les exemples en dehors de leur plage ne sont que des avertissements.
    • En cas d'échec : REFUSED liste chaque problème avec sa vérification : overlap (R2), brand (R3), volume (pas de plage de mots), variables (variable non déclarée {name}), blocks (candidat manquant, inconnu ou utilisé deux fois), schema (champ manquant ou valeur non autorisée), ou une ligne qui ne peut pas être lue. Corrigez uniquement les lignes listées et relancez la compilation.

analysis.md

Prenez les nombres de mots de brief.md et écrivez des plages autour d'eux. Laissez de côté les plages de caractères.

language: en
example_product: a fictional booking app for small pilates studios
page_type: SaaS landing
audience: owners of small studios who take bookings by chat
awareness: comparing_solutions
tone: businesslike, warm; formality 2; you
promise: {product} gives {audience} {main_benefit} without {pain}.
logic: result and first step first, proof next, the steps before the prices
threads:
- the promise of no more calls returns in the hero, the steps and the closing call

## p01 hero | Hero | b01
role: say within five seconds what changes for the reader, and offer the first step
- eyebrow | 3-5 | the main change for the reader | No more booking calls
- h1 "Headline" | 7-11 | the result for {audience}, without the product's name | Clients reserve a reformer, and you stay with the class
- button | 2-4 | verb + object, the action {cta_action} | Set up bookings
- risk_line | 5-8 | {risk_remover} | Free to start, cancel at any time
techniques:
- Keep {product}'s name out of the headline; it first appears in the subheadline.
tone: businesslike, warm; you
avoid: "innovative"; a question as the headline

## p07 pricing | Pricing | b07
role: help the reader pick a plan and see the price fits the studio's size
- h2 | 4-8 | the price tied to the reader's size | Pay for the size you are
- 3 x plan "Plan":
  - h3 | 1-3 | the studio's size | Single room
  - price | 1-3 | {plan_n} | [price] / mo
  - items 3 | 2-6 | what is included, most important first | Self-service reservations / Client reminders / Card checkout
techniques:
- Name the plans after the studio's size, not after levels such as basic or pro.

Valeurs autorisées (la compilation refuse les autres) :

  • awareness : unaware, problem_aware, comparing_solutions, product_aware, ready_to_buy.
  • Type de bloc : hero, social_proof_logos, problem, solution, features, benefits, how_it_works, use_cases, testimonials, case_study, stats, comparison, pricing, faq, guarantee, about, team, cta, lead_form, newsletter, other. other nécessite une ligne reason:.
  • formality : 1 chiffre, de 1 à 5 (le rapport affiche "N of 5" ; non refusé).
  • language : un code ISO ; uk donne des invites en ukrainien, tout autre code des invites en anglais.
  • page_type : texte libre.
  • Variables : product, category, audience, language, pain, pain_n, main_benefit, benefit_n, feature_n, step_n, use_case_n, alternative, objection_n, cta_action ; faits risk_remover, outcome_number, customer_count, customer_n, testimonial_n, plan_n, guarantee, deadline. Déclarez-en une nouvelle sous vars: avec - name: what goes in, avec [fact] pour un fait.

Requis : language, example_product, page_type, audience, awareness, promise, logic ; par bloc un type, un nom, role, 1 élément ou plus, 1 technique ou plus.

Formats de ligne :

  • Élément : code "Label" | words | must | example. must devient cette ligne de l'invite.
  • Groupe : N x code "Label": avec des enfants indentés ; l'exemple est 1 carte. Les groupes ne s'imbriquent pas.
  • Liste : items N ; séparez les éléments d'exemple par /.
  • Joindre des candidats : | b03 b04 dans l'en-tête. En supprimer un : drop: b10 <reason> près du haut.

Règles les plus souvent enfreintes :

  • 1 bloc, 1 travail. Laissez de côté le texte décoratif (étiquettes de widgets, compteurs).
  • Chaque candidat va dans exactement 1 bloc ou est supprimé. Un candidat ne peut pas être divisé.
  • Un très grand candidat (par exemple un article de 1400 mots avec de nombreuses sous-sections) reste 1 bloc : écrivez ses sous-sections répétées comme 1 groupe, par exemple 5 x section "Section": avec h3 et text. Utilisez le type le plus proche, ou other.
  • Les techniques sont des instructions, pas des étiquettes : pas "utilise PAS" mais "nommez le problème en 1 phrase, son coût dans la deuxième, {product} dans la troisième". Seulement ce que le texte fait.
  • L'exemple est le bloc pour 1 produit fictif. Une plage approximative suffit.

Vérification

  • Chaque candidat est dans 1 bloc ou supprimé.
  • La compilation finale n'a affiché aucun REFUSED.
  • work/report.html existe.

Afficher le rapport

  • Si l'utilisateur ou l'appelant a demandé de ne rien publier ou ouvrir, arrêtez-vous quand report.html existe et donnez son chemin.
  • Sinon, publiez report.html si cette session peut publier du HTML ; sinon, donnez son chemin absolu.
  • Le rapport s'ouvre en anglais avec un commutateur EN / UK ; #lang=uk l'ouvre en ukrainien.

Résumé du chat

  • Le nombre de blocs, le squelette, 1 ou 2 techniques utiles.
  • Les notes de visibilité importantes : texte uniquement après JavaScript, réponses FAQ repliées.
  • Ne collez pas chaque invite. Si l'utilisateur a demandé 1 bloc, montrez son invite et son exemple.
  • Dites une fois : les blocs et le texte sont votre lecture ; les couches, les compteurs et les vérifications sont ceux des scripts.

Codes de refus

Voie de la page sauvegardée : node dist/read.mjs --file saved.html --url <address> --out work/page.json.

CodeDites à l'utilisateur
invalid_url, blocked_scheme, blocked_host, blocked_addressCe n'est pas une adresse web publique.
unreachable, http_error, blockedLe site n'a pas répondu ou a refusé les lecteurs automatisés (blocked : HTTP 401, 403 ou 429). Proposez la voie de la page sauvegardée.
challengeUn captcha ou une vérification anti-bot. Ne le contournez pas ; proposez la voie de la page sauvegardée.
not_html, too_large, emptyCe n'est pas une page web lisible, ou il n'y a pas de texte (probablement des images).
refused_ru_domain, refused_ru_hosting, refused_ru_audience, refused_language_ruNon analysé : une page en russe, ou un site dans la zone de domaine de la Russie, hébergé en Russie ou avec une version en langue russe. Décision de l'éditeur.

Références

FichierLire quand
references/block-types.mdVous n'êtes pas sûr d'un type de bloc.
references/variables.mdVous avez besoin d'une {variable} ou en ajouter une.
references/analysis-schema.mdVous avez besoin du format complet ou de la forme JSON.

Skills associés