SCA正在从Webflow迁移到WordPress。我准备了这份简报,分享我在学校内容架构方面的工作,并与我们的实施合作伙伴开启对话,共同探讨如何结合双方的专业领域来实现SCA的目标。
本简报是一份活文档,可以随着我们对话的深入持续更新。本文档通过AI辅助的编辑流程管理——我用自然语言描述修改需求,系统自动完成修订、构建和部署。
本文档将完整的目标架构作为路线图呈现。同一内容模型可以支持分阶段方案:即使主站以基础阶段启动,特定项目也可以立即利用结构化内容基础设施。
- 12种内容类型建模,含类型化字段和关联关系——可直接映射到WordPress CPT + 自定义字段
- 已提取所有Webflow内容:9个页面、7个项目、13篇新闻文章、87张图片
- 公开内容API + 最小化参考前端:web-beta-lilac-27.vercel.app — 用于验证数据模型,并非设计方案
这套基础设施目前在Sanity CMS中正式运营,通过实时API提供内容服务——问题是WordPress如何最好地与这一现有运营系统衔接。完整的架构细节详见附录。
- WordPress架构方案:如何最好地实现此内容模型——CPT + 字段、外部API,还是混合方案
- 迁移范围:哪些页面、什么功能、什么时间线
- 如何在编辑易用性与结构完整性之间取得平衡
1 起点
当前网站及迁移的原因
起点
当前网站及迁移的原因
斯普林菲尔德联邦学院(SCA)的网站 springfieldcommonwealthacademy.org 目前运行在 Webflow 平台上。这是一个专业的营销网站——大约20个页面,涵盖学术、体育、学生生活、招生和新闻——配有专业摄影和简洁的布局。
| 信息页面 | 约9个页面(关于、历史、愿景、招生、联系等) |
| 学术项目 | 学术栏目下5个项目页面 |
| 体育 | 3个页面(概览+各运动项目) |
| 新闻文章 | CMS驱动的新闻列表和文章详情页 |
| 教职工目录 | 约12名教职工的照片网格 |
| 摄影 | 87+张校园、学生生活和体育照片 |
| Gradelink 集成 | 指向注册入口的外部链接 |
Webflow 在 SCA 需求上的不足之处:内容被锁定在 Webflow 的可视化编辑器中。没有API可以程序化查询学校数据。新闻文章不能在通讯邮件中重复使用,也不能被其他系统消费。没有办法实现内容工作流自动化——每次更新都需要在 Webflow 设计器中手动编辑。随着学校的发展,这些限制会越来越明显。
学校决定迁移离开 Webflow。问题是:迁移到哪里,以及如何确保迁移创造的价值不仅仅是换了一个平台?
2 内容架构
SCA的内容需要如何结构化——以及我目前的建设成果
内容架构
SCA的内容需要如何结构化——以及我目前的建设成果
我没有将内容从一个网站建设工具搬到另一个,而是将学校的内容建模为结构化数据——有类型、可查询、可通过API访问。这代表了SCA的内容需要如何组织才能支持我们的AI优先定位。网站只是这些数据的一个消费者,而不是数据唯一存在的地方。我期待在WordPress最佳实践方面获得指导,以实现这一结构。
在 Webflow 中,一篇新闻文章是一个视觉布局。而在结构化内容系统中,一篇新闻文章是数据:它有标题、发布日期、正文、分类、作者和图片——每个都是独立的、有类型的字段。同一篇文章可以在网站上渲染、出现在电子邮件通讯中、响应API查询,或被AI助手读取。内容只需编写一次,就可以在各处使用。
Sanity的博客将这一转变描述为"The Quiet Reshape of Content Operations"(内容运营的静默重塑)——将内容视为机构资产而非网站填充物,拥有自己的结构和访问层。AI系统、自动化工具和多渠道发布都依赖于内容的结构化,而不是被困在页面布局中。
我在 Sanity CMS 中定义了12种文档类型和3种可复用对象类型,对 SCA 的运营进行建模。文档类型是主要内容——页面、新闻、项目。对象类型(SEO元数据、社交链接、公告)是嵌入在多种文档类型中的可复用结构,确保一致性。完整模式详情见附录。
| 内容类型 | 代表内容 |
|---|---|
| 页面(Page) | 具有父子层级关系的信息页面(关于、愿景、历史等) |
| 新闻(News) | 带来源追踪的文章(手动录入、Instagram导入、外部链接) |
| 项目(Program) | 学术和体育项目,包含描述、教练、升学数据 |
| 人员(Person) | 教职工信息,含角色、简介、部门关系 |
| 部门(Department) | 人员所属的组织单元 |
| 活动(Event) | 学校活动,含日期、地点、描述 |
| 学生项目(Student Project) | 学生作品,含自动Google Drive文件夹配置 |
| 校友故事(Alumni Story) | 毕业生成果和推荐信 |
| 媒体画廊(Media Gallery) | 用于校园生活、活动、体育的照片集 |
| 寄宿特色(Boarding Feature) | 面向国际家庭的寄宿项目亮点 |
| 招生路径(Admissions Path) | 按入学类型划分的申请步骤和要求 |
| 网站设置(Site Settings) | 全局配置:校名、联系方式、社交链接、公告 |
这些类型之间有关联关系——项目可以引用其教练(人员),人员属于某个部门,页面有父子层级。这就是使数据可以以扁平页面无法实现的方式进行查询的关键。
四个架构决策塑造了这项工作。这些反映了SCA的机构需求——如何在WordPress中最佳实现,正是平台专业知识的发挥之处。
- 使用 Sanity 作为内容层。Sanity 提供实时API、代码定义的类型化模式,以及编辑人员无需开发人员帮助即可使用的内容工作室。内容可通过HTTP访问——任何能发送GET请求的系统都可以读取。
- 使用 Astro 构建参考前端。我构建了一个有意简约的参考网站来验证内容层的工作效果。它将所有结构化数据渲染为真实页面,但视觉设计有意退居次要——因为架构使数据和展示完全独立。任何前端都可以用不同的设计消费相同的内容。
- 先提取内容再重建。我没有手动重新创建内容,而是程序化地从 Webflow 网站提取了所有内容——页面文本、项目描述、新闻文章、图片——并以结构化数据的形式导入 Sanity。这项工作无需重复。
- AI可读设计。网站输出静态HTML,包含JSON-LD结构化数据和语义标记。阅读任何页面无需JavaScript。任何具有网络访问能力的LLM——ChatGPT、搜索引擎爬虫、潜在家长的AI助手——都可以直接解析内容。公开API意味着AI代理也可以程序化查询学校数据。
3 现有成果
参考网站、内容API和诚实的差距分析
现有成果
参考网站、内容API和诚实的差距分析
目前有三项具体的交付成果已上线:一个参考网站、一个内容API,以及供任何前端消费的已提取内容。
| 参考网站 | web-beta-lilac-27.vercel.app — 基于令牌的设计基础、响应式、自托管字体 |
| 内容API | 公开的GROQ端点——任何系统都可以通过HTTP查询学校内容 |
| 已导入内容 | 9个信息页面、7个项目、13篇新闻文章、87张图片——全部从Webflow提取并在Sanity中结构化 |
| 自动化 | 学生项目系统,自动配置Google Drive文件夹 |
参考网站将结构化内容渲染为可用的页面:包含项目亮点的首页、带文章详情页的新闻版块,以及关于、学术、体育、学生生活、招生和联系等内容页面。它拥有完整的设计系统,定义了排版比例、色彩方案和响应式布局。这不是一个模型——它是一个消费内容API实时数据的工作网站。
以此作为范围参考。绿色 = 同等或更好。黄色 = 部分完成(数据模型存在,前端未完成)。红色 = 未开始。当前网站不具备的新功能单独标注。
| 功能 | Webflow(现状) | Sanity + Astro(已建) | 状态 |
|---|---|---|---|
| 首页 | 带主图的完整设计 | 设计令牌基础:主视觉(纯文本)、价值主张、项目展示、行动号召。无主图。 | 部分 |
| 关于/历史/愿景 | 带摄影的丰富页面 | 内容已导入,有样式模板。图片需迁移。 | 部分 |
| 学术+项目 | 5个项目页面 | Sanity中7个带类型字段的项目。模板渲染。 | 部分 |
| 体育 | 3个带照片的页面 | 带条件字段(季节性运动)的模式。基础页面。 | 部分 |
| 教职工目录 | 约12名教职工的照片网格 | 模式已就绪(人员+部门)。数据尚未导入。 | 未开始 |
| 学生生活 | 丰富的照片页面 | 模式已就绪,基础页面含内容。 | 部分 |
| 社区/参与 | 2个带画廊的页面 | 模式已就绪。无前端页面。 | 未开始 |
| 新闻与文章 | CMS驱动的列表 | 已导入13篇文章。列表+详情页。数据完整;前端为参考级。 | 数据完整 |
| 招生 | 多版块页面 | 模式+基础页面。完整招生路径模式已就绪。 | 部分 |
| Gradelink 注册 | 外部链接按钮 | 网站设置中的URL字段。尚未连接到前端。 | 部分 |
| 联系页面 | 表单+嵌入式地图 | 基础页面。无联系表单或地图集成。 | 部分 |
| 校友故事 | 当前网站无此功能 | 模式已就绪——毕业生成果、推荐信 | 新 |
| 媒体画廊 | 当前网站无此功能 | 模式已就绪——分类照片集 | 新 |
| 学生项目 | 当前网站无此功能 | Drive自动化可用。前端为基础版。 | 系统可用 |
| 寄宿特色 | 当前网站无此功能 | 模式已就绪——面向国际家庭的寄宿项目亮点 | 新 |
| 内容API | 无 | 完整的公开API——任何系统都可以查询所有学校内容 | 完成 |
| 编辑工作流 | 无 | 来源追踪、导入内容QA标记 | 新 |
"部分"表示数据模型和内容存在但前端未达到Webflow原版的视觉丰富度。"未开始"表示模式存在但无前端页面或数据。"新"标记Webflow网站完全不具备的功能——这些是可选的范围扩展。
4 价值所在
WordPress构建可用的资源,以及仍需关注的方面
价值所在
WordPress构建可用的资源,以及仍需关注的方面
内容模型和已提取的内容是WordPress构建的基础。以下是我的工作如何映射到WordPress概念——平台专业知识将决定如何最好地实现这些模式。
12种内容类型可直接转换为WordPress Custom Post Types + Advanced Custom Fields(或等效方案)。每种类型都有定义好的字段和关联关系:
- 项目(Programs)含类别、级别、描述、教练引用、升学数据 → CPT + ACF字段 + Person关联
- 人员(People)含角色、简介、部门引用 → CPT + 分类法或关联字段
- 页面(Pages)含父子层级、富文本、SEO字段 → 原生WordPress页面 + 自定义字段
- 新闻、活动、学生项目、校友故事 → 各为独立CPT,使用类型化字段而非自由排版的页面构建器内容
所有字段和关联关系的完整模式详情见附录。这可以作为CPT注册和字段组设置的起点——欢迎基于WordPress实施经验提出优化建议。
- 所有文本内容已从Webflow程序化提取——页面文本、项目描述、新闻文章——存储为结构化数据。可直接导入WordPress或通过API消费。
- 87张图片已下载并托管在Sanity CDN。可重新导入WordPress媒体库。
- WordPress可以直接实现此模型(CPT + 字段),与现有内容API集成,或采用混合方案——欢迎提出最佳方案建议。
- Google Drive自动化。学生项目系统在创建项目时自动配置Drive文件夹。独立于网站前端。
- 编辑工作流。来源追踪(手动、Instagram、外部)和导入内容QA标记。
- 新内容类型(校友故事、媒体画廊、寄宿特色、招生路径)模式已定义但尚无内容。
- 联系表单——需标准WordPress表单实现。
- Gradelink集成——网站设置中已有URL字段;注册按钮需连接到前端。
- 教职工数据迁移——需手动导入或针对Webflow照片网格格式的自定义解析方案。模式已准备好接收数据。
- 图片关联映射——资产已提取并托管;与特定内容条目的关联将在WordPress迁移期间完成。
- 社区/参与页面——后端模式完成;前端实现待设计决策。
5 实施方案
如何将内容架构与WordPress专业知识相结合
实施方案
如何将内容架构与WordPress专业知识相结合
SCA的机构目标是结构化内容。实施可根据组织优先级分阶段推进——基础阶段和基础设施阶段都是合理的专业方案。以下是可选路径,欢迎对推荐方案提出专业意见。
无论从基础阶段还是基础设施阶段开始,目标是可演进的架构。基础阶段(专业网站展示)是可行的起点,前提是能够在不推倒重来的情况下迁移到基础设施阶段(结构化内容)。需要管控的具体风险不是页面构建器本身,而是内容被锁定在专有短代码或特定布局格式中,导致后续无法干净提取。我不执着于任何特定的WordPress模式——重要的是内容保持可移植性。
构建Custom Post Types + 自定义字段,复制12种内容类型。内容直接导入WordPress。Sanity作为内容模型的参考;WordPress全面接管。
- 标准WordPress架构:CPT + ACF(或等效方案)+ 模板
- 内容从Sanity导出导入或手动重新录入
- 模式设计、字段定义和关联关系已记录,可直接实现
- 所有前端工作(主题、表单、插件、SEO)在WordPress中完成
这代表基础设施阶段路径。内容模型定义了"项目"、"人员"和"活动"对SCA的含义,使WordPress构建从清晰的数据架构开始,而非从空白开始。如果从基础阶段使用常规主题开始,架构应将内容保存在标准WordPress结构中(文章、页面、原生字段),而非嵌入页面构建器短代码或专有块格式——这样迁移到CPT时是数据操作,而非内容重建。一个值得讨论的问题:是否存在WordPress直接消费Sanity API更合理的场景,还是原生CPT实现更适合SCA的需求?欢迎对此提出意见。
以下是希望获得专业意见的领域:
- 鉴于这些内容关联关系,WordPress架构建议
- 平衡编辑易用性与结构完整性的方法
- WordPress内容可导出性的最佳实践
- 如从基础阶段开始:哪些主题架构最有利于未来迁移到CPT?如从基础设施阶段开始:推荐的CPT架构方案
- 自定义字段的标准方案:ACF、块,或其他选项
- 性能/SEO基线:Core Web Vitals、图片、缓存
6 合作期待
核心需求、开放领域,以及我们如何协作
合作期待
核心需求、开放领域,以及我们如何协作
我希望坦诚说明哪些是固定的,哪些是可以讨论的。SCA的机构需求设定了某些约束条件。其他一切都可以对话。
Angelene对SCA AI优先定位的愿景可以通过渐进阶段实现,具体取决于实施范围和时间线:
基础阶段聚焦于专业网站展示,包括视觉优化、移动端适配和基础内容管理。内容通过成熟的WordPress主题呈现。此阶段可以使用页面构建器工具快速部署,但前提是内容将在基础设施阶段迁移到结构化CPT。目标是可桥接的架构,而非永久的页面构建器依赖。这可以立即交付机构价值,并为未来增强做好准备。
基础设施阶段实现本文档中描述的完整结构化内容模型——CPT配合定义好的字段、内容类型之间的可查询关系、API可访问性,以及AI就绪架构。这将实现自动化内容工作流、多渠道发布,以及区分SCA定位的完整AI优先能力。
两个阶段都服务于SCA的发展旅程。问题是现在就实施完整的基础设施,还是先建立基础,在后续阶段演进到完整结构。
以下描述SCA基础设施阶段的目标——完整的结构化内容架构。这些并非全部是第一阶段的要求。基础阶段可以使用常规主题和人工维护作为可行的起点,逐步向目标架构演进。目标包括:
- 内容以结构化数据存储。CPT配合定义好的字段。一个"项目"有名称、类别、教练和描述作为独立的可查询字段。
- 内容类型之间的关联关系可查询。项目引用其教练(人员)。人员属于部门。页面有父子层级。这些连接必须在代码中可导航。
- 内容可导出、可移植。如果SCA未来更换平台,所有内容和关联关系都能干净地提取出来。
- AI可读输出。静态HTML配合语义标记和结构化数据(JSON-LD)。解析内容无需JavaScript。这是潜在家长的AI助手、搜索引擎和SCA自身AI工具与网站交互的方式。
我不打算指定WordPress的实施细节——那是平台专业知识的领域:
- 主题架构、插件选型、托管环境
- 自定义字段方案——ACF、原生块,或其他模式
- 编辑工作流和内容管理用户体验
- 性能优化、缓存策略、部署流程
为确保满足SCA的机构需求,以下是我希望我们达成一致的成果。实施选择将决定如何在WordPress中实现这些目标:
- 教职工、项目、新闻和活动从结构化数据模板驱动生成——而非手动组装的页面
- 内容关联关系得到保留(项目→教练,人员→部门,页面层级)
- 网站渲染语义化HTML,AI工具和搜索引擎无需执行JavaScript即可解析
- 内容可随时导出为JSON或其他可移植格式
本文档描述的结构化内容架构的价值不仅限于当前的网站迁移。一旦内容以类型化、关联性数据存储:
- AI工具可直接查询机构内容——回答家长问题、生成营销材料、支持招生工作流
- 内容可从单一来源发布到多个渠道(网站、移动应用、印刷材料、社交媒体)
- 机构知识作为可查询数据保存,而非锁定在页面布局中
- 未来平台迁移变为数据迁移,而非内容重建
无论基础设施阶段何时实施,这些能力都将可用。架构是前提条件,时机是组织决策。
我提供内容架构、业务需求和AI就绪战略。实施专业知识指导WordPress特定决策。如果基础阶段是起点,我可以确定哪些当前决策有助于日后向基础设施阶段过渡。我的首要任务是确保我们不会关闭通向Angelene完整愿景的大门。
7 附录:内容模型与设计系统
完整模式参考、设计令牌和实时API访问
附录:内容模型与设计系统
完整模式参考、设计令牌和实时API访问
本节面向希望检查底层数据模型和设计系统的开发者和外部机构。此处所有内容均可在不克隆代码仓库的情况下访问。
每种文档类型都是具有类型字段和关系的结构化内容定义。您可以通过公共API查询其中任何一种(见下方试用API)。
| 类型 | 关键字段 | 关联关系 |
|---|---|---|
| page | title, slug, body(富文本), seo | parent → page(层级关系) |
| news | title, slug, date, summary, body, image, source, featured, editorialFlags | — |
| program | name, slug, category, level, description, image, collegePlacementSummary | coach → person |
| person | name, role, bio, photo, email, order | department → department |
| department | name, slug | — |
| event | title, slug, startDate, endDate, location, category, description | — |
| studentProject | title, slug, studentEmail, year, summary, body, gallery, visibility, status | student → person, program → program。触发Google Drive自动化。 |
| alumniStory | name, slug, graduationYear, university, achievement, quote, story, photo | — |
| mediaGallery | title, slug, date, description, images[](含说明/alt), category | — |
| boardingFeature | title, slug, summary, body, order | — |
| admissionsPath | title, slug, audience(运动员/国际/国内), summary, body, applyUrl | — |
| siteSettings | schoolName, tagline, address, phone, email, enrollmentUrl, socialLinks[], announcement | 单例(每站一个) |
这些是嵌入在文档类型中的可复用结构——不是独立内容。它们确保系统的一致性。
| 对象 | 字段 | 使用者 |
|---|---|---|
| seo | title, description(160字符), 社交图片 | page, news, siteSettings |
| socialLink | platform(facebook, instagram, twitter等), url | siteSettings |
| announcement | enabled, text, link | siteSettings |
系统中现有的实际内容(实时数据,可通过API查询):
| 页面(从Webflow导入的信息页面) | 9 |
| 新闻文章 | 13 |
| 项目(学术+体育) | 7 |
| 学生项目(含Drive集成) | 4 |
| 上传到Sanity CDN的图片 | 87 |
| 教职工、活动、画廊、校友、寄宿、招生路径 | 模式已就绪,尚无内容 |
内容API对读取操作是公开的。您可以将这些URL粘贴到任何浏览器中查看实时数据。无需设置、无需令牌、无需插件。
所有项目及其字段:
https://wesg5rw8.api.sanity.io/v2024-01-01/data/query/production?query=*[_type=="program"]{name,slug,category,description} 最新新闻文章:
https://wesg5rw8.api.sanity.io/v2024-01-01/data/query/production?query=*[_type=="news"]|order(date desc){title,slug,date,summary} 页面层级(父子关系):
https://wesg5rw8.api.sanity.io/v2024-01-01/data/query/production?query=*[_type=="page"]{title,slug,"parent":parent->title}
这是标准HTTP。WordPress可以用wp_remote_get()消费这些端点。任何支持HTTP的语言都可以使用。
参考前端使用设计令牌——颜色、排版和间距的命名值——而非临时样式。这是一个起始词汇表,而非完整的设计系统。价值在于方法本身:令牌可以映射到任何CSS框架、WordPress主题或设计工具,AI工具可以系统性地迭代。更改视觉设计无需更改内容。
色彩方案| 令牌 | 值 | 用途 |
|---|---|---|
| Navy 900 | #0A1628 | 页脚、深色背景 |
| Navy 600 | #2c5d8a | 链接、交互元素 |
| Gold 500 | #C9A227 | 主要强调色、按钮、徽章 |
| Neutral 900 | #1A1F2A | 正文文本 |
| Neutral 50 | #FAFBFC | 页面背景 |
| 标题 | Cormorant Garamond(自托管,可变字重600-700) |
| 正文 | Inter(自托管,可变字重400-600) |
| 字号比例 | 12px → 48px(9级),使用clamp()响应式适配 |
| 内容宽度 | 42rem(672px)最佳阅读宽度,64rem宽幅,80rem全宽 |
要查看所有实际效果:访问参考网站。设计系统以CSS自定义属性(设计令牌)实现——任何开发者都可以在浏览器的DevTools中检查它们。