直接回答:不要只写“按这个规则批量处理”,而要把每个判断拆成三部分——触发条件、默认动作、例外分支,并为每个例外注明可识别的边界信号。人工处理时你靠眼睛和上下文跳过异常,脚本没有这种余地;例外描述得越具体,脚本越不会在规模化后把个别样本的结论错误套用到全部对象上。
拿一个你亲手调整过、并且认为处理正确的页面作为样本。不要写“标题太长就改短”,而要写清你当时看到的证据:标题字符数、核心词出现位置、与正文首段的重复程度、同目录下其他页面的标题结构。把这些写成有序判断,例如:先看页面类型,再看标题是否覆盖主问题,再看正文是否给出可执行结论,最后决定改标题、改正文还是不动。
这一步的产出不是脚本,而是一份判断链:每个节点都要有可观察的输入。凡是你凭“感觉不太对”做出的决定,都先标出来,它们就是后面需要重点描述的例外来源。
假设你有一批产品说明页,人工经验是“把首段改写成包含使用场景的短句”。默认规则可以写成:首段少于某个字符数、且不含场景词时,替换为模板句。例外分支至少要有三类。
这三类例外的共同点是:它们都能用页面自身的字段或文本特征识别,而不是靠“看起来像”。脚本需求里要写的是这些特征,而不是“遇到特殊情况跳过”。
边界信号决定脚本能否自动分流。以上面的假设为例,可以约定:页面类型字段为空时进入人工队列;正文中已存在问答结构标记时保留原首段;规格参数缺失时只记录不修改。每个信号都要能由脚本读取,且读取结果只有“是/否”两种,避免模糊判断。
如果某个例外只能靠人工阅读判断,就明确写成“不自动处理”,而不是硬塞一个近似规则。规模化出错的常见原因,正是把只能人工判断的情况伪装成可计算条件。
把脚本先跑在一小组页面上,同时保留人工处理过的结果作为对照。比较时不要只看改动数量,而要看例外是否被正确分流:该进人工队列的有没有被自动改掉,该保留的有没有被覆盖。若发现某类例外频繁误判,先补充边界信号,再考虑扩大范围。
需要提醒的是,改动前后对比会受到搜索需求变化、季节波动和数据采集差异的影响,短期的升降不能单独证明处理正确。更稳妥的做法是记录每个页面的判断依据和实际动作,让下一次调整有据可查,而不是凭一次结果下结论。
最终交付的脚本需求应包含三栏:默认规则、例外条件、例外动作。每新增一个例外,都要写清它来自哪个真实页面、触发它的信号是什么、不处理会有什么后果。这样当页面结构或内容策略变化时,你能快速判断哪些例外仍然成立,哪些需要重写,而不是让脚本悄悄沿用已经失效的旧经验。