feat(start,tutorial): add day 1-7 links, tracked BotFather link, mobile prep box

- /openclaw-tutorial: add 'Continue with the 7-day OpenClaw course'
  section with tracked internal links to /day/1 through /day/7
- /start: turn @BotFather into a tracked outbound link
  (botfather_click event) in the access step, EN + ZH
- /start: show the 'what do I need before starting' prep box in the
  hero on mobile so 390px first screen shows prep items + main CTA
- analytics: add botfather_click to tracked event names
- sitemap: refresh lastmod via postbuild
This commit is contained in:
Hermes Mojie
2026-07-20 21:52:36 +00:00
parent fa0f88c429
commit 0ab7e97d93
5 changed files with 83 additions and 26 deletions
+1 -1
View File
@@ -2,6 +2,6 @@
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://openclaw101.dev/sitemap.xml</loc>
<lastmod>2026-07-09T02:11:33.151Z</lastmod>
<lastmod>2026-07-20T21:43:21.648Z</lastmod>
</sitemap>
</sitemapindex>
+23 -23
View File
@@ -5,7 +5,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/"/>
<lastmod>2026-07-09T02:07:33.249Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
@@ -14,7 +14,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/"/>
<lastmod>2026-07-09T02:07:33.249Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
@@ -23,7 +23,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/resources"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/resources"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/resources"/>
<lastmod>2026-07-09T02:10:31.388Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
@@ -32,7 +32,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/resources"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/resources"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/resources"/>
<lastmod>2026-07-09T02:10:31.388Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
@@ -41,7 +41,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/start"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/start"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/start"/>
<lastmod>2026-07-09T02:11:33.151Z</lastmod>
<lastmod>2026-07-20T21:43:21.648Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
@@ -50,7 +50,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/start"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/start"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/start"/>
<lastmod>2026-07-09T02:11:33.151Z</lastmod>
<lastmod>2026-07-20T21:43:21.648Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
@@ -59,7 +59,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/openclaw-tutorial"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/start"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/openclaw-tutorial"/>
<lastmod>2026-07-09T02:11:33.151Z</lastmod>
<lastmod>2026-07-20T21:43:21.648Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
@@ -68,7 +68,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/privacy"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/privacy"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/privacy"/>
<lastmod>2026-07-01T00:31:09.104Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.3</priority>
</url>
@@ -77,7 +77,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/terms"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/terms"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/terms"/>
<lastmod>2026-07-01T00:31:09.104Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>yearly</changefreq>
<priority>0.3</priority>
</url>
@@ -86,7 +86,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/1"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/1"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/1"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -95,7 +95,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/1"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/1"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/1"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -104,7 +104,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/2"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/2"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/2"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -113,7 +113,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/2"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/2"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/2"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -122,7 +122,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/3"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/3"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/3"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -131,7 +131,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/3"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/3"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/3"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -140,7 +140,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/4"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/4"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/4"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -149,7 +149,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/4"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/4"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/4"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -158,7 +158,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/5"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/5"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/5"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -167,7 +167,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/5"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/5"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/5"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -176,7 +176,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/6"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/6"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/6"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -185,7 +185,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/6"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/6"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/6"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -194,7 +194,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/7"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/7"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/7"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
@@ -203,7 +203,7 @@
<xhtml:link rel="alternate" hreflang="en" href="https://openclaw101.dev/day/7"/>
<xhtml:link rel="alternate" hreflang="zh-CN" href="https://openclaw101.dev/zh/day/7"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://openclaw101.dev/day/7"/>
<lastmod>2026-07-01T00:28:00.498Z</lastmod>
<lastmod>2026-07-20T21:18:50.927Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.9</priority>
</url>
+32
View File
@@ -167,6 +167,16 @@ const conversionContractRows = [
];
const dayPathLinks = [
{ day: 1, title: 'Meet OpenClaw' },
{ day: 2, title: 'Build Your Assistant in 10 Minutes' },
{ day: 3, title: 'Give Your Assistant a Soul' },
{ day: 4, title: 'Connect Your Digital Life' },
{ day: 5, title: 'Unlock the Skill Tree' },
{ day: 6, title: 'Make Your Assistant Work Proactively' },
{ day: 7, title: 'Advanced Techniques & Future Outlook' },
];
const nextStepCards = [
{
title: 'Need the shortest route?',
@@ -373,6 +383,28 @@ export default function OpenClawTutorialPage() {
</div>
</section>
<section className="px-4 pb-20">
<div className="mx-auto max-w-5xl">
<div className="mb-8 max-w-3xl">
<h2 className="text-3xl font-black">Continue with the 7-day OpenClaw course</h2>
<p className="mt-3 leading-7 text-white/62">
After the first reply works, follow the full path in order. Each day builds on the previous setup: soul design, digital life access, skills, proactive jobs, and automation.
</p>
</div>
<div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
{dayPathLinks.map((item) => (
<article key={item.day} className="rounded-2xl border border-white/10 bg-white/[0.04] p-5">
<div className="text-xs font-bold uppercase tracking-[0.16em] text-emerald-200/75">Day {item.day}</div>
<h3 className="mt-2 text-base font-black text-white">{item.title}</h3>
<TutorialTrackedLink href={`/day/${item.day}`} eventName="tutorial_step_click" source="day_path_grid" intent={`day_${item.day}_guide`} className="mt-4 inline-flex text-sm font-bold text-blue-300 hover:text-blue-200">
Open Day {item.day}
</TutorialTrackedLink>
</article>
))}
</div>
</div>
</section>
<section className="px-4 pb-20">
<div className="mx-auto max-w-5xl rounded-3xl border border-blue-400/20 bg-blue-400/10 p-6 sm:p-8">
<div className="max-w-3xl">
+25 -1
View File
@@ -48,6 +48,7 @@ const copy = {
],
commandLabel: 'Install command',
command: 'curl -fsSL https://openclaw.ai/install.sh | bash',
botfatherCta: 'Open @BotFather in Telegram ↗',
trust: ['Native Windows supported', 'QuickStart wizard', 'Telegram first channel', 'No platform lock-in'],
safetyTitle: 'Do not paste secrets into public chats',
safety:
@@ -92,6 +93,7 @@ const copy = {
],
commandLabel: '安装命令',
command: 'curl -fsSL https://openclaw.ai/install.sh | bash',
botfatherCta: '打开 Telegram @BotFather ↗',
trust: ['支持原生 Windows', 'QuickStart 向导', 'Telegram 首选通道', '不绑定平台'],
safetyTitle: '不要把 secrets 发到公开聊天里',
safety:
@@ -247,6 +249,10 @@ export default function StartSetupPage({ locale }: StartSetupPageProps) {
{t.secondaryCta}
</a>
</div>
<div className="mt-6 rounded-2xl border border-emerald-400/20 bg-emerald-400/10 p-4 lg:hidden">
<h2 className="text-base font-black text-emerald-100">{t.noteTitle}</h2>
<p className="mt-2 text-sm leading-6 text-emerald-50/75">{t.note}</p>
</div>
<div className="mt-8 grid gap-3 sm:grid-cols-4">
{t.trust.map((item) => (
<div key={item} className="rounded-2xl border border-white/10 bg-white/[0.04] px-4 py-3 text-sm text-white/70">
@@ -275,6 +281,24 @@ export default function StartSetupPage({ locale }: StartSetupPageProps) {
<div>
<h3 className="font-bold text-white">{title}</h3>
<p className="mt-2 text-sm leading-6 text-white/62">{desc}</p>
{id === 'access' ? (
<a
href="https://t.me/BotFather"
target="_blank"
rel="noopener noreferrer"
onClick={() =>
trackEvent('botfather_click', {
locale,
page: '/start',
source: 'access_step',
target: 'https://t.me/BotFather',
})
}
className="mt-3 inline-flex items-center gap-1 rounded-lg border border-sky-300/25 bg-sky-300/10 px-3 py-1.5 text-xs font-bold text-sky-100 transition hover:bg-sky-300/15"
>
{t.botfatherCta}
</a>
) : null}
<div className="mt-3 inline-flex rounded-full border border-white/10 px-3 py-1.5 text-xs font-bold text-blue-200">
{locale === 'zh' ? `${number}` : `Step ${number}`}
</div>
@@ -286,7 +310,7 @@ export default function StartSetupPage({ locale }: StartSetupPageProps) {
</div>
<aside className="space-y-6">
<div className="rounded-3xl border border-emerald-400/20 bg-emerald-400/10 p-6">
<div className="hidden rounded-3xl border border-emerald-400/20 bg-emerald-400/10 p-6 lg:block">
<h2 className="text-xl font-black text-emerald-100">{t.noteTitle}</h2>
<p className="mt-3 text-sm leading-6 text-emerald-50/75">{t.note}</p>
</div>
+2 -1
View File
@@ -32,7 +32,8 @@ export type AnalyticsEventName =
| 'resource_no_results'
| 'resource_recovery_click'
| 'utm_copy_click'
| 'hero_scroll_indicator_click';
| 'hero_scroll_indicator_click'
| 'botfather_click';
interface AnalyticsEventProperties {
[key: string]: string | number | boolean | undefined;