← 全部案例
第 7 招 · 让它去查、去排、去做出来装修上门通用找客户

网站放个装修预算估算器,换客户留电话

网站上只有一句「欢迎咨询」,客户看完价格心里没底,一个电话都不留就走了。

用什么ChatGPT
难不难要准备资料
第一次15 分钟
要准备你的起步价和几个常见加价项(大概的区间就行);收询价的邮箱和 WhatsApp 号码;能改你网站的人或网站后台

先看成品

喂给它的(示例:安心厨卫,虚构)
【我的价格,2026 年 9 月更新,全部含 GST,实际看现场】
- 基础:3 米一字型、平板柜门、20mm 陶瓷大板台面,A$18,000 起
- 每多 1 米柜子:加 A$3,000–3,500
- 改成 L 型:加 A$4,000–6,000
- 加岛台:加 A$6,000–8,000
- 柜门升级成 2pac 哑光烤漆:加 A$3,500–4,500
- 台面升级成岩板:加 A$2,500–3,500
- 水电要移位(水槽或灶台换位置):加 A$1,800–3,500
- 含拆旧和垃圾清运
- 不含电器、龙头(客户自选,或我们按原价代买)

【区间怎么算】
下限 = 基础价 + 每项的低数;上限 = 基础价 + 每项的高数,再加 10% 给现场可能发现的问题。

【我的联系方式】
邮箱 quote@anxin-example.com.au
WhatsApp 0400 000 000
服务范围:Parramatta 为中心,西区、北区,包括 Ryde、Epping、Castle Hill;Penrith 以西、南边 Sutherland 一般不接。
AI 交出来的(用 Codex 真跑的原文,没改字,2026-10-18)
下面是单文件小工具,手机可用,客户最多选 5 项,价格集中在代码顶部。估算全部含 GST,上限按你的规则加 10%,填写资料只在当前页面使用。保存为 kitchen-estimator.html 上传网站即可,也可用 iframe 嵌入;邮箱和 WhatsApp 号码上线前请换成真实联系方式。

html
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">

<!-- 修改价格只需改这里;金额为澳元,全部含 GST -->
<script>
const PRICES = {
  base: 18000,
  extraMetre: [3000, 3500],
  lShape: [4000, 6000],
  island: [6000, 8000],
  doors2pac: [3500, 4500],
  slabUpgrade: [2500, 3500],
  relocation: [1800, 3500],
  contingency: 0.10
};

const CONTACT = {
  email: "quote@anxin-example.com.au",
  whatsapp: "61400000000"
};
</script>

<title>安心厨卫|厨房翻新预算估算</title>
<style>
*{box-sizing:border-box}
body{
  margin:0;background:#f3f5f2;color:#20332b;
  font:16px/1.65 system-ui,-apple-system,"Segoe UI",sans-serif
}
main{
  max-width:680px;margin:24px auto;padding:26px;
  background:white;border-radius:20px
}
h1{font-size:27px;line-height:1.35;margin:8px 0 14px}
h2{font-size:21px;margin:0 0 16px}
p{margin:10px 0}
.brand{color:#496451;font-weight:700}
.intro,.small{color:#56645d}
.small{font-size:13px}
.field{margin:20px 0}
label{display:block;font-weight:650;margin-bottom:7px}
select,input,button,.button{
  width:100%;min-height:48px;border-radius:10px;
  font:inherit;padding:11px 12px
}
select,input{
  border:1px solid #9aa99f;background:#fff;color:#20332b
}
input:focus,select:focus,button:focus-visible,a:focus-visible{
  outline:3px solid #d49733;outline-offset:3px
}
.result{
  margin:26px 0;padding:22px 18px;
  background:#eaf3eb;border-radius:14px
}
.price{font-size:clamp(22px,5vw,31px);font-weight:800;line-height:1.45}
.inclusions{padding-left:20px}
form{border-top:1px solid #dde4de;padding-top:24px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}
button,.button{
  cursor:pointer;text-align:center;text-decoration:none;
  border:1px solid #24583c;background:#24583c;color:white;
  display:flex;align-items:center;justify-content:center;
  font-weight:700
}
.button{background:white;color:#24583c}
.status{color:#9a3412;min-height:1.6em;font-size:14px}
footer{border-top:1px solid #dde4de;margin-top:24px;padding-top:16px}
@media(max-width:520px){
  main{margin:0;border-radius:0;padding:22px 18px}
  .grid,.actions{grid-template-columns:1fr}
}
</style>
</head>
<body>
<main>
  <div class="brand">安心厨卫 · ANXIN</div>
  <h1>厨房翻新预算估算<br>Kitchen Renovation</h1>
  <p class="intro">选好下面 5 项,立即查看大概预算。基础方案为
    3 米一字型、平板柜门及 20mm 陶瓷大板台面。</p>

  <section aria-label="厨房方案">
    <div class="field">
      <label for="length">1. 柜子总长度 · Cabinet length</label>
      <select id="length">
        <option value="0">3 米或以内(按基础价)</option>
        <option value="1">超过 3 米,至 4 米</option>
        <option value="2">超过 4 米,至 5 米</option>
        <option value="3">超过 5 米,至 6 米</option>
        <option value="4">超过 6 米,至 7 米</option>
        <option value="5">超过 7 米,至 8 米</option>
      </select>
      <p class="small">不足整米暂按整米计。岛台按下一项单独计费;
        此处填写不含岛台的柜子总长度。超过 8 米请联系报价。</p>
    </div>

    <div class="field">
      <label for="layout">2. 布局与岛台 · Layout & island</label>
      <select id="layout">
        <option value="straight">一字型,无岛台</option>
        <option value="l">L 型,无岛台</option>
        <option value="island">一字型 + 岛台</option>
        <option value="l-island">L 型 + 岛台</option>
      </select>
    </div>

    <div class="field">
      <label for="doors">3. 柜门 · Cabinet doors</label>
      <select id="doors">
        <option value="standard">平板柜门(基础方案)</option>
        <option value="upgrade">升级 2pac 哑光烤漆</option>
      </select>
    </div>

    <div class="field">
      <label for="bench">4. 台面 · Benchtop</label>
      <select id="bench">
        <option value="standard">20mm 陶瓷大板(基础方案)</option>
        <option value="upgrade">升级岩板</option>
      </select>
    </div>

    <div class="field">
      <label for="services">5. 水电移位 · Plumbing & electrical</label>
      <select id="services">
        <option value="no">水槽及灶台位置不变</option>
        <option value="yes">水槽或灶台需要换位置</option>
        <option value="unsure">还不确定(先计入移位预算)</option>
      </select>
    </div>
  </section>

  <section class="result" aria-label="估算结果">
    <div id="estimate" class="price" role="status" aria-live="polite"></div>
    <p><strong>全部含 GST</strong> · 上限已加 10% 现场预留</p>
    <p class="small">这是估算,以正式书面报价为准。</p>
  </section>

  <ul class="inclusions small">
    <li>含拆旧和垃圾清运。</li>
    <li>不含电器、龙头;可自行选购,或由安心厨卫按原价代买。</li>
    <li>价格依据:2026 年 9 月,实际看现场。</li>
  </ul>

  <form id="contactForm">
    <h2>想要准确报价?留下联系方式</h2>
    <div class="grid">
      <div class="field">
        <label for="name">称呼</label>
        <input id="name" name="name" autocomplete="name"
          maxlength="60" required placeholder="怎么称呼您">
      </div>
      <div class="field">
        <label for="phone">电话 · Phone</label>
        <input id="phone" name="phone" type="tel" autocomplete="tel"
          inputmode="tel" maxlength="25" required
          pattern="[+0-9() .-]{8,25}" placeholder="您的联系电话"
          title="请输入 8–25 位电话号码,可包含加号、空格或括号">
      </div>
      <div class="field">
        <label for="postcode">邮编 · Postcode</label>
        <input id="postcode" name="postcode" autocomplete="postal-code"
          inputmode="numeric" pattern="[0-9]{4}" maxlength="4"
          required placeholder="例如 2150" title="请输入 4 位澳洲邮编">
      </div>
      <div class="field">
        <label for="start">想什么时候开始?</label>
        <select id="start" name="start" required>
          <option value="">请选择</option>
          <option>尽快</option>
          <option>1–3 个月内</option>
          <option>3–6 个月内</option>
          <option>6 个月以后</option>
          <option>还在了解预算</option>
        </select>
      </div>
    </div>

    <div class="actions">
      <button type="submit">把估算发给我们</button>
      <a id="whatsapp" class="button" href="https://wa.me/61400000000">
        WhatsApp 咨询
      </a>
    </div>
    <p class="small">第一个按钮打开您自己的邮箱;WhatsApp 按钮打开聊天。
      请在对应应用中确认发送。此页面不保存或上传您填写的资料,
      刷新后需重新填写。</p>
    <p id="status" class="status" role="status"></p>
  </form>

  <footer class="small">
    服务范围:以 Parramatta 为中心,悉尼西区、北区,
    包括 Ryde、Epping、Castle Hill。Penrith 以西及南边
    Sutherland 一般不接,具体地址请联系确认。
  </footer>
</main>

<script>
"use strict";
const $ = id => document.getElementById(id);
const choices = ["length", "layout", "doors", "bench", "services"];
const money = value => "A$" + value.toLocaleString("en-AU");
const form = $("contactForm");

function calculate() {
  let low = PRICES.base;
  let high = PRICES.base;

  function add(range, count = 1) {
    low += range[0] * count;
    high += range[1] * count;
  }

  add(PRICES.extraMetre, Number($("length").value));

  const layout = $("layout").value;
  if (layout === "l" || layout === "l-island") add(PRICES.lShape);
  if (layout === "island" || layout === "l-island") add(PRICES.island);
  if ($("doors").value === "upgrade") add(PRICES.doors2pac);
  if ($("bench").value === "upgrade") add(PRICES.slabUpgrade);
  if ($("services").value !== "no") add(PRICES.relocation);

  return {
    low: Math.round(low),
    high: Math.round(high * (1 + PRICES.contingency))
  };
}

function rangeText() {
  const result = calculate();
  return 大概 ${money(result.low)} – ${money(result.high)};
}

function updateEstimate() {
  $("estimate").textContent = rangeText();
  $("status").textContent = "";
}

function selectedText(id) {
  const select = $(id);
  return select.options[select.selectedIndex].text;
}

function message() {
  return [
    "安心厨卫,您好!我想咨询厨房翻新。",
    "",
    称呼:${$("name").value.trim()},
    电话:${$("phone").value.trim()},
    邮编:${$("postcode").value.trim()},
    希望开始时间:${$("start").value},
    "",
    "我的厨房方案:",
    1. 柜子长度:${selectedText("length")},
    "   长度不含岛台,不足整米暂按整米计。",
    2. 布局与岛台:${selectedText("layout")},
    3. 柜门:${selectedText("doors")},
    4. 台面:${selectedText("bench")},
    5. 水电移位:${selectedText("services")},
    "",
    rangeText(),
    "全部含 GST;上限已加 10% 现场预留。",
    "含拆旧和垃圾清运;不含电器、龙头。",
    "价格依据:2026 年 9 月。",
    "这是估算,以正式书面报价为准。",
    "",
    "请联系我安排准确报价,谢谢!"
  ].join("\n");
}

function valid() {
  $("name").setCustomValidity(
    $("name").value.trim() ? "" : "请填写称呼"
  );
  return form.reportValidity();
}

$("name").addEventListener("input", () => {
  $("name").setCustomValidity("");
});

choices.forEach(id => {
  $(id).addEventListener("change", updateEstimate);
});

form.addEventListener("submit", event => {
  event.preventDefault();
  if (!valid()) return;

  const subject = "厨房翻新报价咨询|" + $("postcode").value;
  const url = mailto:${CONTACT.email} +
    ?subject=${encodeURIComponent(subject)} +
    &body=${encodeURIComponent(message())};

  $("status").textContent =
    "正在打开邮箱;如果没有打开,请先配置设备的默认邮件应用。邮件尚未自动发送。";
  window.location.href = url;
});

$("whatsapp").addEventListener("click", event => {
  event.preventDefault();
  if (!valid()) return;

  $("status").textContent = "正在打开 WhatsApp,请确认消息后发送。";
  window.location.href =
    https://wa.me/${CONTACT.whatsapp}?text=${encodeURIComponent(message())};
});

updateEstimate();
</script>
</body>
</html>


请核对:全部含 GST;无优惠,未扣折扣;基础 A$18,000 按算法固定计入。暂按保守口径:不足整米向上取整、水电不确定计移位、L 型加岛台两项叠加。请确认岛台是否还需计长度费,以及“陶瓷大板”和“岩板”具体如何区分。

换一家公司、换一套更乱的材料,同一段话再跑一遍

这一步是为了确认这段话不只对示例管用。下面是 学优教育 的材料跑出来的原文。

喂给它的(学优教育,虚构)
方括号里填的:我是学优教育,悉尼 Epping 的 K-12 补习社,数学和英语,8 个老师;小工具:学费估算器;邮箱 enrol@xueyou-example.com.au;WhatsApp 0412 345 678

【我的价格,前台 Cindy 整理的,2026 年第四学期】
- 小班(最多 6 人,每节 90 分钟,一学期 10 节)
  - Year 3–6:每科 A$450 / 学期
  - Year 7–10:每科 A$550 / 学期
  - Year 11–12:每科 A$680 / 学期(Year 12 Ext 2 数学另加 A$100)
- 一对一:A$85 / 小时,一学期最少买 5 小时
- 同一个孩子报两科:第二科九五折
- 第二个孩子:九折(Cindy 说兄弟姐妹优惠和两科优惠不能叠加,取高的那个;但官网上写的是可以叠加,我还没定)
- 教材费:每科每学期 A$30(Year 11–12 不收)
- 第一次试听免费
- 学费不收 GST(教育服务)
- 学期中途插班的,按剩下的节数算
AI 交出来的(用 Codex 真跑的原文)
下面是单文件、手机适配的小工具,价格集中在代码开头的 PRICES,无需安装。  
优惠冲突暂按较保守的“不叠加、取较高优惠”计算;确定配置的区间两端相同,不凭空添加浮动价格。  
保存为 fees.html 上传网站即可访问,也可用 <iframe src="/fees.html" style="width:100%;height:1100px;border:0"></iframe> 嵌入现有页面。

html
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>学优教育|学费估算器</title>
<script>
/* ===== 所有价格集中在这里修改:金额均为澳元 A$ ===== */
const PRICES = {
  termLessons: 10,
  group: { primary: 450, junior: 550, senior: 680 },
  ext2Extra: 100,
  hourly: 85,
  minimumHours: 5,
  secondSubjectMultiplier: 0.95,
  secondChildMultiplier: 0.90,
  materialsPerSubject: 30,
  trial: 0,
  gst: 0
};
</script>
<style>
*{box-sizing:border-box}
body{margin:0;background:#f2f6fa;color:#152b42;
  font-family:system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.6}
main{max-width:720px;margin:auto;padding:24px 16px 40px}
h1{font-size:27px;line-height:1.3;margin:8px 0}
h2{font-size:20px;margin:0 0 14px}
p{margin:8px 0}
.card{background:white;padding:22px;border-radius:18px;
  margin-top:18px;box-shadow:0 4px 20px #17334d09}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
label{display:block;font-weight:650}
select,input,button,.button{font:inherit;font-size:16px}
select,input{display:block;width:100%;margin-top:7px;padding:12px;
  border:1px solid #a8b9c8;border-radius:9px;background:white;color:#152b42}
select:focus,input:focus,button:focus-visible,a:focus-visible{
  outline:3px solid #ffbf47;outline-offset:3px}
.wide{grid-column:1/-1}
small,.muted{color:#526577;font-size:13px;font-weight:400}
.price{font-size:clamp(24px,5vw,36px);font-weight:800;color:#075f65}
.result{background:#eaf7f4;border:1px solid #b9ded2}
breakdown{padding-left:22px;font-size:14px}
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}
button,.button{display:inline-flex;align-items:center;justify-content:center;
  padding:13px 18px;border:0;border-radius:10px;background:#075f65;
  color:white;font-weight:700;text-decoration:none;cursor:pointer;min-height:48px}
.secondary{background:#e8f4ed;color:#125d37}
error{color:#a32620;font-weight:650}
[hidden]{display:none!important}
@media(max-width:520px){
  .grid{grid-template-columns:1fr}
  .card{padding:18px}
  .actions>*{width:100%}
}
</style>
</head>
<body>
<main>
<header>
  <p class="muted">悉尼 Epping · K–12 · 数学 Maths / 英语 English</p>
  <h1>学优教育|学费估算器</h1>
  <p>2026 年第四学期 · Term 4</p>
  <p class="muted">最多选 5 项,马上看本学期估算。首次试听免费。</p>
</header>

<section class="card" aria-labelledby="chooseTitle">
<h2 id="chooseTitle">选择课程</h2>
<div class="grid">
  <label>1. 课程形式 · Format
    <select id="mode">
      <option value="group">小班 Small group · 最多 6 人</option>
      <option value="private">一对一 1-to-1</option>
    </select>
  </label>
  <label>2. 年级 · Year
    <select id="year">
      <option value="primary">Year 3–6</option>
      <option value="junior">Year 7–10</option>
      <option value="senior">Year 11–12</option>
      <option value="ext2">Year 12 · Ext 2 数学</option>
      <option value="early">Kindergarten–Year 2(仅一对一)</option>
    </select>
  </label>
  <label>3. 科目 · Subjects
    <select id="subjects">
      <option value="maths">数学 Maths</option>
      <option value="english">英语 English</option>
      <option value="both">数学 + 英语 Maths + English</option>
    </select>
  </label>
  <label>4. 孩子人数 · Children
    <select id="children">
      <option value="1">1 个孩子</option>
      <option value="2">2 个孩子(相同课程配置)</option>
    </select>
  </label>
  <label class="wide">
    <span id="quantityLabel">5. 本学期剩余节数 · Lessons</span>
    <select id="quantity"></select>
  </label>
</div>
<p id="courseNote" class="muted"></p>
<p class="muted">
  两个孩子按相同年级档、科目及节数/课时估算。
  不同配置请分别估算,并联系前台确认家庭报价。
</p>
<p id="error" role="alert" hidden></p>
</section>

<section class="card result" aria-labelledby="resultTitle">
<h2 id="resultTitle">本学期估算 · Estimate</h2>
<div id="result" aria-live="polite" aria-atomic="true"></div>
<ul id="breakdown"></ul>
<p class="muted">这是估算,以正式书面报价为准。</p>
<p class="muted">按提供的收费规则:学费不收 GST;教材费税务口径待确认,未另加税额。</p>
</section>

<section class="card" aria-labelledby="contactTitle">
<h2 id="contactTitle">获取准确报价 · Request a quote</h2>
<form id="contact">
<div class="grid">
  <label>称呼 · Name
    <input id="name" name="name" autocomplete="name" maxlength="80" required>
  </label>
  <label>电话 · Phone
    <input id="phone" name="phone" type="tel" autocomplete="tel"
      inputmode="tel" maxlength="30" required>
  </label>
  <label>邮编 · Postcode
    <input id="postcode" name="postcode" autocomplete="postal-code"
      inputmode="numeric" pattern="[0-9]{4}" maxlength="4"
      title="请输入四位澳大利亚邮编" required>
  </label>
  <label>想什么时候开始 · Start
    <input id="start" name="start" placeholder="例如:下周 / 下学期"
      maxlength="100" required>
  </label>
</div>
<div class="actions">
  <button type="submit">把估算发给我们</button>
  <button type="button" id="whatsapp" class="secondary">WhatsApp 联系</button>
</div>
<p id="status" class="muted" role="status"></p>
<p class="muted">
  邮件按钮打开您自己的邮箱;WhatsApp 按钮打开 WhatsApp。
  请在对应应用内确认发送。填写内容不会保存或上传到本站服务器;
  发送后由您选用的邮件或 WhatsApp 服务处理。
</p>
</form>
</section>
</main>

<script>
"use strict";
const $ = id => document.getElementById(id);
const money = value => "A$" + value.toLocaleString("en-AU", {
  minimumFractionDigits: 2, maximumFractionDigits: 2
});
let estimate = null;

function refreshOptions() {
  const privateMode = $("mode").value === "private";
  const both = $("subjects").querySelector('[value="both"]');
  both.disabled = privateMode;
  if (privateMode && $("subjects").value === "both") {
    $("subjects").value = "maths";
  }

  $("quantityLabel").textContent = privateMode
    ? "5. 每个孩子本学期总课时 · Hours"
    : "5. 本学期剩余节数 · Lessons";

  $("quantity").replaceChildren();
  if (privateMode) {
    // 最多展示 40 小时只是界面选项,并非额外收费规则。
    for (let n = PRICES.minimumHours; n <= 40; n++) {
      $("quantity").add(new Option(n + " 小时", n));
    }
  } else {
    for (let n = 1; n <= PRICES.termLessons; n++) {
      $("quantity").add(new Option(n + " 节", n));
    }
    $("quantity").value = String(PRICES.termLessons);
  }

  $("courseNote").textContent = privateMode
    ? "一对一每学期至少购买 " + PRICES.minimumHours +
      " 小时。本工具一次估算一科;两科课时安排请联系前台。"
    : "小班每节 90 分钟,一学期 " + PRICES.termLessons +
      " 节;插班学费按剩余节数比例计算。";
}

function calculate() {
  const mode = $("mode").value;
  const year = $("year").value;
  const subject = $("subjects").value;
  const count = Number($("children").value);
  const quantity = Number($("quantity").value);
  const group = mode === "group";
  const senior = year === "senior" || year === "ext2";
  const subjects = subject === "both" ? ["maths", "english"] : [subject];

  let problem = "";
  if (group && year === "early") {
    problem = "尚未提供 K–Year 2 的小班价格,请选择一对一。";
  }
  if (year === "ext2" && subject === "english") {
    problem = "Ext 2 是数学课程;英语请选择 Year 11–12。";
  }
  $("error").hidden = !problem;
  $("error").textContent = problem;
  $("breakdown").replaceChildren();
  estimate = null;
  if (problem) {
    $("result").textContent = "请选择有效课程配置";
    return;
  }

  const base = group
    ? PRICES.group[senior ? "senior" : year] *
      quantity / PRICES.termLessons
    : PRICES.hourly * quantity;

  const amounts = subjects.map(s => base +
    (group && year === "ext2" && s === "maths"
      ? PRICES.ext2Extra * quantity / PRICES.termLessons : 0));

  // 两科无先后顺序:保守地把较低价科目作为第二科。
  // 第二个孩子每科九折;不与第二科九五折叠加。
  const secondIndex = amounts.length === 2
    ? (amounts[0] < amounts[1] ? 0 : 1) : -1;

  let tuition = 0;
  const details = [];
  for (let child = 0; child < count; child++) {
    let childTuition = 0;
    amounts.forEach((amount, index) => {
      const subjectRate = index === secondIndex
        ? PRICES.secondSubjectMultiplier : 1;
      const siblingRate = child === 1
        ? PRICES.secondChildMultiplier : 1;
      childTuition += amount * Math.min(subjectRate, siblingRate);
    });
    childTuition = Math.round(childTuition * 100) / 100;
    tuition += childTuition;
    details.push("孩子 " + (child + 1) + " 学费:" + money(childTuition));
  }

  // 教材费按每科每学期收取,不随插班节数折算,不参与学费优惠。
  const materials = senior ? 0
    : PRICES.materialsPerSubject * subjects.length * count;
  const total = Math.round((tuition + materials) * 100) / 100;
  details.push("教材费:" + money(materials));
  details.push("首次试听:" + money(PRICES.trial));
  details.push("优惠:第二科九五折;第二个孩子九折,不叠加,取较高优惠。");

  const price = document.createElement("div");
  price.className = "price";
  price.textContent = "大概 " + money(total) + " – " + money(total);
  const note = document.createElement("p");
  note.className = "muted";
  note.textContent = "当前配置金额固定,因此区间上下限相同;已计入教材费。";
  $("result").replaceChildren(price, note);
  details.forEach(detail => {
    const li = document.createElement("li");
    li.textContent = detail;
    $("breakdown").append(li);
  });

  estimate = {
    total,
    details,
    choices: [
      "课程:" + $("mode").selectedOptions[0].textContent,
      "年级:" + $("year").selectedOptions[0].textContent,
      "科目:" + $("subjects").selectedOptions[0].textContent,
      "孩子人数:" + count + "(相同配置)",
      (group ? "每科剩余节数:" : "每个孩子总课时:") + quantity
    ]
  };
}

function makeMessage() {
  calculate();
  if (!estimate) {
    $("error").focus();
    return null;
  }
  const form = $("contact");
  for (const id of ["name", "phone", "postcode", "start"]) {
    const input = $(id);
    input.setCustomValidity(input.value.trim() ? "" : "请填写此项");
  }
  if (!form.reportValidity()) return null;

  return [
    "学优教育学费咨询|2026 年第四学期",
    "",
    ...estimate.choices,
    "大概 " + money(estimate.total) + " – " + money(estimate.total),
    ...estimate.details,
    "学费不收 GST;教材费税务口径待确认,未另加税额。",
    "这是估算,以正式书面报价为准。",
    "",
    "称呼:" + $("name").value.trim(),
    "电话:" + $("phone").value.trim(),
    "邮编:" + $("postcode").value.trim(),
    "想什么时候开始:" + $("start").value.trim()
  ].join("\n");
}

$("contact").addEventListener("input", event => {
  if (event.target.setCustomValidity) event.target.setCustomValidity("");
});

$("contact").addEventListener("submit", event => {
  event.preventDefault();
  const message = makeMessage();
  if (!message) return;
  const url = "mailto:enrol@xueyou-example.com.au?subject=" +
    encodeURIComponent("学优教育|学费估算及准确报价咨询") +
    "&body=" + encodeURIComponent(message);
  window.location.href = url;
  $("status").textContent =
    "已请求打开邮箱,请在邮件应用中确认发送;若未打开,请检查设备默认邮箱设置。";
});

$("whatsapp").addEventListener("click", () => {
  const message = makeMessage();
  if (!message) return;
  window.open("https://wa.me/61412345678?text=" +
    encodeURIComponent(message), "_blank", "noopener,noreferrer");
  $("status").textContent =
    "已请求打开 WhatsApp,请在应用内确认发送。";
});

$("mode").addEventListener("change", () => {
  refreshOptions();
  calculate();
});
["year", "subjects", "children", "quantity"].forEach(id => {
  $(id).addEventListener("change", calculate);
});
refreshOptions();
calculate();
</script>
</body>
</html>


请核对:①兄弟姐妹优惠暂不叠加,是否最终采用?②学费按您提供的“不收 GST”显示;教材费 A$30 是否已含应付税额?③教材费暂按整学期、不打折,一对一也收;是否正确?④Ext 2 加价暂随剩余节数折算,并参与学费优惠;两科价格不同时,暂将较低价科目作为第二科,是否正确?

复制这段话给 AI

我是[你做什么、在哪]。想在网站上放一个[估算器名称,比如厨房翻新预算估算器]:客户自己点几下,马上看到大概价格区间,想要准确报价就留电话。我的……
完整这段话是付费内容它是这个案例真正能拿去用的部分:每一句为什么这么写,都是我们换了几家公司、几套材料反复跑出来的。解锁全部案例 已加入 · 登录

方括号 [ ] 里的换成你自己的。手机上直接说也行:打开 ChatGPT,按住麦克风念给它。

三步做完

  1. 打开 ChatGPT,粘贴这段话,把方括号换成你的,价格贴在后面
  2. 把它给的代码存成一个 .html 文件,双击用浏览器打开,自己点几遍、用手机也试一遍
  3. 核一遍价格:随便选几项,心算一下区间对不对
  4. 让管网站的人把它放进网站(大多数建站后台都有「嵌入 HTML」的地方),上线后自己从手机发一次估算到自己邮箱试试

交出来以后,看这几处

最后一步:换成你自己的

示例跑通了,就把方括号里的换成你自己的真东西(你的起步价和几个常见加价项(大概的区间就行);收询价的邮箱和 WhatsApp 号码;能改你网站的人或网站后台),再跑一次。哪里不对,直接跟它说「这里不对,应该是……」,它会改。改到满意,把这段话存进手机备忘录,下次直接用。

注意估算器只给区间,不是报价,最后价格以上门量尺后的书面报价为准。放上网站要能登录你的网站后台,自己不会弄就交给帮你做网站的人。客户留的电话只用来回他的询价,别拿去群发广告。

题目灵感:The Rundown AI · Build Interactive Lead Magnets With Canva Code、The Rundown AI · How To Build a Lead Magnet Tool for Your Website With Replit。提示词和成品是我们自己写、自己跑的。

相关案例