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.mdet 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.mdd'un sous-agent), écrivez le fichier sous un autre nom et copiez-le aveccp. - 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.
- 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é) etpage.json(pour la compilation ; ne l'ouvrez pas). Sianalysis.mdexiste, le brouillon va dansanalysis.draft.md. brief.mda 1 ligne par élément : type, nombre de mots, statut (js_only,collapsed,not_in_a11y, ou rien pourok), texte, regroupés par candidatbNN.[g3#2]est la carte 2 du groupeg3.- 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.
- Options :
- Remplissez
work/analysis.md(jugement). Voir la section suivante. Écrivez en anglais, ou dans la langue demandée par l'utilisateur, avec son code danslanguage:. - 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 :
REFUSEDliste 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.
- Résultat : les 3 fichiers et
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.othernécessite une lignereason:. formality: 1 chiffre, de 1 à 5 (le rapport affiche "N of 5" ; non refusé).language: un code ISO ;ukdonne 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; faitsrisk_remover,outcome_number,customer_count,customer_n,testimonial_n,plan_n,guarantee,deadline. Déclarez-en une nouvelle sousvars: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.mustdevient 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 b04dans 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":avech3ettext. Utilisez le type le plus proche, ouother. - 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.htmlexiste.
Afficher le rapport
- Si l'utilisateur ou l'appelant a demandé de ne rien publier ou ouvrir, arrêtez-vous quand
report.htmlexiste et donnez son chemin. - Sinon, publiez
report.htmlsi cette session peut publier du HTML ; sinon, donnez son chemin absolu. - Le rapport s'ouvre en anglais avec un commutateur EN / UK ;
#lang=ukl'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.
| Code | Dites à l'utilisateur |
|---|---|
invalid_url, blocked_scheme, blocked_host, blocked_address | Ce n'est pas une adresse web publique. |
unreachable, http_error, blocked | Le 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. |
challenge | Un captcha ou une vérification anti-bot. Ne le contournez pas ; proposez la voie de la page sauvegardée. |
not_html, too_large, empty | Ce 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_ru | Non 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
| Fichier | Lire quand |
|---|---|
references/block-types.md | Vous n'êtes pas sûr d'un type de bloc. |
references/variables.md | Vous avez besoin d'une {variable} ou en ajouter une. |
references/analysis-schema.md | Vous avez besoin du format complet ou de la forme JSON. |