Kandungan
Tukar brief produk kepada halaman pendaratan
Kaji audiens, simpan brief dalam LiveDoc, cipta tugas Landing Page dari konteks itu dan tanya sehingga halaman dihoskan siap.
Salin prompt
Ganti medan dalam kurungan siku lalu tampal ke Claude Code, Codex atau AI dengan akses terminal. Ia memasang skill Felo, bertanya sebelum kredit digunakan dan menjalankan aliran kerja.
Bina landing page untuk [produk] yang menyasarkan [audiens]. Matlamat: [pendaftaran / demo / senarai menunggu]. Nada: [nada]. Bahasa: [bahasa]. Bahan sumber: [URL ringkasan produk atau tampal ringkasan]. Mesti termasuk: [titik bukti, harga, CTA]. Gunakan Chat dan Web Fetch untuk mengkaji audiens dan dua atau tiga halaman pesaing. Simpan ringkasan dan kajian dalam LiveDoc, kemudian buat tugas Landing Page dengan LiveDoc itu sebagai konteks. Poll sehingga selesai dan kembalikan pautan halaman yang dihoskan. Hasilkan: 1. Rangka halaman: bahagian utama, bukti, ciri, bantahan, CTA. 2. Pautan halaman yang dihoskan. 3. Pautan LiveDoc yang digunakan sebagai konteks. 4. Senarai semak dakwaan yang perlu disahkan. Peraturan: - Jangan reka metrik, pelanggan, testimoni, harga atau dakwaan pematuhan. - Pastikan setiap dakwaan boleh dikesan ke ringkasan atau halaman yang diambil. - Tanya sebelum menggunakan kredit untuk kajian atau penjanaan halaman. - Jangan terbitkan atau sambungkan domain; kembalikan pautan hos untuk semakan. - Tulis rangka ke ./landing-page-outline.md dan ringkaskan dalam chat.
Salinan turut menyertakan langkah pemasangan dan peraturan keselamatan.
Apa yang anda dapat
Contoh output daripada satu larian. Bukan penjanaan langsung.
Rangka halaman pendaratan
Bahagian utama: “Kaji pasaran tanpa membuka tiga puluh tab.” Subhead: Sumber dan draf ringkasan dalam satu jalan. Bukti: Masa dijimatkan setiap ringkasan; setiap dakwaan berpaut sumber. Ciri: Carian, pengekstrakan halaman, isyarat X, bukti LiveDoc. Bantahan: “Adakah ia reka nombor?” Tidak: data tiada ialah “Tiada data”. CTA: Mulakan dengan satu soalan.
Halaman: https://felo.ai/ai-page/... Konteks: https://felo.ai/livedoc/...
Panggilan sebenar
Untuk pembangun: aliran kerja sama sebagai kod, mengikut urutan pelaksanaan.
Tunjukkan panggilan API sebenar
Kaji audiens dan alternatif
Tanya Chat siapa audiens dan apa mereka perlukan, lalu baca dua atau tiga halaman pesaing dengan Web Fetch.
landing.ts const BASE = "https://openapi.felo.ai"; const headers = { Authorization: `Bearer ${process.env.FELO_API_KEY}`, "Content-Type": "application/json", }; async function felo<T>(path: string, body?: unknown): Promise<T> { const res = await fetch(`${BASE}${path}`, { method: body ? "POST" : "GET", headers, body: body ? JSON.stringify(body) : undefined, }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<T>; } type ChatData = { data: { answer: string; resources: { link: string; title: string }[] }; }; type ExtractData = { data: { content: string } }; const research = await felo<ChatData>("/v2/chat", { query: "Who is [audience] and what do they need from [product]?", }); const pages = await Promise.all( research.data.resources.slice(0, 2).map((source) => felo<ExtractData>("/v2/web/extract", { url: source.link, output_format: "markdown", with_readability: true, }).then((page) => ({ ...source, content: page.data.content })), ), );Contoh output
{ "answer": "…", "resources": [{ "link": "https://example.com", "title": "…" }] }Simpan brief dalam LiveDoc
Cipta LiveDoc, tambah brief sebagai dokumen dan lampirkan halaman yang ditangkap.
landing.ts type LiveDocData = { data: { short_id: string } }; const doc = await felo<LiveDocData>("/v2/livedocs", { name: "Landing page: [product]", description: "Product brief, audience research and competitor notes", }); await felo(`/v2/livedocs/${doc.data.short_id}/resources/doc`, { title: "Product brief", content: "[paste the brief: audience, problem, proof, pricing, CTA]", }); await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, { urls: pages.map((page) => ({ url: page.link, title: page.title })), }); console.log(doc.data.short_id); // page contextCipta tugas halaman pendaratan
Hantar ke
/v2/landing_pageprompt halaman dan LiveDoc short_id, lalu terima task_id.landing.ts type LandingTaskData = { data: { task_id: string } }; const task = await felo<LandingTaskData>("/v2/landing_page", { query: "Create a landing page for [product] for [audience]. Goal: [signup]. " + "Use the product brief and research in the LiveDoc. Return a hero, proof, " + "features, objections and one CTA. Do not invent claims.", livedoc_short_id: doc.data.short_id, }); console.log(task.data.task_id);Contoh output
{ "data": { "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9" } }Tanya sehingga siap
Semak sejarah sehingga COMPLETED dan baca
ai_page_html.landing.ts type TaskState = { data: { task_status: string; ai_page_html?: string; ppt_url?: string }; }; async function waitForPage(taskId: string) { for (let attempt = 0; attempt < 40; attempt++) { const state = await felo<TaskState>(`/v2/tasks/${taskId}/historical`); if (state.data.task_status === "COMPLETED") { return state.data.ai_page_html ?? state.data.ppt_url; } if (["FAILED", "EXPIRED", "CANCELED"].includes(state.data.task_status)) { throw new Error(`Landing page task ${state.data.task_status}`); } await new Promise((resolve) => setTimeout(resolve, 3000)); } throw new Error("Landing page task timed out"); } const pageUrl = await waitForPage(task.data.task_id); console.log(pageUrl);Contoh output
{ "task_status": "COMPLETED", "ai_page_html": "https://felo.ai/ai-page/9qiLTmT77fA3aVurrMHvRJ", "ppt_url": "https://felo.ai/slides/9qiLTmT77fA3aVurrMHvRJ" }Semak sebelum kongsi
Semak dakwaan, harga, teks undang-undang dan pautan CTA, kemudian kongsi.
Termasuk
- Kajian audiens dan pesaing dari halaman awam
- Brief dan kajian dalam LiveDoc
- Halaman dihoskan dari konteks itu
- Senarai semak dakwaan, pautan dan CTA sebelum kongsi
Apa yang tidak dilakukan
- Menjana halaman dihoskan, tidak menerbitkan laman dan tidak menyambung domain
- Teks dijana perlu semakan manusia sebelum dikongsi
- Tiada ujian A/B dan tiada sambungan analytics
- Tidak mengesahkan dakwaan di luar brief dan halaman
- Tidak membuat logo, sistem jenama atau ilustrasi tersuai
Soalan
Apa yang dijana?
Halaman pendaratan dihoskan di Felo dari brief dan kajian. Anda menerima pautan, bukan laman terbit.
Boleh guna domain sendiri?
Aliran ini tidak menyambung domain. Ia memulangkan halaman dihoskan untuk semakan; domain dan penerbitan langkah lain.
Adakah ia merekakan testimoni atau metrik?
Tidak. Prompt melarang rekaan dan mewajibkan setiap dakwaan datang dari brief atau halaman ditangkap.
Boleh iterasi?
Boleh. Ubah brief dalam LiveDoc dan cipta tugas Landing Page baharu.
Adakah ia membuat imej tersuai?
Ia mengurus struktur dan teks; ilustrasi dan bahan jenama di luar aliran.
Berapa kos satu halaman?
Kajian dan penjanaan halaman dibilkan mengikut penggunaan; kadar semasa di halaman harga dan prompt meminta kelulusan sebelum berbelanja.
Aliran kerja berkaitan
Tukar soalan pasaran kepada brief go-to-market
Tanya pasaran dengan soalan tepat, baca halaman kategori dan harga di sebalik jawapan, kumpulkan cara pembeli menggambarkan masalah di X dan simpan brief GTM dengan dakwaan bersumber serta soalan terbuka.
Buka aliran kerjaKandunganIsi sebulan kandungan dengan soalan audiens anda
Petakan tema dengan Chat, cari soalan audiens di X, ambil sudut sebenar dari transkrip video dan susun kalendar empat minggu yang setiap baris menyebut buktinya.
Buka aliran kerjaPejabatTukar halaman penyelidikan kepada pembentangan
Ekstrak halaman, simpan sebagai konteks LiveDoc, biar PPT Task API membina deck dan tanya sehingga pautan siap.
Buka aliran kerjaSesuaikan
Resipi sama, disesuaikan dengan cara anda benar-benar menyampaikan.
Mula dari PDF
Hantar PDF melalui multipart; platform menyimpannya sebagai sumber LiveDoc dan menyerahkannya kepada tugas.
Dua versi positioning
Cipta dua tugas dengan sudut berbeza dalam LiveDoc sama dan bandingkan sebelum memilih.
Guna semula untuk pembentangan
LiveDoc sama boleh memberi tugas PPT supaya halaman dan deck bercerita sama.
Teruskan
Halaman rujukan di sebalik resipi ini dan langkah seterusnya.