Max Potential First Input Delay
230 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
正文
376
操作候选
4
图片
30
HTML
100 KB
主要入口
手气不错
Next.js / Lovable / v0 / Tailwind
移动端模拟 · 性能评分
2026-09-05 · 实验室数据,非真实用户体验数据。
移动端模拟 · 实验室数据,非真实用户体验数据
2026-09-05T04:37:54.017Z · Lighthouse 13.4.1
分数会受服务器、网络和测试环境影响,独立于品味/转化评分。诊断保留 Lighthouse 原文。
230 ms
The maximum potential First Input Delay that your users could experience is the duration of the longest task. Learn more about the Maximum Potential First Input Delay metric.
11.9 s
Time to Interactive is the amount of time it takes for the page to become fully interactive. Learn more about the Time to Interactive metric.
3.5 s
Consider reducing the time spent parsing, compiling and executing JS. You may find delivering smaller JS payloads helps with this. Learn how to minimize main-thread work
{
"type": "table",
"items": [
{
"group": "styleLayout",
"duration": 1282.5880000000002,
"groupLabel": "Style & Layout"
},
{
"group": "other",
"duration": 1181.0079999999753,
"groupLabel": "Other"
},
{
"group": "scriptEvaluation",
"duration": 568.5080000000003,
"groupLabel": "Script Evaluation"
},
{
"group": "paintCompositeRender",
"duration": 267.064,
"groupLabel": "Rendering"
},
{
"group": "scriptParseCompile",
"duration": 116.95200000000001,
"groupLabel": "Script Parsing & Compilation"
},
{
"group": "parseHTML",
"duration": 32.92,
"groupLabel": "Parse HTML & CSS"
},
{
"group": "garbageCollection",
"duration": 24.367999999999988,
"groupLabel": "Garbage Collection"
}
],
"headings": [
{
"key": "groupLabel",
"label": "Category",
"valueType": "text"
},
{
"key": "duration",
"label": "Time Spent",
"valueType": "ms",
"granularity": 1
}
],
"sortedBy": [
"duration"
]
}Visible text labels that do not match the accessible name can result in a confusing experience for screen reader users. Learn more about accessible names.
{
"type": "table",
"items": [
{
"node": {
"lhId": "1-0-BUTTON",
"path": "1,HTML,1,BODY,3,DIV,1,HEADER,0,DIV,2,DIV,0,DIV,0,BUTTON",
"type": "node",
"snippet": "<button class=\"language-trigger\" aria-label=\"选择语言\" aria-haspopup=\"menu\" aria-expanded=\"false\" aria-controls=\"_R_tilvivb_\" aria-busy=\"false\">",
"selector": "div.mx-auto > div.flex > div.language-switch > button.language-trigger",
"nodeLabel": "中文",
"explanation": "Fix any of the following:\n Text inside the element is not included in the accessible name",
"boundingRect": {
"top": 12,
"left": 168,
"right": 250,
"width": 82,
"bottom": 52,
"height": 40
}
}
}
],
"headings": [
{
"key": "node",
"label": "Failing Elements",
"valueType": "node",
"subItemsHeading": {
"key": "relatedNode",
"valueType": "node"
}
}
],
"debugData": {
"tags": [
"cat.semantics",
"wcag21a",
"wcag253",
"EN-301-549",
"EN-9.2.5.3",
"RGAAv4",
"RGAA-6.1.5",
"experimental"
],
"type": "debugdata",
"impact": "serious"
}
}Total size was 3,014 KiB
Large network payloads cost users real money and are highly correlated with long load times. Learn how to reduce payload sizes.
{
"type": "table",
"items": [
{
"url": "https://vibecheck.itool.tech/api/v1/scans/lovable-dev/screenshot?kind=desktop",
"totalBytes": 715973
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/readymag-com/screenshot?kind=desktop",
"totalBytes": 619658
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/cursor-com/screenshot?kind=desktop",
"totalBytes": 282294
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/teenage-engineering/screenshot?kind=desktop",
"totalBytes": 203564
},
{
"url": "https://vibecheck.itool.tech/images/macbook-pro-front-hardware.png",
"totalBytes": 142199
},
{
"url": "https://vibecheck.itool.tech/_next/static/css/93829c03ac31244e.css",
"totalBytes": 129168
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/gumroad-com/screenshot?kind=desktop",
"totalBytes": 85374
},
{
"url": "https://vibecheck.itool.tech/_next/static/media/b53c1142b9136fe1-s.woff2",
"totalBytes": 76797
},
{
"url": "https://vibecheck.itool.tech/_next/static/media/1cd350d5fca802aa-s.woff2",
"totalBytes": 61932
},
{
"url": "https://vibecheck.itool.tech/_next/static/media/b465fe72c6993d96-s.woff2",
"totalBytes": 60467
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes"
}
],
"sortedBy": [
"totalBytes"
]
}Est savings of 110 KiB
Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. Learn how to reduce unused CSS.
{
"type": "opportunity",
"items": [
{
"url": "https://vibecheck.itool.tech/_next/static/css/93829c03ac31244e.css",
"totalBytes": 112749,
"wastedBytes": 112728,
"wastedPercent": 99.98141273954668
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes"
},
{
"key": "wastedBytes",
"label": "Est Savings",
"valueType": "bytes"
}
],
"sortedBy": [
"wastedBytes"
],
"debugData": {
"type": "debugdata",
"metricSavings": {
"FCP": 450,
"LCP": 450
}
},
"overallSavingsMs": 450,
"overallSavingsBytes": 112728
}3 failure reasons
Many navigations are performed by going back to a previous page, or forwards again. The back/forward cache (bfcache) can speed up these return navigations. Learn more about the bfcache
{
"type": "table",
"items": [
{
"reason": "Pages with cache-control:no-store header cannot enter back/forward cache.",
"subItems": {
"type": "subitems",
"items": [
{
"frameUrl": "https://vibecheck.itool.tech/zh"
}
]
},
"failureType": "Actionable",
"protocolReason": "CacheControlNoStoreHTTPOnlyCookieModified"
},
{
"reason": "Pages whose main resource has cache-control:no-store cannot enter back/forward cache.",
"subItems": {
"type": "subitems",
"items": [
{
"frameUrl": "https://vibecheck.itool.tech/zh"
}
]
},
"failureType": "Not actionable",
"protocolReason": "MainResourceHasCacheControlNoStore"
},
{
"reason": "Back/forward cache is disabled because some JavaScript network request received resource with Cache-Control: no-store header.",
"subItems": {
"type": "subitems",
"items": [
{
"frameUrl": "https://vibecheck.itool.tech/zh"
}
]
},
"failureType": "Not actionable",
"protocolReason": "JsNetworkRequestReceivedCacheControlNoStoreResource"
}
],
"headings": [
{
"key": "reason",
"label": "Failure reason",
"valueType": "text",
"subItemsHeading": {
"key": "frameUrl",
"valueType": "url"
}
},
{
"key": "failureType",
"label": "Failure type",
"valueType": "text"
}
]
}Est savings of 820 KiB
A long cache lifetime can speed up repeat visits to your page. Learn more about caching.
{
"type": "table",
"items": [
{
"url": "https://vibecheck.itool.tech/api/v1/scans/lovable-dev/screenshot?kind=desktop",
"totalBytes": 715973,
"wastedBytes": 286389.2,
"cacheLifetimeMs": 86400000
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/readymag-com/screenshot?kind=desktop",
"totalBytes": 619658,
"wastedBytes": 247863.2,
"cacheLifetimeMs": 86400000
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/cursor-com/screenshot?kind=desktop",
"totalBytes": 282294,
"wastedBytes": 112917.6,
"cacheLifetimeMs": 86400000
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/teenage-engineering/screenshot?kind=desktop",
"totalBytes": 203564,
"wastedBytes": 81425.6,
"cacheLifetimeMs": 86400000
},
{
"url": "https://vibecheck.itool.tech/images/macbook-pro-front-hardware.png",
"totalBytes": 142199,
"wastedBytes": 56879.600000000006,
"cacheLifetimeMs": 86400000
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/gumroad-com/screenshot?kind=desktop",
"totalBytes": 85374,
"wastedBytes": 34149.6,
"cacheLifetimeMs": 86400000
},
{
"url": "https://vibecheck.itool.tech/images/macbook-pro-front-source.jpg",
"totalBytes": 46499,
"wastedBytes": 18599.600000000002,
"cacheLifetimeMs": 86400000
},
{
"url": "https://vibecheck.itool.tech/images/crayon-underline.svg",
"totalBytes": 3785,
"wastedBytes": 1514,
"cacheLifetimeMs": 86400000
}
],
"headings": [
{
"key": "url",
"label": "Request",
"valueType": "url"
},
{
"key": "cacheLifetimeMs",
"label": "Cache TTL",
"valueType": "ms",
"displayUnit": "duration"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes",
"displayUnit": "kb",
"granularity": 1
}
],
"sortedBy": [
"wastedBytes"
],
"debugData": {
"type": "debugdata",
"wastedBytes": 839738.3999999999
},
"skipSumming": [
"cacheLifetimeMs"
]
}Est savings of 1,815 KiB
Reducing the download time of images can improve the perceived load time of the page and LCP. Learn more about optimizing image size
{
"type": "table",
"items": [
{
"url": "https://vibecheck.itool.tech/api/v1/scans/lovable-dev/screenshot?kind=desktop",
"node": {
"lhId": "page-0-IMG",
"path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,0,DIV,0,DIV,11,A,0,DIV,0,IMG",
"type": "node",
"snippet": "<img src=\"/api/v1/scans/lovable-dev/screenshot?kind=desktop\" alt=\"Lovable\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
"selector": "div.marquee-track-left > a.group > div.relative > img.h-full",
"nodeLabel": "Lovable",
"boundingRect": {
"top": 443,
"left": 3495,
"right": 3813,
"width": 318,
"bottom": 618,
"height": 175
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
"wastedBytes": 525604
},
{
"reason": "This image file is larger than it needs to be (1440x791) for its displayed dimensions (318x199). Use responsive images to reduce the image download size.",
"wastedBytes": 675873
}
]
},
"totalBytes": 715554,
"wastedBytes": 705020
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/readymag-com/screenshot?kind=desktop",
"node": {
"lhId": "page-1-IMG",
"path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,1,DIV,0,DIV,14,A,0,DIV,0,IMG",
"type": "node",
"snippet": "<img src=\"/api/v1/scans/readymag-com/screenshot?kind=desktop\" alt=\"Readymag\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
"selector": "div.marquee-track-right > a.group > div.relative > img.h-full",
"nodeLabel": "Readymag",
"boundingRect": {
"top": 741,
"left": 3314,
"right": 3632,
"width": 318,
"bottom": 916,
"height": 175
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
"wastedBytes": 429343
},
{
"reason": "This image file is larger than it needs to be (1440x791) for its displayed dimensions (318x199). Use responsive images to reduce the image download size.",
"wastedBytes": 584950
}
]
},
"totalBytes": 619293,
"wastedBytes": 608759
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/cursor-com/screenshot?kind=desktop",
"node": {
"lhId": "page-2-IMG",
"path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,0,DIV,0,DIV,10,A,0,DIV,0,IMG",
"type": "node",
"snippet": "<img src=\"/api/v1/scans/cursor-com/screenshot?kind=desktop\" alt=\"Cursor\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
"selector": "div.marquee-track-left > a.group > div.relative > img.h-full",
"nodeLabel": "Cursor",
"boundingRect": {
"top": 443,
"left": 3155,
"right": 3473,
"width": 318,
"bottom": 618,
"height": 175
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
"wastedBytes": 92077
},
{
"reason": "This image file is larger than it needs to be (1440x791) for its displayed dimensions (318x199). Use responsive images to reduce the image download size.",
"wastedBytes": 266387
}
]
},
"totalBytes": 282027,
"wastedBytes": 271493
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/teenage-engineering/screenshot?kind=desktop",
"node": {
"lhId": "page-3-IMG",
"path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,1,DIV,0,DIV,10,A,0,DIV,0,IMG",
"type": "node",
"snippet": "<img src=\"/api/v1/scans/teenage-engineering/screenshot?kind=desktop\" alt=\"teenage engineering\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
"selector": "div.marquee-track-right > a.group > div.relative > img.h-full",
"nodeLabel": "teenage engineering",
"boundingRect": {
"top": 741,
"left": 1954,
"right": 2272,
"width": 318,
"bottom": 916,
"height": 175
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
"wastedBytes": 13474
},
{
"reason": "This image file is larger than it needs to be (1440x791) for its displayed dimensions (318x199). Use responsive images to reduce the image download size.",
"wastedBytes": 192143
}
]
},
"totalBytes": 203424,
"wastedBytes": 192890
},
{
"url": "https://vibecheck.itool.tech/api/v1/scans/gumroad-com/screenshot?kind=desktop",
"node": {
"lhId": "page-4-IMG",
"path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,1,DIV,0,DIV,11,A,0,DIV,0,IMG",
"type": "node",
"snippet": "<img src=\"/api/v1/scans/gumroad-com/screenshot?kind=desktop\" alt=\"Gumroad\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
"selector": "div.marquee-track-right > a.group > div.relative > img.h-full",
"nodeLabel": "Gumroad",
"boundingRect": {
"top": 741,
"left": 2294,
"right": 2612,
"width": 318,
"bottom": 916,
"height": 175
}
},
"subItems": {
"type": "subitems",
"items": [
{
"reason": "This image file is larger than it needs to be (1440x791) for its displayed dimensions (318x199). Use responsive images to reduce the image download size.",
"wastedBytes": 80567
}
]
},
"totalBytes": 85297,
"wastedBytes": 80567
}
],
"headings": [
{
"key": "node",
"label": "",
"valueType": "node"
},
{
"key": "url",
"label": "URL",
"valueType": "url",
"subItemsHeading": {
"key": "reason",
"valueType": "text"
}
},
{
"key": "totalBytes",
"label": "Resource Size",
"valueType": "bytes"
},
{
"key": "wastedBytes",
"label": "Est Savings",
"valueType": "bytes",
"subItemsHeading": {
"key": "wastedBytes",
"valueType": "bytes"
}
}
],
"debugData": {
"type": "debugdata",
"wastedBytes": 1858729
}
}Optimize LCP by making the LCP image discoverable from the HTML immediately, and avoiding lazy-loading
{
"type": "list",
"items": [
{
"type": "checklist",
"items": {
"eagerlyLoaded": {
"label": "LCP resources should not use loading=lazy",
"value": false
},
"priorityHinted": {
"label": "fetchpriority=high should be applied",
"value": false
},
"requestDiscoverable": {
"label": "Request is discoverable in initial document",
"value": true
}
}
},
{
"lhId": "page-5-IMG",
"path": "1,HTML,1,BODY,3,DIV,2,MAIN,1,SECTION,0,DIV,0,DIV,0,DIV,0,A,0,DIV,0,IMG",
"type": "node",
"snippet": "<img src=\"/api/v1/scans/cursor-com/screenshot?kind=desktop\" alt=\"Cursor\" width=\"640\" height=\"360\" loading=\"lazy\" class=\"h-full w-full object-cover object-top transition-transform duration-500 ea…\">",
"selector": "div.marquee-track-left > a.group > div.relative > img.h-full",
"nodeLabel": "Cursor",
"boundingRect": {
"top": 443,
"left": -245,
"right": 73,
"width": 318,
"bottom": 618,
"height": 175
}
}
]
}Est savings of 11 KiB
Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile Baseline features, unless you know you must support older browsers. Learn why most sites can deploy ES6+ code without transpiling
{
"type": "table",
"items": [
{
"url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
"subItems": {
"type": "subitems",
"items": [
{
"signal": "Array.prototype.at",
"location": {
"url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
"line": 0,
"type": "source-location",
"column": 166927,
"urlProvider": "network"
}
},
{
"signal": "Array.prototype.flat",
"location": {
"url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
"line": 0,
"type": "source-location",
"column": 166315,
"urlProvider": "network"
}
},
{
"signal": "Array.prototype.flatMap",
"location": {
"url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
"line": 0,
"type": "source-location",
"column": 166428,
"urlProvider": "network"
}
},
{
"signal": "Object.fromEntries",
"location": {
"url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
"line": 0,
"type": "source-location",
"column": 166804,
"urlProvider": "network"
}
},
{
"signal": "Object.hasOwn",
"location": {
"url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
"line": 0,
"type": "source-location",
"column": 167062,
"urlProvider": "network"
}
},
{
"signal": "String.prototype.trimEnd",
"location": {
"url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
"line": 0,
"type": "source-location",
"column": 166057,
"urlProvider": "network"
}
},
{
"signal": "String.prototype.trimStart",
"location": {
"url": "https://vibecheck.itool.tech/_next/static/chunks/128-59d92496b10b9f84.js",
"line": 0,
"type": "source-location",
"column": 165972,
"urlProvider": "network"
}
}
]
},
"wastedBytes": 11629
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url",
"subItemsHeading": {
"key": "location",
"valueType": "source-location"
}
},
{
"key": null,
"label": "",
"valueType": "code",
"subItemsHeading": {
"key": "signal"
}
},
{
"key": "wastedBytes",
"label": "Wasted bytes",
"valueType": "bytes"
}
],
"debugData": {
"type": "debugdata",
"wastedBytes": 11629
}
}Est savings of 1,310 ms
Requests are blocking the page's initial render, which may delay LCP. Deferring or inlining can move these network requests out of the critical path.
{
"type": "table",
"items": [
{
"url": "https://vibecheck.itool.tech/_next/static/css/93829c03ac31244e.css",
"wastedMs": 750,
"totalBytes": 129168
},
{
"url": "https://vibecheck.itool.tech/_next/static/css/bf7aa8067a46f911.css",
"totalBytes": 16179
},
{
"url": "https://vibecheck.itool.tech/_next/static/css/7d01a8ed4214f82b.css",
"totalBytes": 944
}
],
"headings": [
{
"key": "url",
"label": "URL",
"valueType": "url"
},
{
"key": "totalBytes",
"label": "Transfer Size",
"valueType": "bytes"
},
{
"key": "wastedMs",
"label": "Duration",
"valueType": "timespanMs"
}
]
}{
"finalUrl": "https://vibecheck.itool.tech/zh",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/151.0.0.0 Safari/537.36",
"formFactor": "mobile",
"throttlingMethod": "simulate",
"throttling": {
"rttMs": 150,
"throughputKbps": 1638.4,
"requestLatencyMs": 562.5,
"uploadThroughputKbps": 675,
"cpuSlowdownMultiplier": 4,
"downloadThroughputKbps": 1474.5600000000002
},
"metrics": [
{
"id": "largest-contentful-paint",
"unit": "millisecond",
"value": 11706.028
},
{
"id": "cumulative-layout-shift",
"unit": "unitless",
"value": 0.0010256316695518653
},
{
"id": "total-blocking-time",
"unit": "millisecond",
"value": 91.5
},
{
"id": "first-contentful-paint",
"unit": "millisecond",
"value": 2706.0280000000002
},
{
"id": "speed-index",
"unit": "millisecond",
"value": 3027.5598642231025
}
]
}01 / 值得借鉴
主标题采用 72px 加粗无衬线字体,搭配 Caveat 手写体重点词与橙色下划线 (#ff5500),在保持整洁的同时强化了品牌识别度。
展示网格直接罗列了 Cursor、Lovable、Stripe 等行业标杆案例,并同步展示调色板色块与等宽域名标签,即时建立专业感。
02 / 下一步
首次访问的用户不清楚'深度审计'产出的是评分、CSS 变量还是 AI 提示词,导致在尝试前直接跳出。
在输入框下方增加显眼的'查看示例报告'链接或展开卡片,预览包含 Token 测量值与 AI 提示词片段的实际报告。在 1440px 与 390px 视口下验证点击交互与数据渲染。
在移动端输入 URL 或在桌面端另找网址门槛较高,直接点击现有案例卡片能将测试阻力降到最低。
将所有展示卡片设为可点击并带有'试运行'悬停状态,点击时直接将目标域名(如 linear.app)填入主输入框并启动检测流程。在桌面点击和移动端触摸下验证填充与加载状态。
03 / 设计语言
背景
#fafafc文字
#0b0f19强调
#0b0f19表面
#ffffff表达也可以更准确
网页上线深度审计。 一键提取标杆设计 Token,让 AI 照着复刻高水准网页。
网页上线前深度体检。一键提取标杆设计 Token 与 AI 提示词,直出高水准代码。
明确具体的产出形式(Token 与系统提示词规则),替代抽象的复刻表述,增强说服力。04 / 检查依据
逐项查看观察、建议与采集记录。
在 X、Slack 或微信里展开成空白或套话,等于浪费已经拿到的点击。这是分发,不是装饰。
补上 og:title、og:description,以及一张和线上标题一致的 1200x630 图。
og:title=yes og:image=no
没有 action 的等待名单或联系表单是转化死路。看起来能用,点下去什么也不发生。
把表单接到一个接口、Formspark、Basin,或你真正会处理的 server action。
<form>
陌生人落到一个看起来像 AI、没有作者、没有客户、没有联系方式的站点上,不会把邮箱给你。
加上真名、真脸、真实联系方式,或一句真实客户的话。
no about, no first-person, no quote
看不到谁跳出,就不知道下一次修改有没有用。没有计数就等于盲飞。
在公开页放上 Plausible、PostHog 或 GA4。一段脚本就够。
no gtag / plausible / posthog / umami
想买、想问、想投诉的人没有出口。这是转化漏洞,也是信任漏洞。
页脚放一个能用的邮箱、表单,或真实社交账号。一个就够。
no mailto / telegram / x / github / email
标签、分享卡、首屏各说各的,访客就记不住这是同一个产品。
让 title、og:title 和 H1 共用同一个名词。
title="VibeCheck · 网站气质检测" h1="从 Vibe 到专业"
没有 Strict-Transport-Security,第一次访问仍可能被降到 http。浏览器不会钉死 HTTPS。
在边缘设置 Strict-Transport-Security: max-age=31536000; includeSubDomains。
strict-transport-security missing
CSP 是限制脚本源的标准做法。vibe 页面常常什么都加载,包括被注入的脚本。
先开 report-only CSP,再收成 default-src 'self' 和明确的 script-src。
content-security-policy missing
没有 nosniff,浏览器可能按错误类型解释文件。这是一行响应头。
设置 X-Content-Type-Options: nosniff。
x-content-type-options missing
默认 referrer 可能把站内路径和查询串漏给第三方。
设置 Referrer-Policy: strict-origin-when-cross-origin。
referrer-policy missing
检查公开页的品味、转化和上线风险。桌面和手机截图,按严重度排序,带证据。高分站可抽出气质给代理照着写。
05 / 开始动手
优化指令用于调整这个页面;设计指令用于借鉴它的视觉语言。「做同款」会附带截图与实施步骤。复制后粘贴到你的代码助手中。
在完全保留现有设计 Token(#fafafc 背景、#0b0f19 字体颜色、JetBrains Mono 标签字体、7px 按钮圆角、10px 卡片圆角以及 'Vibe' 专用的 Caveat 字体)的前提下,优化 VibeCheck 首页转化流程。1. 在 URL 输入框下方增加一个'查看示例报告'互动入口,点击后展示包含评分、提取调色板及可复制 DESIGN.md 提示词的示例弹层或抽屉。2. 为展示卡片(Cursor、Lovable、Stripe 等)添加点击交互,点击任意卡片即可将对应域名填入搜索框并直接触发检测。3. 保持响应式间距、顶部导航及移动端适配逻辑。在 1440x900 与 390x844 视口下验证对齐方式与聚焦状态。