Versión 1.008.
Page text to prompts
Propósito
Los scripts leen 1 página web y dividen su texto en bloques candidatos. Escribes un breve archivo de juicio; la compilación lo convierte en un prompt y un ejemplo medido por bloque. Solo texto: 1 página pública, escritorio, sin inicio de sesión, sin evitar captchas, sin texto en imágenes.
Requisitos
- Node 22 o posterior. Sin instalación, sin API key. Ejecuta los scripts en
dist/desde la carpeta de esta habilidad. - Acceso a red desde el shell.
Reglas
- R1. No le preguntes nada al usuario primero. Una URL es suficiente.
- R2. Palabras propias. Ninguna línea que escribas puede repetir 6 palabras consecutivas de la página, ignorando mayúsculas, minúsculas y puntuación (
overlap). Esto cubre cada campo y cada ejemplo. - R3. No menciones la marca del sitio: nombre de dominio,
og:site_name(brand). No uses ningún nombre de la página. - R4. Escribe
analysis.mdy cada archivo de entrada con la herramienta de escritura de archivos, nunca con un heredoc del shell. Si la herramienta se niega (algunos entornos rechazan archivos.mdde un subagente), escribe el archivo con otro nombre y cópialo concp. - R5. Nunca rehagas el trabajo de los scripts manualmente. No cuentes palabras ni caracteres. No escribas prompts.
- R6. Nunca inventes hechos. Nunca escribas texto en ruso. Los scripts no llaman a ningún modelo.
Procedimiento
Todas las rutas a continuación pueden apuntar a cualquier lugar con permisos de escritura; work/ es el valor predeterminado, no una regla.
- Leer (script).
node dist/read.mjs <url> --out work/page.json- Opciones:
--no-render(solo HTML fuente),--lang <code>(idioma del borrador). - Resultado: en
work/,brief.md(léelo),analysis.md(el borrador, 1 encabezado por candidato con un tipo sugerido) ypage.json(para la compilación; no lo abras). Sianalysis.mdexiste, el borrador va aanalysis.draft.md. brief.mdtiene 1 línea por elemento: tipo, recuento de palabras, estado (js_only,collapsed,not_in_a11y, o ninguno paraok), texto, agrupado por candidatobNN.[g3#2]es la tarjeta 2 del grupog3.- Tiempo: 5 a 30 segundos. El renderizado se detiene después de 45 segundos y la lectura continúa desde el HTML.
- En caso de fallo:
REFUSED <code>(código de salida 2): detente e informa al usuario (ver Códigos de rechazo). Si los scripts no pueden ejecutarse (sin Node 22, sin shell, sin red), informa al usuario en 1 línea y ofrece la ruta de página guardada.
- Opciones:
- Rellenar
work/analysis.md(juicio). Consulta la siguiente sección. Escribe en inglés, o en el idioma que el usuario pidió, con su código enlanguage:. - Compilar (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- Resultado: los 3 archivos y
checks: 5 of 5 passed. Los ejemplos fuera de su rango son solo advertencias. - En caso de fallo:
REFUSEDenumera cada problema con su verificación:overlap(R2),brand(R3),volume(sin rango de palabras),variables(variable{name}no declarada),blocks(candidato faltante, desconocido o usado dos veces),schema(campo faltante o valor no permitido), o una línea que no se puede leer. Corrige solo las líneas listadas y ejecuta la compilación de nuevo.
- Resultado: los 3 archivos y
analysis.md
Toma los recuentos de palabras de brief.md y escribe rangos alrededor de ellos. Omite los rangos de caracteres.
language: en
example_product: una aplicación ficticia de reservas para pequeños estudios de pilates
page_type: landing SaaS
audience: propietarios de pequeños estudios que toman reservas por chat
awareness: comparing_solutions
tone: profesional, cálido; formalidad 2; you
promise: {product} le da a {audience} {main_benefit} sin {pain}.
logic: resultado y primer paso primero, luego prueba, los pasos antes de los precios
threads:
- la promesa de no más llamadas telefónicas se repite en el hero, los pasos y el cierre
## p01 hero | Hero | b01
role: decir en cinco segundos qué cambia para el lector, y ofrecer el primer paso
- eyebrow | 3-5 | el cambio principal para el lector | No más llamadas de reserva
- h1 "Headline" | 7-11 | el resultado para {audience}, sin el nombre del producto | Los clientes reservan un reformer, y tú te quedas con la clase
- button | 2-4 | verbo + objeto, la acción {cta_action} | Configurar reservas
- risk_line | 5-8 | {risk_remover} | Gratis para empezar, cancela en cualquier momento
techniques:
- Mantén el nombre de {product} fuera del titular; aparece por primera vez en el subtitular.
tone: profesional, cálido; you
avoid: "innovador"; una pregunta como titular
## p07 pricing | Pricing | b07
role: ayudar al lector a elegir un plan y ver que el precio se ajusta al tamaño del estudio
- h2 | 4-8 | el precio vinculado al tamaño del lector | Paga por el tamaño que eres
- 3 x plan "Plan":
- h3 | 1-3 | el tamaño del estudio | Sala única
- price | 1-3 | {plan_n} | [precio] / mes
- items 3 | 2-6 | lo que está incluido, lo más importante primero | Reservas autogestionadas / Recordatorios para clientes / Pago con tarjeta
techniques:
- Nombra los planes según el tamaño del estudio, no según niveles como básico o profesional.
Valores permitidos (la compilación rechaza otros):
awareness:unaware,problem_aware,comparing_solutions,product_aware,ready_to_buy.- Tipo de bloque:
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.othernecesita una líneareason:. formality: 1 dígito, de 1 a 5 (el informe muestra "N of 5"; no se rechaza).language: un código ISO;ukgenera prompts en ucraniano, cualquier otro código prompts en inglés.page_type: texto 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; hechosrisk_remover,outcome_number,customer_count,customer_n,testimonial_n,plan_n,guarantee,deadline. Declara una nueva bajovars:como- name: lo que va, con[fact]para un hecho.
Obligatorio: language, example_product, page_type, audience, awareness, promise, logic; por bloque un tipo, un nombre, role, 1 o más elementos, 1 o más técnicas.
Formatos de línea:
- Elemento:
code "Label" | words | must | example.mustse convierte en esa línea del prompt. - Grupo:
N x code "Label":con hijos indentados; el ejemplo es 1 tarjeta. Los grupos no se anidan. - Lista:
items N; separa los elementos de ejemplo con/. - Unir candidatos:
| b03 b04en el encabezado. Eliminar uno:drop: b10 <reason>cerca de la parte superior.
Reglas que se incumplen con más frecuencia:
- 1 bloque, 1 trabajo. Omite el texto decorativo (etiquetas de widgets, contadores).
- Cada candidato va exactamente en 1 bloque o se elimina. Un candidato no se puede dividir.
- Un candidato muy grande (por ejemplo, un artículo de 1400 palabras con muchas subsecciones) sigue siendo 1 bloque: escribe sus subsecciones repetidas como 1 grupo, por ejemplo
5 x section "Section":conh3ytext. Usa el tipo más cercano, oother. - Las técnicas son instrucciones, no etiquetas: no "usa PAS" sino "menciona el problema en 1 oración, su costo en la segunda, {product} en la tercera". Solo lo que hace el texto.
- El ejemplo es el bloque para 1 producto ficticio. Cerca del rango es suficiente.
Verificación
- Cada candidato está en 1 bloque o eliminado.
- La compilación final no imprimió ningún
REFUSED. -
work/report.htmlexiste.
Mostrar el informe
- Si el usuario o quien lo llamó dijo que no publique ni abra nada, detente cuando exista
report.htmly proporciona su ruta. - De lo contrario, publica
report.htmlsi esta sesión puede publicar HTML; si no, proporciona su ruta absoluta. - El informe se abre en inglés con un interruptor EN / UK;
#lang=uklo abre en ucraniano.
Resumen del chat
- El número de bloques, el esqueleto, 1 o 2 técnicas útiles.
- Notas de visibilidad que importan: solo texto después de JavaScript, respuestas FAQ plegadas.
- No pegues cada prompt. Si el usuario preguntó por 1 bloque, muestra su prompt y ejemplo.
- Di una vez: los bloques y la redacción son tu interpretación; las capas, los recuentos y las comprobaciones son de los scripts.
Códigos de rechazo
Ruta de página guardada: node dist/read.mjs --file saved.html --url <address> --out work/page.json.
| Código | Dile al usuario |
|---|---|
invalid_url, blocked_scheme, blocked_host, blocked_address | No es una dirección web pública. |
unreachable, http_error, blocked | El sitio no respondió o rechazó lectores automatizados (blocked: HTTP 401, 403 o 429). Ofrece la ruta de página guardada. |
challenge | Un captcha o verificación de bot. No lo superes; ofrece la ruta de página guardada. |
not_html, too_large, empty | No es una página web legible, o no tiene texto (probablemente imágenes). |
refused_ru_domain, refused_ru_hosting, refused_ru_audience, refused_language_ru | No analizado: una página en ruso, o un sitio en una zona de dominio de Rusia, alojado en Rusia o con una versión en ruso. Decisión del editor. |
Referencias
| Archivo | Léelo cuando |
|---|---|
references/block-types.md | No estés seguro de un tipo de bloque. |
references/variables.md | Necesites una {variable} o añadir una. |
references/analysis-schema.md | Necesites el formato completo o la forma JSON. |