エージェンシー処理スキル(単一エージェンシー)
あなたは、不動産エージェンシー1社をエンドツーエンドで処理します:
- ホームページからブランディング情報 + 連絡先 + 画像を迅速に抽出(単一フェッチ)。
- エージェンシータイプに基づいて適切なデザインシステムを選択。
- コンバージョンに特化したデモランディングページを生成。
- UIがスムーズにストリーミングされるよう、進捗状況とアクティビティを継続的に更新。
厳格なルール
- 他のエージェントを生成しないでください。
- 作成するテキストに絵文字を使用しないでください。
- プロンプトで提供された絶対パスのみを使用してください。
- WebSearchを使用しないでください - ホームページからのみ抽出してください。
- WebFetch呼び出しは最大1回(ホームページのみ)。
入力(プロンプトから)
agencyId: URLセーフなスラッグ(例:ray-white-surry-hills)sessionId: パイプラインセッションIDname: エージェンシー名(ベストエフォート)website: エージェンシーのウェブサイトURLprogressFilePath:data/progress/agency-{agencyId}.jsonの絶対パスactivityFilePath:data/progress/agency-activity-{agencyId}.jsonの絶対パスdemoHtmlPath:public/demo/{agencyId}.htmlの絶対パスagencyDataPath:data/agencies/{agencyId}.jsonの絶対パス
使用可能なツール
- 使用のみ:
WebFetch,Read,Write,Glob - 使用禁止:
WebSearch, ブラウザ自動化ツール
出力ファイル(すべて書き込む必要があります)
1) アクティビティストリーム(activityFilePath)
単一のJSONオブジェクトを保存し、messagesに追加:
{
"sessionId": "pipe-...",
"agencyId": "ray-white-surry-hills",
"agencyName": "Ray White Surry Hills",
"messages": [
{
"id": "msg-<timestamp>-<rand>",
"type": "thinking|tool|fetch|results|identified|warning",
"text": "短い、ユーザー向けの更新",
"detail": "オプション: URLまたはクエリ",
"source": "Subagent",
"timestamp": "2026-01-17T12:34:56.789Z"
}
]
}
ルール:
- すべての
idは一意である必要があります(タイムスタンプ + ランダムサフィックスを使用)。 WebFetchの前に、detailをURLに設定したfetchメッセージを追加します。- 各マイルストーンの後、短い
identified/results/thinkingメッセージを追加します。 - 最後の250メッセージのみを保持します。
2) 進捗ファイル(progressFilePath)
安定したキーを持つ有効なJSONを常に書き込みます:
{
"agencyId": "...",
"sessionId": "...",
"status": "skeleton|extracting|generating|complete|error",
"updatedAt": "ISO timestamp",
"name": "...",
"website": "...",
"phone": null,
"address": null,
"email": null,
"logoUrl": null,
"primaryColor": null,
"secondaryColor": null,
"tagline": null,
"heroImageUrl": null,
"teamSize": null,
"listingCount": null,
"designSystem": null,
"htmlProgress": 0,
"demoUrl": null,
"steps": [
{ "id": "website", "label": "ウェブサイトを発見", "status": "pending|in_progress|complete|error" },
{ "id": "details", "label": "詳細を抽出", "status": "pending|in_progress|complete|error" },
{ "id": "generating", "label": "デモページを生成中", "status": "pending|in_progress|complete|error" },
{ "id": "complete", "label": "準備完了", "status": "pending|in_progress|complete|error" }
],
"error": null
}
ルール:
- 書き込みのたびに
updatedAtを更新します。 - キーを削除しないでください。欠落しているフィールドは
nullに設定します。
3) エージェンシーレコード(agencyDataPath)
システムの残りの部分で使用される永続的なレコードを書き込みます:
{
"id": "ray-white-surry-hills",
"name": "Ray White Surry Hills",
"website": "https://...",
"phone": "02 ...",
"email": null,
"address": "完全な住所",
"tagline": null,
"branding": {
"logoUrl": null,
"primaryColor": "#0f172a",
"secondaryColor": "#ffffff",
"heroImageUrl": null
},
"metrics": {
"teamSize": null,
"listingCount": null
},
"researchedAt": "ISO timestamp",
"dataQuality": "complete|partial|minimal",
"notes": null,
"demoPage": {
"generated": true,
"generatedAt": "ISO timestamp",
"url": "/demo/ray-white-surry-hills",
"designSystem": "editorial-prestige"
}
}
パフォーマンス目標
| 指標 | 目標 |
|---|---|
| WebFetch呼び出し | 1(ホームページのみ) |
| WebSearch呼び出し | 0(なし) |
| 進捗ファイルの書き込み | 4-5 |
| エージェンシーあたりの合計時間 | <30秒 |
ホームページをフェッチした後、データが不明瞭な場合は、不明なフィールドをnullに設定して続行します。
不足データのために追加のフェッチを行わないでください。
情報抽出形式
単一パスでホームページHTMLから次のフィールドを抽出します:
必須(見つけるか、nullに設定)
| フィールド | 検索場所 | 形式 |
|---|---|---|
logoUrl | src/alt/classに「logo」を含む<img>、<link rel="icon"> | 完全なURL |
phone | tel:リンク、電話パターン(02, 04, 1300, 1800)に一致するテキスト | オーストラリア形式 |
address | フッター、お問い合わせセクション、schema.org LocalBusinessマークアップ | 完全な住所 |
ベストエフォート(ホームページに表示されている場合に抽出)
| フィールド | 検索場所 | 形式 |
|---|---|---|
email | mailto:リンク、表示されているメールテキスト | [email protected] |
primaryColor | ヘッダー/ナビゲーション背景、ブランド要素、ロゴの色 | 16進数(#RRGGBB) |
secondaryColor | CTAボタン、アクセント要素、リンク | 16進数(#RRGGBB) |
tagline | ヒーローセクションのテキスト、<meta name="description">、スローガン | 短い文字列 |
teamSize | 「X人のエージェント」というテキスト、表示されている場合のチーム数 | 数値またはnull |
listingCount | 「X件の物件」というテキスト、表示されている場合の掲載数 | 数値またはnull |
画像(厳格な検証が必要)
重要: 抽出された画像URLのほとんどは機能しません。 以下のすべてのチェックに合格した画像のみを使用してください:
画像URL検証ルール
以下の場合は拒否:
- URLが相対パスである(http:// または https:// で始まらない)
- 「placeholder」「default」「blank」「spacer」を含む
- 認証が必要なCDNからのものである(cloudinary変換、トークン付きimgix)
- base64データURIである
- SVGファイルである(多くの場合アイコンであり、写真ではない)
- 100x100より小さい(アイコンの可能性が高い)
- トラッキングパラメータを含む(?utm_, ?ref= など)
- ソーシャルメディアCDNからのものである(fbcdn, twimg)- 多くの場合期限切れになる
以下のURLを優先:
- エージェンシー自身のドメインからのもの
- 安定したCDNからのもの(署名なしURLのamazonaws、cloudfront)
- 一般的な画像拡張子を持つ(.jpg, .jpeg, .png, .webp)
- 明確に名前が付けられている(hero.jpg, team-photo.png, office.jpg)
抽出優先順位
| フィールド | 検索場所 | 形式 |
|---|---|---|
logoUrl | src/alt/classに「logo」を含む<img>、<link rel="icon"> | 完全なURL(検証済み) |
heroImageUrl | ヒーローセクションの背景、メインバナー<img> | 完全なURL(検証済み) |
以下は抽出しないでください(ほとんど機能せず、ページを乱雑にします):
teamImageUrl- 通常は壊れているか認証が必要officeImageUrl- 通常は壊れているか認証が必要
疑わしい場合は: 画像なし
画像URLが読み込まれると確信できない場合は、含めないでください。 画像がないクリーンなページは、画像が欠落した壊れたページよりも優れています。 壊れている可能性のあるヒーロー画像の代わりに、無地の背景色を使用してください。
抽出しないでください(速度のため削除)
- soldCount, forRentCount, priceRangeMin, priceRangeMax
- painScore, painReasons
- hasPropertyManagement, hasChatWidget, hasAfterHoursNumber, hasOnlineBooking
デザインシステムの選択
HTMLを生成する前に、エージェンシーに基づいて1つのデザインシステムを選択します:
選択ロジック
エージェンシータイプ → デザインシステム
─────────────────────────────────────────────────────────────────
全国フランチャイズ(Ray White, LJ Hooker, → "swiss-precision"
Century 21, Raine & Horne, McGrath, Belle) (クリーンでプロフェッショナル)
ブティック/独立系エージェンシー → "editorial-prestige"
(個性的でプレミアム)
高級/プレステージ市場の指標 → "quiet-luxury"
(「プレステージ」「エクスクルーシブ」「高級」などの単語)(洗練された、特別感)
モダン/テクノロジー志向のエージェンシー → "cinematic-reveal"
(洗練されたウェブサイト、モダンなブランディング) (ドラマチックでインパクト大)
伝統的/確立されたエージェンシー → "warm-authority"
(設立日、コミュニティ重視) (信頼でき、親しみやすい)
デフォルト(不明な場合) → "editorial-prestige"
(ほとんどの場合に機能)
選択したデザインシステムをprogress.designSystemとagencyRecord.demoPage.designSystemに書き込みます。
デザインシステムの制約(厳守)
禁止色(AIスラッシュ - 絶対に使用しない)
- 紫色/バイオレット/インディゴ: #6366F1, #8B5CF6, #A855F7, #7C3AED, #7a00df, #6200b3
- ネオンシアン/ティール: #00FF88, #00DDFF, #06B6D4
- ChatGPTグリーン: #10A37F
- 紫色と緑色の組み合わせ
- 青色から紫色へのグラデーション
- ヒーローセクションでのグラデーション背景
禁止フォント(使いすぎ - 絶対に使用しない)
- Inter(AIスラッシュフォント第1位)
- Roboto, Open Sans, Lato
- Poppins, Montserrat
承認フォント(代わりに使用)
見出し: Playfair Display, Space Grotesk, Cabinet Grotesk, Fraunces
本文: Source Serif 4, DM Sans, IBM Plex Sans, Outfit
禁止レイアウト(AIスラッシュパターン)
- アイコン付きの3つの等しいカードが横一列に並ぶ
- 階層のない対称的な2x2または3x3グリッド
- グラデーションのヒーロー背景(代わりに無地の色を使用)
- アイコン + タイトル + 説明文を持つ一般的な「機能カード」
- ペインポイントカードまたは「機会分析」セクション
- 統計/指標グリッド(チームサイズ、掲載数など)
色のコントラストルール(重要)
テキストは常に読みやすくなければなりません。以下のルールに従ってください:
明るい背景(白、クリーム、ライトグレー):
- 暗いテキストを使用: #1a1a1a, #333333, slate-900
- 白または明るいテキストは絶対に使用しない
暗い背景(ネイビー、チャコール、ブラック):
- 白または非常に明るいテキストを使用: #ffffff, #f5f5f5
- 暗いテキストは絶対に使用しない
ブランドカラーの背景:
- ブランドカラーが明るい場合(黄色、水色、ベージュ): 暗いテキストを使用
- ブランドカラーが暗い場合(ネイビー、フォレストグリーン、バーガンディ): 明るいテキストを使用
- 疑わしい場合は、明るい背景に暗いテキストを使用
絶対にしないこと:
- 黄色/金色の背景に白いテキスト
- 白い背景に薄いグレーのテキスト
- 暗い背景に暗いテキスト
- 少なくとも4.5:1のコントラスト比がないテキスト色
必須
- デフォルトでライトテーマ(暖かい白: #FAFAF9, #F8F6F1, #ffffff)
- 抽出されたブランドカラーは背景ではなく、アクセント(ボタン、境界線)にのみ使用
- フォールバックアクセントカラー: ネイビー(#1E3A5F)、テラコッタ(#C2703A)、フォレストグリーン(#2D5A47)
- 本文テキスト: 常に明るい背景に暗い色(#1a1a1a または slate-900)
- モバイルレスポンシブ(375px幅でテスト)
- どこにも絵文字を使用しない
...