Communitygithub.com

Olexan-art/page-text-to-prompts

Divide o texto de uma página web em blocos (hero, benefícios, como funciona, depoimentos, preços, FAQ, CTA e outros) e escreve 1 prompt reutilizável por bloco. Cada prompt escreve o mesmo tipo de texto para um produto diferente e tem um exemplo verificado. Apenas o texto; o design é ignorado.

O que é page-text-to-prompts?

Esta skill é uma ferramenta para engenharia reversa de texto de landing pages, convertendo o conteúdo de uma URL em prompts reutilizáveis por bloco. Ela é útil para desenvolvedores e profissionais de marketing que desejam entender a estrutura de texto de uma página concorrente ou gerar rapidamente seções de texto para um novo produto, sem se preocupar com design ou elementos visuais. A skill é executada via linha de comando com Node.js (versão 22+), sem necessidade de instalação de dependências ou chaves de API, e requer apenas acesso de rede. O processo consiste em duas etapas: primeiro, o script `read.mjs` extrai o texto da página e identifica blocos candidatos; depois, o usuário preenche um arquivo de análise (`analysis.md`) com julgamentos sobre cada bloco, e o script `build.mjs` gera prompts e exemplos a partir desse arquivo. A skill impõe regras rigorosas contra plágio (não repetir 6 palavras consecutivas da página) e exige que o texto seja em português ou no idioma solicitado, evitando nomes de marcas e fatos inventados.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Versão 1.008.

Texto da página em prompts

Propósito

Os scripts leem 1 página web e dividem seu texto em blocos candidatos. Você escreve um arquivo de julgamento curto; a build o transforma em um prompt e um exemplo medido por bloco. Apenas texto: 1 página pública, desktop, sem login, sem bypass de captcha, sem texto em imagens.

Requisitos

  • Node 22 ou superior. Sem instalação, sem chave de API. Execute os scripts em dist/ a partir da pasta desta skill.
  • Acesso à rede a partir do shell.

Regras

  • R1. Não pergunte nada ao usuário primeiro. Uma URL é suficiente.
  • R2. Palavras próprias. Nenhuma linha que você escrever pode repetir 6 palavras consecutivas da página, ignorando maiúsculas/minúsculas e pontuação (overlap). Isso cobre todos os campos e todos os exemplos.
  • R3. Não mencione a marca do site: nome de domínio, og:site_name (brand). Não use nenhum nome da página.
  • R4. Escreva analysis.md e todo arquivo de entrada com a ferramenta de escrita de arquivos, nunca com heredoc do shell. Se a ferramenta recusar (alguns harnesses recusam arquivos .md de um subagente), escreva o arquivo com outro nome e copie com cp.
  • R5. Nunca refaça o trabalho dos scripts manualmente. Não conte palavras ou caracteres. Não escreva prompts.
  • R6. Nunca invente fatos. Nunca escreva texto em russo. Os scripts não chamam nenhum modelo.

Procedimento

Todo caminho abaixo pode apontar para qualquer lugar gravável; work/ é o padrão, não uma regra.

  1. Leitura (script). node dist/read.mjs <url> --out work/page.json
    • Opções: --no-render (apenas HTML fonte), --lang <código> (idioma do rascunho).
    • Resultado: em work/, brief.md (leia isto), analysis.md (o rascunho, 1 cabeçalho por candidato com um tipo sugerido) e page.json (para a build; não abra). Se analysis.md existir, o rascunho vai para analysis.draft.md.
    • brief.md tem 1 linha por elemento: tipo, contagem de palavras, status (js_only, collapsed, not_in_a11y, ou nenhum para ok), texto, agrupado por candidato bNN. [g3#2] é o cartão 2 do grupo g3.
    • Tempo: 5 a 30 segundos. A renderização para após 45 segundos e a leitura continua a partir do HTML.
    • Em caso de falha: REFUSED <código> (código de saída 2): pare e informe o usuário (veja Códigos de recusa). Se os scripts não puderem ser executados (sem Node 22, sem shell, sem rede), informe o usuário em 1 linha e ofereça a rota de página salva.
  2. Preencher work/analysis.md (julgamento). Veja a próxima seção. Escreva em inglês, ou no idioma solicitado pelo usuário, com seu código em language:.
  3. Build (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: os 3 arquivos e checks: 5 of 5 passed. Exemplos fora do intervalo são apenas avisos.
    • Em caso de falha: REFUSED lista cada problema com sua verificação: overlap (R2), brand (R3), volume (sem intervalo de palavras), variables (variável {nome} não declarada), blocks (candidato ausente, desconhecido ou usado duas vezes), schema (campo ausente ou valor não permitido), ou uma linha que não pode ser lida. Corrija apenas as linhas listadas e execute a build novamente.

analysis.md

Pegue as contagens de palavras do brief.md e escreva intervalos ao redor delas. Deixe de fora os intervalos de caracteres.

language: pt
example_product: um aplicativo fictício de reservas para pequenos estúdios de pilates
page_type: landing de SaaS
audience: proprietários de pequenos estúdios que fazem reservas por chat
awareness: comparando_solucoes
tone: profissional, acolhedor; formalidade 2; você
promise: {product} dá a {audience} {main_benefit} sem {pain}.
logic: resultado e primeiro passo primeiro, depois prova, os passos antes dos preços
threads:
- a promessa de não ter mais chamadas aparece no hero, nos passos e no chamado final

## p01 hero | Hero | b01
role: dizer em cinco segundos o que muda para o leitor, e oferecer o primeiro passo
- eyebrow | 3-5 | a principal mudança para o leitor | Sem mais chamadas de reserva
- h1 "Título principal" | 7-11 | o resultado para {audience}, sem o nome do produto | Clientes reservam um reformer, e você fica com a aula
- button | 2-4 | verbo + objeto, a ação {cta_action} | Configurar reservas
- risk_line | 5-8 | {risk_remover} | Gratuito para começar, cancele a qualquer momento
techniques:
- Manter o nome de {product} fora do título principal; ele aparece primeiro no subtítulo.
tone: profissional, acolhedor; você
avoid: "inovador"; uma pergunta como título principal

## p07 precos | Preços | b07
role: ajudar o leitor a escolher um plano e ver que o preço cabe no tamanho do estúdio
- h2 | 4-8 | o preço vinculado ao tamanho do leitor | Pague pelo tamanho que você é
- 3 x plano "Plano":
  - h3 | 1-3 | o tamanho do estúdio | Sala única
  - price | 1-3 | {plan_n} | [preço] / mês
  - items 3 | 2-6 | o que está incluído, mais importante primeiro | Reservas por autoatendimento / Lembretes para clientes / Checkout no cartão
techniques:
- Nomeie os planos de acordo com o tamanho do estúdio, não por níveis como básico ou profissional.

Valores permitidos (a build recusa outros):

  • awareness: unaware, problem_aware, comparing_solutions, product_aware, ready_to_buy.
  • Tipo de bloco: 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 precisa de uma linha reason:.
  • formality: 1 dígito, de 1 a 5 (o relatório mostra "N of 5"; não é recusado).
  • language: um código ISO; pt gera prompts em português, qualquer outro código gera prompts em inglês.
  • page_type: texto livre.
  • Variáveis: product, category, audience, language, pain, pain_n, main_benefit, benefit_n, feature_n, step_n, use_case_n, alternative, objection_n, cta_action; fatos risk_remover, outcome_number, customer_count, customer_n, testimonial_n, plan_n, guarantee, deadline. Declare uma nova em vars: como - name: o que entra, com [fact] para um fato.

Obrigatório: language, example_product, page_type, audience, awareness, promise, logic; por bloco um tipo, um nome, role, 1 ou mais elementos, 1 ou mais técnicas.

Formatos de linha:

  • Elemento: código "Rótulo" | palavras | deve | exemplo. must se torna aquela linha do prompt.
  • Grupo: N x código "Rótulo": com filhos indentados; o exemplo é 1 cartão. Grupos não aninham.
  • Lista: items N; separe itens de exemplo com /.
  • Juntar candidatos: | b03 b04 no cabeçalho. Descartar um: drop: b10 <motivo> perto do topo.

Regras mais frequentemente quebradas:

  • 1 bloco, 1 trabalho. Deixe de fora texto decorativo (rótulos de widgets, contadores).
  • Cada candidato vai em exatamente 1 bloco ou é descartado. Um candidato não pode ser dividido.
  • Um candidato muito grande (por exemplo, um artigo de 1.400 palavras com muitas subseções) permanece 1 bloco: escreva suas subseções repetidas como 1 grupo, por exemplo 5 x seção "Seção": com h3 e texto. Use o tipo mais próximo, ou other.
  • Técnicas são instruções, não rótulos: não "usa PAS" mas "nomeie o problema em 1 frase, seu custo na segunda, {product} na terceira". Apenas o que o texto faz.
  • O exemplo é o bloco para 1 produto fictício. Próximo ao intervalo é suficiente.

Verificação

  • Cada candidato está em 1 bloco ou foi descartado.
  • A build final não imprimiu REFUSED.
  • work/report.html existe.

Mostrar o relatório

  • Se o usuário ou quem chamou disse para não publicar ou abrir nada, pare quando report.html existir e forneça seu caminho.
  • Caso contrário, publique report.html se esta sessão puder publicar HTML; se não, forneça seu caminho absoluto.
  • O relatório abre em inglês com um seletor EN / PT; #lang=pt abre em português.

Resumo do chat

  • O número de blocos, o esqueleto, 1 ou 2 técnicas úteis.
  • Notas de visibilidade que importam: texto apenas após JavaScript, respostas de FAQ dobradas.
  • Não cole todos os prompts. Se o usuário perguntou sobre 1 bloco, mostre seu prompt e exemplo.
  • Diga uma vez: os blocos e a redação são sua leitura; as camadas, contagens e verificações são dos scripts.

Códigos de recusa

Rota de página salva: node dist/read.mjs --file saved.html --url <endereço> --out work/page.json.

CódigoInforme o usuário
invalid_url, blocked_scheme, blocked_host, blocked_addressNão é um endereço web público.
unreachable, http_error, blockedO site não respondeu ou recusou leitores automatizados (blocked: HTTP 401, 403 ou 429). Ofereça a rota de página salva.
challengeUm captcha ou verificação de bot. Não passe por ele; ofereça a rota de página salva.
not_html, too_large, emptyNão é uma página web legível, ou não tem texto (provavelmente imagens).
refused_ru_domain, refused_ru_hosting, refused_ru_audience, refused_language_ruNão analisado: uma página em russo, ou um site no domínio da Rússia, hospedado na Rússia ou com uma versão em russo. Decisão do editor.

Referências

ArquivoLeia quando
references/block-types.mdVocê não tem certeza de um tipo de bloco.
references/variables.mdVocê precisa de uma {variável} ou adicionar uma.
references/analysis-schema.mdVocê precisa do formato completo ou do formulário JSON.

Habilidades Relacionadas