Website Manager
Overview
Use this skill when the user wants one workflow that covers both website creation and ongoing website management.
This skill is for:
- - rebuilding or redesigning an existing website
- creating a new website starter
- adding or refining pages, widgets, and blog/CMS features
- managing content from Notion
- improving SEO, schema, internal linking, filtering, and discoverability
- setting up lightweight publishing and recurring upkeep
Keep the output portable. The site should not become locked to one host or one agent platform unless the user explicitly asks for that.
Credentials
Core website planning, content modeling, blueprint generation, and validation do not require secrets.
Automated Notion CMS creation and sync do require:
- -
NOTION_ACCESS_TOKEN or INLINECODE1 - INLINECODE2 for the shared parent page where the CMS will be created
Automated Netlify deploys do require:
- - INLINECODE3
- optional
NETLIFY_SITE_ID when deploying to an existing site
Credential rule:
- - only request these values when the user wants automated CMS creation, CMS sync, or automated deploys
- prefer
NOTION_ACCESS_TOKEN as the canonical variable name and treat NOTION_TOKEN as a compatible fallback - for Notion, share a single parent page with the integration and create the CMS as child databases/pages beneath it
- prefer the least-privileged Netlify token that can create deploys for the target site
- do not assume these env vars exist just because the skill is installed
- if
NETLIFY_SITE_ID is missing, the deploy helper may create a new Netlify site automatically and persist the returned non-secret site identifiers - never store secrets in Notion or repo files; only store non-secret IDs and URLs
- if the user only wants planning, blueprinting, content modeling, or validation, do not request any secrets
Persisted Files
The helper scripts may write non-secret runtime metadata to local JSON files.
Default locations:
Storage rule:
- - review these files before committing or syncing them anywhere
- they should contain IDs and URLs, not secrets
- keep them local by default unless you intentionally want them in your project workflow
Read as needed:
- -
references/default-stack.md first for the opinionated baseline this skill should assume - INLINECODE11 for visual direction and default token choices; use
generic.md as the fallback when no specialized type clearly fits - INLINECODE13 for metadata, schema, FAQ, and local SEO rules
- INLINECODE14 for widgets, filtering, search, pagination, and collection UX
- INLINECODE15 for the Notion database structure
- INLINECODE16 for site architecture choices
- INLINECODE17 when choosing where and how to deploy
- INLINECODE18 when recurring upkeep is needed in OpenClaw
Use the helper scripts when useful:
- -
scripts/generate_blueprint.py to generate the default site/CMS/publish blueprint - INLINECODE20 to create the default Notion CMS under a shared parent page
- INLINECODE21 to deploy a finished site to Netlify with the opinionated zip workflow
When To Use It
Use this skill when the user asks to:
- - recreate, clone, redesign, or migrate a website
- create or improve a blog or CMS-driven site
- manage website content in Notion
- add widgets, filters, searchable listings, or other light interactivity
- publish changes or set up a low-friction hosting flow
- run recurring SEO or content-maintenance tasks
Workflow
Default assumptions
Unless the user explicitly says otherwise, assume this stack:
- - plain HTML/CSS/JS or a very light static templating setup
- Notion as the CMS
- one shared page shell and one shared token system
- Netlify as the default host
- GitHub optional, not required
- one blog or collection listing pattern with category chips, search, featured items, and pagination
If the user is vague, do not ask them to choose among many architectures. Start from the default stack and only deviate when the site clearly needs it.
1) Understand the site and operating model
Start by identifying:
- - whether the site is new or based on an existing live site
- the key page types
- the conversion paths
- what should be static versus CMS-driven
- whether the user is solo/non-technical or working with developers
If rebuilding an existing site:
- - extract the route map from
sitemap.xml first - if no sitemap exists, crawl homepage links up to two levels deep
- classify URLs as
core, blog, collection, embed, utility, external, or INLINECODE29
2) Choose the implementation shape
Default implementation:
- - plain HTML/CSS/JS for small to medium brochure and editorial sites
Use a lightweight static generator or templating layer when there are:
- - repeated page layouts
- CMS-backed collections
- listing pages with tags, categories, or filters
- shared article or service templates
Avoid unnecessary framework weight when the user mainly needs:
- - easy editing
- low-friction deployment
- simple maintenance
If there is no strong reason to do otherwise, keep:
- - one listing template for posts or collection items
- one detail template for posts or collection items
- one site settings source from Notion
- one deployment target
3) Lock the shared system once
Define one shared system before generating pages:
- - design tokens
- typography
- nav/footer
- responsive grid rules
- card/listing system
- interaction patterns for filters, search, and widgets
Do not redesign each page from scratch.
4) Build the core site
Generate in this order:
- 1. shared shell and tokens
- homepage
- service/category hub pages
- individual detail pages
- about/contact/trust pages
- blog or collection listing pages
- article/detail templates
- booking/form wrapper pages
- utility pages such as INLINECODE30
5) Add widgets and interaction deliberately
Use widgets only when they help the user complete a real task.
Examples:
- - booking CTA bars
- opening hours widgets
- maps
- testimonial rails
- newsletter signup blocks
- blog/category filters
- searchable content lists
- pagination or load-more patterns
When building listings, always account for:
- - filtering
- empty states
- no-results states
- mobile behavior
- deep-linking or URL-based filter state when useful
Default listing behavior:
- - featured section first when featured items exist
- category chips directly under the listing intro
- search input matching title, excerpt, category, and tags
- pagination at 9 items per page by default
- URL query params for search and category when the site has more than a trivial number of posts/items
- reset control whenever filters are active
6) Model content in Notion
Use Notion as the editorial source of truth when the user wants a CMS without a custom admin panel.
Typical Notion databases:
- - Pages
- Services or Collections
- Blog Posts
- Site Settings
Default database names:
- - INLINECODE31
- INLINECODE32
- INLINECODE33
- INLINECODE34
Keep code responsible for layout and rendering.
Keep Notion responsible for content and configuration.
7) Choose live versus rebuild behavior
Use rebuild mode for:
- - homepage sections
- footer details
- navigation
- site settings
- service pages baked into templates
Use live CMS-backed mode for:
- - blog/article listings
- article detail pages
- lightweight collections where server-side fetches are worthwhile
8) Bake in SEO / AEO / GEO
Every page should have:
- - unique title
- unique meta description
- canonical URL
- valid schema
- clear answer-first content
- internal-link support to nearby pages and related content
Service and editorial pages should include:
- - FAQ or answer blocks where appropriate
- local signals when the business is location-aware
- related-content links to improve crawl paths and usability
9) Validate before handoff or deploy
Run:
CODEBLOCK0
The site is not complete until it passes with zero errors.
10) Deploy with the lightest workable path
Default hosting recommendation:
- - Netlify for non-technical operators and sites that may later need serverless helpers
Optional:
- - GitHub when the user wants previews, reviews, or collaboration
- another host when the user already has a strong platform preference
Default deploy workflow:
- 1. build or prepare the site locally
- validate links and metadata
- zip deploy to Netlify
- only add GitHub later if collaboration demands it
11) Automate recurring upkeep
Good recurring jobs:
- - broken-link scans
- metadata checks
- sitemap refreshes
- weekly publish queues
- monthly content health reviews
- recurring SEO and internal-link audits
If OpenClaw is available, prefer native cron jobs.
If not, use another scheduler without changing the content workflow.
Hard Rules
- - Never leave recreated internal pages pointing back to the original domain.
- Never hardcode secrets into HTML, scripts, or Notion content.
- Never recreate payment, auth, checkout, or regulated intake flows unless explicitly asked.
- Never force GitHub on a non-technical solo operator.
- Never treat hosting as the CMS.
- Always design listing pages with filtering, empty states, and mobile behavior in mind.
- Keep the site portable first, then adapt it for the chosen host.
- Default to the opinionated stack unless the user gives a concrete reason to diverge.
Output Contract
Return:
- 1. the site map or content model
- what is static versus CMS-driven
- the implementation shape and hosting recommendation
- the rebuilt or updated pages/components
- the widget and interaction behavior
- the validation result
- any follow-up publish or automation steps
网站管理器
概述
当用户需要一个同时涵盖网站创建和持续网站管理工作流时,使用此技能。
此技能适用于:
- - 重建或重新设计现有网站
- 创建新的网站启动项目
- 添加或优化页面、小部件以及博客/内容管理系统功能
- 管理来自Notion的内容
- 改善SEO、结构化数据、内部链接、筛选功能和可发现性
- 设置轻量级发布和定期维护
保持输出的可移植性。网站不应被锁定在单一主机或单一代理平台上,除非用户明确要求。
凭证信息
核心网站规划、内容建模、蓝图生成和验证不需要密钥。
自动化Notion内容管理系统创建和同步需要:
- - NOTIONACCESSTOKEN 或 NOTIONTOKEN
- NOTIONPARENTPAGEID 用于内容管理系统将创建的共享父页面
自动化Netlify部署需要:
- - NETLIFYAUTHTOKEN
- 部署到现有站点时的可选 NETLIFYSITEID
凭证规则:
- - 仅当用户需要自动化内容管理系统创建、内容管理系统同步或自动化部署时才请求这些值
- 优先使用 NOTIONACCESSTOKEN 作为规范变量名,并将 NOTIONTOKEN 视为兼容的备选
- 对于Notion,与集成共享一个父页面,并在其下创建子数据库/页面作为内容管理系统
- 优先使用能为目标站点创建部署的最小权限Netlify令牌
- 不要因为安装了此技能就假设这些环境变量存在
- 如果缺少 NETLIFYSITE_ID,部署助手可能会自动创建新的Netlify站点并持久化返回的非秘密站点标识符
- 切勿将秘密存储在Notion或仓库文件中;仅存储非秘密的ID和URL
- 如果用户只需要规划、蓝图生成、内容建模或验证,不要请求任何秘密
持久化文件
辅助脚本可能会将非秘密的运行时元数据写入本地JSON文件。
默认位置:
- - .website-manager/notion.json
- .website-manager/deploy.json
存储规则:
- - 在提交或同步这些文件到任何地方之前,先审查它们
- 它们应包含ID和URL,而非秘密
- 默认保持本地存储,除非你故意希望它们出现在项目工作流中
按需读取:
- - 首先读取 references/default-stack.md,了解此技能应采用的预设基线
- 读取 references/site-types/*.md,了解视觉方向和默认令牌选择;当没有明确的专业类型时,使用 generic.md 作为备选
- 读取 references/seo-aeo-geo.md,了解元数据、结构化数据、常见问题解答和本地SEO规则
- 读取 references/widgets-and-interactions.md,了解小部件、筛选、搜索、分页和集合用户体验
- 读取 references/notion-cms-model.md,了解Notion数据库结构
- 读取 references/deployment-shapes.md,了解网站架构选择
- 读取 references/hosting-decision.md,用于选择部署方式和位置
- 读取 references/openclaw-automation.md,当需要在OpenClaw中进行定期维护时
在有用时使用辅助脚本:
- - scripts/generateblueprint.py 生成默认的网站/内容管理系统/发布蓝图
- scripts/createnotioncms.py 在共享父页面下创建默认的Notion内容管理系统
- scripts/netlifyzip_deploy.py 使用预设的压缩工作流将完成的站点部署到Netlify
使用时机
当用户要求以下内容时使用此技能:
- - 重建、克隆、重新设计或迁移网站
- 创建或改进博客或内容管理系统驱动的网站
- 在Notion中管理网站内容
- 添加小部件、筛选器、可搜索列表或其他轻量交互功能
- 发布更改或设置低门槛的托管流程
- 运行定期的SEO或内容维护任务
工作流
默认假设
除非用户明确说明,否则假设以下技术栈:
- - 纯HTML/CSS/JS或非常轻量的静态模板设置
- Notion作为内容管理系统
- 一个共享页面外壳和一个共享令牌系统
- Netlify作为默认主机
- GitHub可选,非必需
- 一个博客或集合列表模式,包含分类标签、搜索、精选项目和分页
如果用户表述模糊,不要让他们在多种架构中选择。从默认技术栈开始,仅在网站明确需要时才偏离。
1) 了解网站和运营模式
首先确定:
- - 网站是新建的还是基于现有在线站点
- 关键页面类型
- 转化路径
- 哪些应该是静态的,哪些由内容管理系统驱动
- 用户是个人/非技术人员还是与开发人员合作
如果重建现有站点:
- - 首先从 sitemap.xml 提取路由映射
- 如果没有站点地图,爬取首页链接最多两层深度
- 将URL分类为 核心、博客、集合、嵌入、工具、外部 或 跳过
2) 选择实现形态
默认实现:
- - 中小型宣传册和编辑类网站使用纯HTML/CSS/JS
在以下情况下使用轻量级静态生成器或模板层:
- - 重复的页面布局
- 内容管理系统支持的集合
- 带有标签、分类或筛选器的列表页面
- 共享的文章或服务模板
当用户主要需要以下内容时,避免不必要的框架负担:
如果没有充分的理由不这样做,保持:
- - 一个帖子或集合项目的列表模板
- 一个帖子或集合项目的详情模板
- 一个来自Notion的网站设置源
- 一个部署目标
3) 一次性锁定共享系统
在生成页面之前定义一个共享系统:
- - 设计令牌
- 排版
- 导航/页脚
- 响应式网格规则
- 卡片/列表系统
- 筛选器、搜索和小部件的交互模式
不要从头开始重新设计每个页面。
4) 构建核心网站
按此顺序生成:
- 1. 共享外壳和令牌
- 首页
- 服务/分类中心页面
- 单个详情页面
- 关于/联系/信任页面
- 博客或集合列表页面
- 文章/详情模板
- 预订/表单包装页面
- 工具页面,如 404
5) 有目的地添加小部件和交互
仅在小部件帮助用户完成实际任务时使用。
示例:
- - 预订行动号召栏
- 营业时间小部件
- 地图
- 推荐轮播
- 新闻通讯注册块
- 博客/分类筛选器
- 可搜索内容列表
- 分页或加载更多模式
构建列表时,始终考虑:
- - 筛选
- 空状态
- 无结果状态
- 移动端行为
- 在有用时的深层链接或基于URL的筛选状态
默认列表行为:
- - 当存在精选项目时,首先显示精选部分
- 分类标签直接放在列表介绍下方
- 搜索输入匹配标题、摘要、分类和标签
- 默认每页9个项目进行分页
- 当网站有超过少量帖子/项目时,使用搜索和分类的URL查询参数
- 每当筛选器激活时,提供重置控件
6) 在Notion中建模内容
当用户想要一个没有自定义管理面板的内容管理系统时,使用Notion作为编辑内容的事实来源。
典型的Notion数据库:
默认数据库名称:
保持代码负责布局和渲染。
保持Notion负责内容和配置。
7) 选择实时与重建行为
对以下内容使用重建模式:
- - 首页部分
- 页脚详情
- 导航
- 网站设置
- 嵌入模板的服务页面
对以下内容使用实时内容管理系统支持模式:
- - 博客/文章列表
- 文章详情页面
- 值得进行服务器端获取的轻量集合
8) 融入SEO / AEO / GEO
每个页面应具备:
- - 唯一标题
- 唯一元描述
- 规范URL
- 有效的结构化数据
- 清晰的答案优先内容
- 指向附近页面和相关内容的内部链接支持
服务和编辑页面应包括:
- - 适当位置的常见问题解答或答案块
- 当业务具有位置感知时的本地信号
- 相关内容的链接,以改善爬取路径和可用性
9) 在交接或部署前进行验证
运行:
bash
python3 scripts/validate_links.py ./site-output original-domain.com
python3 scripts/validate_links.py ./site-output original-domain.com --fix
网站通过零错误验证才算完成。
10) 使用最轻量的可行路径进行部署
默认托管推荐:
- - Netlify适用于非技术运营者和未来可能需要无服务器助手的网站
可选: