Communitygithub.com

AdityaPratamaS18/网站构建技能

根据客户简报或资料,构建一个完整的、SEO优化的Next.js网站,从简报解读到可发布版本一站式完成。适用于用户希望为新客户建站、从简报构建网站、或重建现有网站等场景。

网站构建技能 是什么?

本技能(Skill)提供了一个结构化的工作流,用于从零开始为单个客户构建一个SEO优化的Next.js网站。它从解析客户简报开始,生成事实清单,并识别信息缺口以向客户提问。随后进行关键词研究,规划站点地图,并生成包含每个页面URL、关键词和标题的站点计划。该计划是所有后续构建工作的唯一权威来源。技能通过一系列严格的“门控”检查确保质量:规划、构建和发布阶段各有一个脚本验证。构建阶段自动生成页面、使用类型化数据文件,并确保所有元数据(标题、描述、H1)与批准的站点计划完全一致。最终,技能引导用户完成预览、审批和发布流程。该技能支持静态导出和服务器端功能,适用于任何类型的商业网站,并内置了防止使用未经验证内容的保护措施,以避免法律和信任风险。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AdityaPratamaS18/website-skill/tree/HEAD/skills/website-skill

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

网站构建技能:流程

本技能依据一份简报为单个客户构建一个网站。每个客户将获得一份已批准的站点计划、一个代码库和一个检查脚本。批准的站点计划决定了路由、标题、描述、标题和站点地图。

在本文档中,<skill-dir> 是包含此文件的文件夹,<client-folder> 是为此客户创建的文件夹。如果用户没有文件夹命名规范,则使用 clients/<client>/。

前置要求

  1. 阅读此客户的笔记(如果存在)。用2-3行向用户说明适用的规则。
  2. 找到简报、公司简介、Logo和照片。
  3. 确保 Node.js、Python 3 和 rsync 可用。

警告:如果简报未提供某个事实,切勿将其放在网站上。虚构的证书、客户名称、数据或评价会给客户带来法律和信任风险。

阶段 1:事实

  1. 阅读 references/brief-intake.md。
  2. 完整阅读每个源文件。
  3. 编写 <client-folder>/site-brief/facts.md。
  4. 如果客户有现有网站,则爬取其当前站点。记录每个URL用于重定向映射。
  5. 如果缺少事实,则编写 <client-folder>/site-brief/questions-for-client.md。

关卡 1. 向用户展示事实清单摘要和缺失信息列表。等待用户回复。仅在用户同意的情况下处理缺失信息。缺少必需事实的页面将不会出现在站点计划中,或者在计划中保留但缺失该事实。

阶段 2:站点计划

  1. 阅读 references/site-plan.md。
  2. 为客户所在市场进行关键词研究。
  3. 复制 <skill-dir>/assets/site-plan.template.json 到 <client-folder>/site-brief/site-plan.json。
  4. 为每个页面填写一项。
  5. 将计划与提案(如果存在)进行比较。范围中的每个项目都必须对应一个页面或功能。范围中的表单需要 server 托管或一个约定的替代方案。
  6. 运行计划检查关卡。修正每个失败项。
python3 <skill-dir>/scripts/site_gate.py plan <client-folder>/site-brief/site-plan.json

关卡 2. 向用户展示一个包含以下列的表格:URL、主要关键词、月搜索量、标题。同时说明托管选择。等待用户批准。然后在计划中记录批准信息为 "approved_by" 和 "approved_on"。没有这些字段,构建关卡将失败。

阶段 3:脚手架

  1. 选择文件夹 <client-folder>/website/。
  2. 运行脚手架脚本。该脚本支持路径中包含空格和大写字母。
bash <skill-dir>/scripts/scaffold.sh "<client-folder>/website" static
  1. 仅在计划需要服务器端功能时使用 server 替代 static(参见 references/launch.md)。
  2. 将批准的 site-plan.json 复制到 src/lib/site-plan.json。
  3. 用事实清单中的值替换 src/lib/site.ts 中的每个 __FILL 值。
  4. 阅读 node_modules/next/dist/docs/01-app/ 中关于元数据、图片、字体和静态导出的指南。

注意:Next.js 在主要版本之间会发生变化。node_modules 中的指南与已安装的版本匹配。您的训练数据可能不匹配。

阶段 4:设计方向

  1. 阅读 references/design-and-copy.md。
  2. 根据Logo创建颜色和排版令牌。将它们放入 globals.css。
  3. 从Logo生成 public/logo.webp、public/og.webp(1200 x 630 像素)和 src/app/icon.png。
  4. 仅构建页眉、页脚和首页。
  5. 启动预览。对于静态站点,在构建后使用 npx serve out -l 3210。对于需要服务端渲染的站点,使用 npm run dev。
  6. 在浏览器中打开 http://127.0.0.1:3210。分别在375、768和1280像素宽度下检查页面。

注意:嵌入式浏览器可能对 localhost 返回 HTTP 431 错误。地址 127.0.0.1 没有此问题。

关卡 3. 向用户展示首页。等待用户批准设计。所有其他页面都将使用此设计。

注意:在通过关卡 3 之前,切勿构建其他页面。后期的设计变更将导致所有页面的迁移。

阶段 5:页面

  1. 阅读 references/seo-build-spec.md。
  2. 将内容放置在 src/lib/ 下的类型化数据文件中(例如 services.ts)。保持页面文件简洁。
  3. 对每种重复的页面类型使用带有 generateStaticParams 的动态路由。
  4. 使用 pageMetadata() 和 getPage() 从计划中获取每个页面的标题、描述和H1。
  5. 以客户的口吻为买家撰写文案。只能使用 facts.md 中的事实。
  6. 按照规范添加内部链接。
  7. 构建站点。
npm run build
  1. 运行构建检查关卡。修正每个失败的根本原因。不要为了通过而修改检查关卡。
python3 <skill-dir>/scripts/site_gate.py build <client-folder>/website
  1. 运行 npx tsc --noEmit 和 npm run lint。

阶段 6:审查

  1. 在浏览器中检查每种页面类型在375、768和1280像素宽度下的显示。
  2. 检查每个行动号召(CTA):电话、WhatsApp、电子邮件和表单。
  3. 如果用户需要,将页面文案整理到一个文档中。遵循 references/design-and-copy.md。
  4. 仅当用户指示时部署预览版本。预览构建不应被搜索引擎索引。

关卡 4. 向用户提供预览URL和检查结果。等待用户批准发布。

阶段 7:发布

  1. 阅读 references/launch.md。
  2. 使用 SITE_INDEXABLE=1 构建。
  3. 使用 --release 参数运行构建检查关卡。检查必须通过。
  4. 执行 references/launch.md 中的发布步骤。

警告:未经当前会话中的批准,请勿连接域名或推送到生产环境。在线域名会影响客户的业务。

收尾

  1. 向用户提供仍需客户执行的行动清单。
  2. 将路径、决策和经验记录到此客户的笔记中。
  3. 告知用户网站已准备好进行SEO内容工作。

固定规则

规则原因
每个服务一个URL单页网站无法为某个服务提供可排名的URL
每个URL一个主要关键词针对同一个关键词的两个页面会相互竞争
计划是标题和路由的唯一来源检查关卡会将构建的HTML与计划进行对比
无动画统计计数器HTML在脚本运行前显示为0
关卡是脚本脚本捕获的每个错误都曾经是人类遗漏的

参考资料

文件在哪个阶段阅读
references/brief-intake.md阶段 1
references/site-plan.md阶段 2
references/design-and-copy.md阶段 4 和 阶段 6
references/seo-build-spec.md阶段 5
references/launch.md阶段 2(托管)和阶段 7

相关技能