Communitygithub.com

Olexan-art/page-text-to-prompts

Webページのテキストをヒーロー、ベネフィット、よくある質問などのブロックに分割し、ブロックごとに1つの再利用可能なプロンプトを生成します。各プロンプトには、異なる製品に適用可能な例が含まれます。デザインは無視し、テキストのみを処理します。ユーザーがURLを指定してランディングページのテキスト構造を分析・逆解析したり、各セクションのプロンプトを作成する際に使用します。

page-text-to-prompts とは?

このスキルは、与えられたWebページのテキスト(コピー)を、ヒーロー、ベネフィット、機能紹介、料金プラン、FAQなど、意味的なブロックに自動分割し、各ブロックに対して1つの再利用可能なプロンプトを生成します。Node.js 22以降が必要で、インストール不要、APIキー不要で動作します。テキストのみを処理対象とし、画像内のテキストやデザインは無視します。 主な特徴は、プロンプトの品質を保証するための厳格なルールです。元のページのテキストから連続した6単語をコピーしない重複防止ルール、ブランド名(ドメイン名、サイト名など)を使用しないルール、事実の捏造禁止などが含まれます。分析結果はanalysis.mdファイルに記述し、そこからビルドスクリプトがプロンプトと検証例を生成します。 このスキルは、Claude Code、Cursor、CodexなどのAIエージェントプラットフォームで利用できます。ユーザーがランディングページのURLを提供し、そのコピー構造を分解・逆解析するよう依頼した場合に最適です。競合他社のページ分析、自社サイトの類似ブロック作成、特定セクションのプロンプト生成などに活用できます。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

バージョン 1.008.

ページテキストからプロンプトへ

目的

スクリプトは1つのWebページを読み取り、そのコピーを候補ブロックに分割します。あなたは短い判定ファイルを作成し、ビルドがそれをプロンプトとブロックごとの測定された例に変換します。テキストのみ:1つの公開ページ、デスクトップ、ログイン不要、キャプチャ回避不要、画像内のテキストは対象外。

必要条件

  • Node 22以降。インストール不要、APIキー不要。このスキルのフォルダから dist/ にあるスクリプトを実行します。
  • シェルからのネットワークアクセス。

ルール

  • R1. 最初にユーザーに何も尋ねないでください。URLだけで十分です。
  • R2. 独自の表現。 あなたが書くどの行も、ページ内の連続する6単語を(大文字小文字と句読点は無視して)繰り返してはいけません(overlap)。これはすべてのフィールドとすべての例に適用されます。
  • R3. サイトのブランド(ドメイン名、og:site_name)を指定しないでください(brand)。ページ内の名前を使用しないでください。
  • R4. analysis.md およびすべての入力ファイルは、ファイル書き込みツールを使用して作成し、シェルのヒアドキュメントは使用しないでください。ツールが拒否する場合(一部のハーネスはサブエージェントからの .md ファイルを拒否します)、別の名前でファイルを作成し、cp でコピーしてください。
  • R5. スクリプトの作業を手動で再作成しないでください。単語数や文字数を数えないでください。プロンプトを作成しないでください。
  • R6. 事実を捏造しないでください。ロシア語のテキストを書かないでください。スクリプトはモデルを呼び出しません。

手順

以下のパスはすべて書き込み可能な場所を指して構いません。work/ はデフォルトであり、ルールではありません。

  1. 読み取り(スクリプト)。 node dist/read.mjs <url> --out work/page.json
    • オプション:--no-render(ソースHTMLのみ)、--lang <code>(ドラフト言語)。
    • 結果:work/ に、brief.md(これを読む)、analysis.md(ドラフト。候補ごとに1つのヘッダーと推測されたタイプ)、page.json(ビルド用。開かないでください)が作成されます。analysis.md が存在する場合、ドラフトは analysis.draft.md に出力されます。
    • brief.md には要素ごとに1行(タイプ、単語数、ステータス(js_only、collapsed、not_in_a11y、または ok の場合はなし)、テキスト)が、候補 bNN でグループ化されて含まれます。[g3#2] はグループ g3 のカード2を示します。
    • 時間:5〜30秒。レンダリングは45秒後に停止し、HTMLからの読み取りが続行されます。
    • 失敗時:REFUSED <code>(終了コード2):処理を停止し、ユーザーに伝えます(拒否コードを参照)。スクリプトが実行できない場合(Node 22がない、シェルがない、ネットワークがない)、1行でユーザーに伝え、保存ページルートを提案します。
  2. ** work/analysis.md の作成(判定)。** 次のセクションを参照してください。英語、またはユーザーが要求した言語で記述し、そのコードを language: に指定します。
  3. ビルド(スクリプト)。 node dist/build.mjs work/page.json work/analysis.md --html work/report.html --md work/page-prompts.md --json work/page-prompts.json
    • 結果:3つのファイルと checks: 5 of 5 passed。例が範囲から外れている場合は警告のみ。
    • 失敗時:REFUSED は各問題とそのチェック(overlap(R2)、brand(R3)、volume(単語範囲なし)、variables(未宣言の {name})、blocks(候補が不明、未使用、または2回使用)、schema(フィールド欠落または許可されていない値)、または読み取れない行)をリストします。リストされた行のみを修正し、ビルドを再実行します。

analysis.md

brief.md から単語数を取得し、その範囲を記述します。文字範囲は省略します。

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.

許可される値(ビルドはそれ以外を拒否します):

  • awareness:unaware、problem_aware、comparing_solutions、product_aware、ready_to_buy。
  • ブロックタイプ: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 には reason: 行が必要です。
  • formality:1桁、1〜5(レポートには "N of 5" と表示されます。拒否されません)。
  • language:ISOコード。uk はウクライナ語のプロンプト、その他のコードは英語のプロンプトを生成します。
  • page_type:自由テキスト。
  • 変数:product、category、audience、language、pain、pain_n、main_benefit、benefit_n、feature_n、step_n、use_case_n、alternative、objection_n、cta_action;ファクト:risk_remover、outcome_number、customer_count、customer_n、testimonial_n、plan_n、guarantee、deadline。新しい変数は vars: の下に - name: what goes in と宣言し、ファクトの場合は [fact] を付けます。

必須: language、example_product、page_type、audience、awareness、promise、logic;ブロックごとにタイプ、名前、role、1つ以上の要素、1つ以上のテクニック。

行の形式:

  • 要素:code "Label" | words | must | example。must はプロンプトのその行になります。
  • グループ:N x code "Label": 子要素をインデントして記述。例は1つのカード。グループはネストしません。
  • リスト:items N。例の項目は / で区切ります。
  • 候補の結合:ヘッダーに | b03 b04。削除:先頭付近に drop: b10 <reason>。

最もよく破られるルール:

  • 1ブロック、1ジョブ。装飾的なテキスト(ウィジェットラベル、カウンター)は省略します。
  • 各候補は正確に1つのブロックに含まれるか、削除されます。候補を分割することはできません。
  • 非常に大きな候補(例えば、多くのサブセクションを持つ1400語の記事)は1ブロックのままにします。繰り返されるサブセクションを1つのグループとして記述します(例:5 x section "Section": に h3 と text)。最も近いタイプ、または other を使用します。
  • テクニックは指示であり、ラベルではありません。「PASを使用」ではなく、「問題を1文で、そのコストを2文目で、{product} を3文目で述べる」のように、テキストが何をするかを記述します。
  • 例は1つの架空の製品に対するブロックです。範囲に近ければ十分です。

検証

  • すべての候補が1つのブロックに含まれているか、削除されている。
  • 最終的なビルドが REFUSED を出力していない。
  • work/report.html が存在する。

レポートの表示

  • ユーザーまたは呼び出し元が何も公開または開かないように指示した場合、report.html が存在する時点で停止し、そのパスを提供します。
  • それ以外の場合、このセッションがHTMLを公開できる場合は report.html を公開します。できない場合は、その絶対パスを提供します。
  • レポートは英語で開きます。EN/UK切り替えスイッチがあります。#lang=uk でウクライナ語で開きます。

チャットサマリー

  • ブロック数、スケルトン、1つまたは2つの有用なテクニック。
  • 重要な可視性に関する注意事項:JavaScript後のテキストのみ、折りたたまれたFAQの回答。
  • すべてのプロンプトを貼り付けないでください。ユーザーが1つのブロックについて尋ねた場合、そのプロンプトと例を表示します。
  • 一度だけ言及する:ブロックと文言はあなたの読み取りです。レイヤー、カウント、チェックはスクリプトによるものです。

拒否コード

保存ページルート:node dist/read.mjs --file saved.html --url <address> --out work/page.json。

コードユーザーへの伝え方
invalid_url、blocked_scheme、blocked_host、blocked_address公開Webアドレスではありません。
unreachable、http_error、blockedサイトが応答しないか、自動リーダーを拒否しました(blocked:HTTP 401、403、または429)。保存ページルートを提案します。
challengeキャプチャまたはボットチェック。通過しないでください。保存ページルートを提案します。
not_html、too_large、empty読み取り可能なWebページではないか、テキストがありません(おそらく画像)。
refused_ru_domain、refused_ru_hosting、refused_ru_audience、refused_language_ru分析されませんでした:ロシア語のページ、またはロシアのドメインゾーンにあるサイト、ロシアでホストされているサイト、またはロシア語バージョンがあるサイト。発行者の判断。

参照

ファイルいつ読むか
references/block-types.mdブロックタイプが不明な場合。
references/variables.md{variable} が必要な場合、または追加する場合。
references/analysis-schema.md完全な形式またはJSON形式が必要な場合。

関連スキル