语义化布局
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/semantic-layout-ddkv。
技能介绍
解决什么问题
页面用 div + class 堆出来的「div soup」在浏览器里看不出问题,但机器读不懂结构:屏幕阅读器只能靠地标角色判断区域用途,爬虫难以区分主内容与侧边栏,结构化数据(尤其是 featured snippets)也需要列表、表格标题这类语义线索。这个技能在交付前对 HTML 做一轮语义与无障碍审计,把「该有的标签有没有、该只有一个的有没有出现两份」变成可复现的 PASS / WARN 结论。
核心能力与检查步骤
- 必备语义元素:逐项检查页面是否包含约定的核心容器,缺失即判 FAIL;存在时输出实例数,例如
✅ PASS <main> found (N instances)。 - 推荐语义元素:不强制,但缺失会给出
⚠️ WARN,如「Consider using … for content structure」。 - Skip navigation:查找跳转链接(
a、#skip-nav、skip-to-content),缺失时提示为无障碍补充跳转入口。 - Div-soup 检测:统计
div与语义元素(header、main、footer、nav、article、section、aside、figure)的数量比;有div但语义元素为零判 FAIL,div超过语义元素 5 倍判 WARN。 - ARIA 地标角色:检查
banner、navigation、main、contentinfo、search五类角色,命中即 PASS 并列出。 - 布局建议:
main为 0 或多于 1 个时告警;统计不在任何语义容器内的h1–h3并建议包裹;超过 3 张未用figure包裹的图片、正文出现日期但缺少time元素、列表型内容未用ul/ol、表格缺少caption均触发 WARN。
边界与注意点
- Next.js 等 React 应用的根节点通常是
div或section,不算 div-soup,应审计其内部的语义元素。 - SSR 与客户端渲染结果可能不同,优先审计首屏 SSR 输出。
- 隐藏容器内的内容在静态 HTML 中不可见,需注明该局限;Web Components / Shadow DOM 内部的语义元素同理。
- 邮件类页面(如退订页)天然缺少
header/main/footer,不应告警。 lang属性检查由international-seo技能负责,本技能不重复覆盖。
使用场景
- 上线前对首页做结构自检,确认 header、main、footer 等必备容器齐全,避免带病发布
- 接手老项目重构,统计 div 与语义元素数量比,判断是否属于该拆的 div-soup
- 为无障碍合规整改导航,补充 skip-navigation 跳转链接并核验地标角色是否命中
- 排查爬虫收录不佳的列表页,检查列表型内容是否用 ul/ol 标记、表格是否带 caption
适合人员
- 负责前端交付的工程师,需要在发布前用一份 PASS/WARN 清单确认页面语义结构合规
- 重构历史项目的维护者,想量化 div 数量与语义元素数量的差距来决定重构范围
- 处理无障碍投诉的开发者,要在导航区域补上跳转链接并核对 banner、main 等地标角色
- 关注搜索收录的 SEO 工程师,需要确认列表、表格、日期等标记是否满足结构化数据要求