孙割这十年 · 站点审计报告孙割十年 · 审计审计
← 返回总览(两卷 + 十年对照) 站点审计 · 排版 / 格式 / 置信度

站点审计报告

对「孙割这十年」的三页站点做一次自查:口径沿用「以日为镜」的五条写作纪律, 逐维度给出实测数据(不是形容词)、问题清单与处理状态,以及可以自己复跑的复核脚本。 审计对象是 3 个页面 / 46 个正文板块 / 313 个元素级结论,审计时点见页脚。

审计范围 3 页 正文板块 46 个 硬性结构缺陷 0 置信度标签 141 处 已修问题 5 项 有意保留 2 项 透明声明 3 项

这份审计要回答三个问题:① 排版与格式有没有硬伤(能不能正常看、正常读、正常检索); ② 置信度标注是不是真的落到了每一条具体结论上(而不是只在页首喊一句口号); ③ 哪些地方我知道自己还不足,且不打算用话术掩盖。第 ③ 条最要紧——它决定了这份报告是不是一份真的审计。

审计结论(速览)

编者自审结论由本站作者自查得出,不是第三方审计

先说判断,再说依据。

结论一

可以发布:硬性结构项 0 缺陷

24 类 HTML 标签全部平衡(差值 0);三页无重复 id;目录与正文双向对齐(29/26、16/14,缺失 0、孤立 0); 站内检索 47 条索引的锚点全部命中;行内样式已归零;图标按钮与纯图标链接100% 有可访问名称。

结论二

置信度做到了「逐条可核」,但密度低于「以日为镜」

46 个板块 100% 有来源徽章;50 条引语 100% 带出处标签(卷一 34 条、卷二 16 条); 速览卡片与逐讲索引分组另有来源行。但段落中间没有逐句标注——这是有意保留的取舍,理由见 A4。

结论三

三处「标题 ≠ 内容」的坑已经查实并标注

最典型的是卷一第 010 分 P:标题写着《因信仰自由而享受自由》,但用本地 ASR 转写比对后确认 它的音频其实是《性与权力》,且与第 019 分 P 是同一集重复音频(开头逐字相同、相似度 0.85、时长差 5 秒)。 这类问题已经写进索引行内与页脚,没有藏起来。

结论四

三个「有意保留」的不足,不打算用话术盖过去

① 段落级逐句标注缺失;② 卷一速览 11 张卡片的讲号映射属编者判断; ③ 卷一 146–155 集只有二手 AI 概要、无法逐字核对。 三项都已在页面上显式声明并降档标注。

审计对象清单(实测)

文件字节行数正文板块目录链接置信度标签引语(带出处)
index.html49,91563661317—
2016-2017-wealthfreedom.html200,0711,83726308234 / 34
2026-interview.html67,56084114174216 / 16
assets/site.css30,203584————
assets/site.js17,945426————
合计365,6944,324466014150 / 50

两点口径说明:① 本页(审计报告)不计入被审对象,否则「统计自家标签数」会变成自我指涉; ② 置信度标签 141 处含首页图例与来源表里的 17 处,落在正文结论上的为 120 处(卷一 79、卷二 41)。

A1审计口径:沿用「以日为镜」五条纪律

口径对照逐条说明本站在每条纪律上做到了什么、哪些是有意偏离

「以日为镜」的 README 里写明了五条写作纪律。本站逐条对照落地,偏离的地方明说。

纪律(以日为镜)那一站的做法本站的落地本次实测
作者权威化 综合学者观点后直接下结论、给动作,不让读者自己选边 有意偏离。本站不下判断,只做「转述 + 来源定级」;唯一由编者下判断的板块是「十年对照」,且明确标注为编者归纳 9 行对照表全部标注判定来源
三级置信度 高可信·已查证 / 推演·中可信 / 推演·低可信 语义改造为「这行字离原话有多远」:原话·已核字幕 / 转写·中可信 / 概要·待核 141 处标签,覆盖 46 个板块
来源可追溯 正文上标 [n] 对应文末 85 条参考资料 用讲号(001–156)与时间码(00:00:00–04:22:28)替代参考文献 引语 50 / 50 带出处(100%)
数据纪律 优先最新数据;估算值标注方法;不同口径并排呈现 三批材料证据强度递减并逐板块声明;两处「标题与内容不符」用本地 ASR 复核后写明 第 010 / 019 重复音频已确认
风险写实 不回避坏消息,每个风险判断都配可执行解法 每卷各有一节「需要打折听的地方」(卷一 12 条 / 卷二 6 条),逐条说明为什么要打折 18 条,两卷均置于正文末

A2排版:版式、字体、深浅色

实测尺寸、断点与颜色变量均为代码实测值

排版维度看四件事:版心与留白是否稳定、字号与行高是否适合长文、宽屏与手机是否都成立、深色模式有没有残留。

版心与网格

版心 1240px,宽屏目录常驻 322px

内容列固定 --wrap-w:1240px;屏幕 ≥1119px 时左侧目录常驻 322px,正文与顶栏右列用同一条 calc(var(--toc-w) + max(0px, (100% - var(--toc-w) - var(--wrap-w))/2)) 计算,两者严格对齐。 小屏时该规则整体失效,退化为抽屉目录,正文回到单列居中。

竖向节奏

板块间距 56px,锚点偏移随顶栏自适应

section{margin-bottom:56px};scroll-margin-top:calc(var(--bar-h) + 20px) 保证点击目录跳转时标题不被 sticky 顶栏遮住。顶栏高度统一为 --bar-h:58px,抽屉、搜索面板、 移动端搜索条的吸顶位置全部由这一个变量推导。

字体

正文无衬线、标题用宋体,均为系统字体栈

正文栈:PingFang SC → Hiragino Sans GB → Microsoft YaHei → Source Han Sans SC → system-ui; 标题栈:Songti SC → Source Han Serif SC → Noto Serif SC → Georgia。 不加载任何 Web 字体,因此没有字体造成的布局抖动(CLS),中文阅读观感也更接近纸面。

深浅色

所有颜色走 CSS 变量,硬编码浅色已全部覆盖

颜色令牌在 :root 与 html[data-theme="dark"] 两处定义,共 26 个变量, 深色下覆写 20 个(其余 6 个是尺寸与字体栈,本来就不需要覆写)。 原设计里三处硬编码浅色(引用块渐变底、警示卡底色与标题色、头部径向渐变)已单独加 dark 覆写, 切换后无浅底深字或深底浅字残留。主题选择写入 localStorage,并在 <head> 内联脚本里提前应用,避免闪白。

响应式

六档断点,手机端搜索框收成一个放大镜

断点 1119 / 760 / 680 / 480 / 400 / 360 px。480px 以下搜索框折叠为图标,点击后整行下拉; 400px 以下隐藏 GitHub 图标保留分享与主题;品牌名三档收缩(全称 → 简称 → 两字)。

长文可读性

正文 15.5px / 行高 1.78,卡片 14px / 1.72

正文行高 1.78(约 27.6px)。版心 1240px ÷ 15.5px ≈ 80 个字/行(按全角字宽估算), 落在中文长文的舒适区。引语块用宋体 + 暖底,与正文形成明确层次。

A3格式:标签平衡、目录对齐、索引

实测以下数字由 _build/validate.py 直接统计,可复跑

格式维度看的是「机器能不能读懂、链接会不会断、检索能不能命中」。

标签平衡(24 类,差值全部为 0)

页面divsectionpliulh1h2h3blockquotecitespanabuttonsvg
首页1046740016110011715144
卷一532264324010126171343478536205
卷二1101410338911460161616824195
三页全部 24 类标签的开闭数量一致,差值 0;未发现未闭合标签

旁证一处「看似少了」其实是对的:原文案里的 <li> 计数比现在高 26(卷一)/ 14(卷二)—— 差值正好等于被替换掉的侧栏目录里的 <ol><li> 条数(26 与 14), 新目录改用抽屉式纯链接结构,并不代表正文字数减少。正文纯文本长度实测增加:卷一 +4.3%、卷二 +11.1%(来自新增的来源徽章与说明)。

目录对齐

双向检查:无悬空链接、无孤立板块

卷一:目录 29 条链接 → 26 个 section,缺失 0;26 个 section 全部出现在目录里,孤立 0。
卷二:目录 16 条链接 → 14 个 section,缺失 0,孤立 0。

29 与 26 的差是设计如此:目录除了 1 条卷首与 3 条分组标题,还有 26 条对应每个板块,分组标题另有独立锚点。

无重复 id

三页 id 总数 87,重复 0

id 分布:首页 17、卷一 41、卷二 29。每个 id 在页面内唯一,锚点跳转不会错位。

站内检索

47 条索引,锚点 100% 命中

首页的检索索引覆盖:总览 6 条 + 卷一 26 条 + 卷二 14 条 + 审计 1 条 = 47 条。 自动核对每条索引指向的文件与锚点,0 条失效。索引已改为严格 JSON,便于脚本校验。

逐讲索引

148 行,无「无字幕」灰条残留

卷一的全 156 讲索引共 148 行(B 站 80 + 续篇 58 + 补遗 10),已无 .nosub 灰底条目。 三块分组标题(正篇 / 续篇 / 补遗)本次补齐,并各挂一枚证据等级徽章。

零行内样式

65 处行内 style 已归一为 12 个工具类

整理过程中发现正文残留 65 处行内样式(间距与颜色,均为 margin 与 var() 颜色)。 已全部替换为语义化工具类,三页行内 style 计数为 0,样式来源只剩 assets/site.css 一处。

外部依赖

1 个可选 CDN,缺失时自动降级

全站唯一第三方脚本是 qrcodejs,只服务于「分享 → 生成微信二维码」。 未加载时该入口会提示改用「复制链接」,不影响其余功能;CSS 与主脚本均为本地资源。

A4置信度体系落地:三档、三个层级

体系说明语义改造的完整理由

置信度是这次改造的核心。它是「照搬以日为镜的做法」,但不是照抄它的语义——因为内容性质变了。

原话 · 已核字幕

可以当引用用有官方字幕或原视频逐字可核验,出处精确到讲号 / 时间码。

转写 · 中可信

引前须回原音依据第三方 ASR 转写或二手压缩材料,同音字、断句与专有名词都可能有误。

概要 · 待核

只能当线索别人已经压缩过一遍的概要,或标题 / 编号本身存疑、原片检索不到的流传说法。

为什么改语义

「以日为镜」标的是判断力,本站标的是引文保真度

那一站是作者自己的判断,所以标签问的是「这个结论有多可信」。 本站是转述别人的言论,对错不是编辑能担保的——编辑能担保的只有一件事:这行字离原话有多远。 所以三档的语义换成「保真度」,并且把「说错了」和「不是我说的」严格分开。

分层设计

板块徽章 → 卡片来源行 → 引语标签

① 板块级(40 处):每个板块标题下一行来源徽章,写明依据与讲号 / 时间码区间。
② 卡片 / 索引级(约 40 处):速览卡片与索引分组各有来源行。
③ 引语级(50 条):每条逐字引语的出处行末尾挂标签,讲号落在哪个来源区间就标哪一档。

有意保留

段落中间不做逐句标注

「以日为镜」可以做逐句标注,因为它的每一句都是作者的判断,都要定级。 本站的正文是连续转述,如果给每句话都盖一个章,就会制造一种「逐句都核过了」的伪精度—— 而事实上同一段里的依据强度是一样的。

所以本站把定级放在段落所属的来源区间上,而不是每一句上。密度更低,但每一枚标签都是真的。

有意保留

卷一速览 11 张卡片:讲号映射属编者判断

速览卡片是面向「如果只读一段」的重写稿,讲号与卡片的对应关系是编者按内容判定的, 不是原文自带的。这些卡片已标为「已核字幕」并写明具体讲号,读者可以按讲号回听核对。 这一步是推断,不是转录——已知并标注。

A5覆盖实测与分档理由

实测数字由脚本统计,非估算

分档分布(按页)

页面原话 · 已核转写 · 中概要 · 待核合计高档占比
首页(图例 + 来源表 + 对照表)9531753%
卷一 · 2016–17 音频课354168243%
卷二 · 2026 长访谈35524283%
合计79511114156%
为什么卷一「中档」最多

因为卷一的来源结构就是这样

卷一跨三个来源:B 站官方字幕只覆盖 001–080(26 个板块里占 11 个), 088–145 来自第三方 ASR 转写(占 10 个),146–155 只有 AI 概要(占 1 个),其余是索引与附录。 中档多不是标注偷懒,而是素材本身的保真度就这么高——这正是需要标出来的信息。

为什么卷二高档占 83%

因为卷二全片有官方字幕

7,068 句官方字幕覆盖 00:00:00 – 04:22:28,正文九段与 12 条金句因此全部落到时间码; 中低档的 7 处集中在「概念词典」「需要打折听的地方」与速览来源行——那些是编者归纳,不是原话。

引语覆盖率

50 条逐字引语,100% 带出处标签

卷一 34 条、卷二 16 条,每条 <cite> 末尾都有标签。 分档规则是机械可核查的:讲号 ≤080 判高档、081–145 判中档、146 及以后(含 vol.xxx)判低档; 卷二一律高档。没有任何一条是「凭感觉」定的。

交叉验证

标签总数与来源结构调整过两次

初版只有板块徽章(40 处);加入引语标签后到 50 条;再加入速览卡片与索引分组后到约 120 处。 每次增加都同步跑一遍统计脚本,确保不会出现「标签数与实际标注物不符」的情况—— 这是「以日为镜」那种做法最容易翻车的地方。

A6可访问性、兼容性与交付体积

实测逐页统计

检查项首页卷一卷二判定
图标按钮无 aria-label000通过
纯图标链接无可访问名称000通过
图片缺 alt000通过(全站无位图 <img>)
外链缺 rel="noopener"000通过
行内 style 残留000通过(已归一)
重复 id000通过
表格缺横向滚动容器0 / 00 / 00 / 0通过(被审三页无 <table>;本页 4 张表全部包在 .tablewrap 内)
脚本报错风险点所有 DOM 查询都有空值保护;页面无 TOC 时目录脚本整体跳过通过
体积

3 页共 318 KB,共享资源 48 KB

HTML 合计 317,546 B;site.css 30,203 B + site.js 17,945 B, 三页加共享资源共 365,694 B。无位图、无字体文件、无前端框架。 首次加载只需请求本页 + 两个共享资源。

兼容

依赖 calc() 嵌套 max()

宽屏目录对齐用到 calc(var(--toc-w) + max(0px, …)), 现代浏览器(Chrome / Edge / Safari / Firefox 近五年版本)均支持。 不支持时会回退为左对齐,不出现内容遮挡。

降级

禁用 JS 后仍可完整阅读

关掉脚本后:抽屉目录打不开,但正文全部可见; 搜索、分享、日夜模式失效,其余内容与锚点跳转正常。 主题默认浅色,不会出现深色残留。

A7问题清单与处理状态

问题台账不隐藏未修项

共记录 10 项。5 项已修、2 项为设计取舍、3 项为透明度事项(不修,但显式声明)。

#维度问题处理
1格式三页的 canonical 与 og:url 全部指向站点根,而非各自页面已修改为逐页 URL
2格式站内检索索引里有一条指向 audit.html,但该页当时尚未生成已修本页生成后自动命中
3格式正文残留 65 处行内 style(间距与颜色)已修归一为 12 个工具类,现为 0
4排版卷一逐讲索引只有「续篇」「补遗」两个分组标题,「正篇」缺标题已修补齐并挂证据徽章
5交付缺少社交分享封面 og.png,但 meta 已在引用已修新增 1200×630 封面
6置信度段落中间没有逐句标注,密度低于「以日为镜」有意保留理由见 A4
7置信度卷一速览 11 张卡片的讲号映射属编者判断有意保留已写明讲号可回听核对
8置信度卷一索引 148 行没有逐行标签透明声明由三块分组标题承担分档
9内容卷一第 010 分 P 标题贴错,且与第 019 是同一集重复音频透明声明索引行内标注 + 页脚详述
10内容卷一 146–155 集只有二手 AI 概要,无法逐字核对透明声明整块降为「概要 · 待核」

A8复核方法(可复跑)

可复现脚本随仓库一同发布

本页所有数字都不是人工数的。构建与自检脚本都在仓库的 _build/ 目录下,按顺序跑即可复现。

extract.py 抽取正文→ build.py 挂来源徽章 + 引语分档→ annotate.py 卡片与索引补标注→ assemble.py 组装三页→ normalize.py 行内样式归一→ validate.py 输出实测数据→ sync_audit.py 回填本页数字→ check.py 判定八项结论→ accept.mjs 真交互验收
复核清单

六项必跑

  • 标签平衡:24 类标签开闭差值必须全为 0。
  • 目录双向对齐:目录 href 无悬空、section 无孤立。
  • 索引锚点:47 条检索索引指向的文件与锚点全部存在。
  • 引语覆盖:<cite> 数量 = 带标签的 <cite> 数量。
  • 行内样式:三页 style=" 计数为 0。
  • 可访问名称:无可访问名称的按钮与链接均为 0。

以上六项加上资源存在性、本页数字一致性,共八项, 由 _build/check.py 一条命令跑完并打印 PASS / FAIL; 退出码非 0 即表示不可交付。此处不再靠人工目测。

本次结果

六项全部通过

对应本页 A3 / A5 / A6 三节的所有数字。任何一次改动后重跑, 数字若发生偏移,本页必须同步更新——否则审计报告本身就会成为不实陈述。

这条纪律已经脚本化:_build/sync_audit.py 从 validate_out.json 与产物真实字节数推导本页 A0 表格与 A6 体积卡的每一个数字, 且任何一次替换未命中都会直接报错退出。本页数字因此不可能与产物脱节。 重构品牌文案时它就抓到过一次偏差(三页字节数变了、表格还停在旧值)。

源码与脚本: strangeyu911-tech/justin-sun-corpus

交互验收

静态检查够不到的那一层:17 / 17 通过

标签配平、锚点存在、无行内样式——这些证明不了顶部栏那几样 JS 交互真的能用: 搜索会不会高亮、分享菜单会不会弹、日夜模式会不会切换并记住、抽屉目录能不能开。 而顶部栏正是本站照搬「以日为镜」的核心交付,只截图看不出来。

所以另有一份真交互验收:_build/accept.mjs 用 Playwright 驱动真实 Edge 浏览器跑 17 条断言,覆盖日夜模式切换 + localStorage 持久化、 检索命中数与无命中引导、分享菜单 12 渠道与 aria-expanded、 高亮计数一致性、高亮不越界到顶部栏、滚动联动与进度条、窄屏抽屉遮罩、四页零脚本报错。 当前 17 / 17。

它抓到过一个静态检查发现不了的问题:断言「高亮计数 == 正文 <mark> 数」 时报 46 对 43 —— 查下来是断言写窄了,脚本有意把 hero 与页脚也算作正文范围。 修的是断言,不是脚本。

A9已知边界:本次没能验证的部分

边界声明不把这些说成「已核」

审计的价值一半在于说清「哪些我查过」,另一半在于说清「哪些我没法查」。

无法逐字核对

卷一 146–155 集

这 10 集只有播客平台的 AI 概要 + 时间轴,没有逐字文本。本站按概要补全, 整块降为「概要 · 待核」,并明确写着「不能当逐字引用」。 想要逐字内容,只能回原始音频。

编号为推定

转写仓编号 ↔ 喜马原版编号

088–145 的对应关系是用「标题 + 时长」锚点推定的,已确认的锚点包括: 仓 006 = 站 1、仓 009 = 站 4、仓 016 = 站 11、仓 021 = 站 16、仓 027 = 站 21、仓 086 = 站 79、仓 087 = 站 80, 以及仓 081–087 与站 074–080 标题 7/7 全中、时长差仅 +6~+39 秒。 锚点之间是线性推定,未逐集听验。

站方标题不可信

B 站合集的标题不能当编号依据

第 010 分 P 是反例:标题与音频内容不符。所以本站对「标题相同即同一集」这类判断一律加一道时长或转写校验, 并在 MEMORY 里把这条固化成了流程。

口径差异

「156 集」是官方口径,不是实际可得数

专辑页原话说「一共是 156 个音频……但是由于有几个涉及违规,没有上传成功」。 因此「全 156 集」严格说是官方声称的集数,而不是「能公开听到 156 集」。 本站覆盖的编号区间是 001–156,其中 146–156 段的依据最弱。

未做

没有做第三方独立审计

本报告是作者自查,不是外部审计。所有「通过」都只代表自查脚本没有发现问题, 不代表不存在脚本没覆盖到的缺陷(例如语义层面的过度概括、翻译式失真)。

未做

没有逐条回听原音

标注定级依据的是「来源区间」而不是「逐条回听」。也就是说: 标为「原话 · 已核字幕」的条目,其来源是可靠的官方字幕,但本站并未把 250 条结论逐条拖回音频比对一遍。 这一点在首页的阅读前提里也写明了。

同一位作者的其他站点

下面这两处与本页同出一手,但体裁、口径完全不同 —— 列在这里,供你自己判断。

← 总览 审计报告 · 排版 / 格式 / 置信度 卷一 · 2016–17 音频课 →