这是知乎独有的一道工序:动手写之前,先把同问题下的高赞回答拆开。 但请先记住一条边界——拆的是【结构、角度、缺口】,不是【句子】。所以本节真正的方法不是【收集别人写了什么】,而是用一张统计表,找出【所有人都没写的那一格】。
5.1.1 讲过:知乎是四章里唯一【有存量】的平台——你动手前就能看到及格线在哪。本节把这个特征变成一道具体工序,交给 5.3.2(出初稿)当输入。顺序不能反:先有【从哪个角度写】,才谈得上【怎么写】。 这也是本章的 Agent 侧比前三章多花力气的地方。
一、为什么知乎必须【先对标】
回想 5.1.1 那张表:在知乎,你写一篇回答,是在和同一个问题下已经存在的几百个答案比名次。
所以「这篇写得怎么样」这个问题,在知乎是没法孤立回答的:
| 平台 | 判断一篇好不好的依据 |
|---|---|
| 小红书 | 封面和标题的点击率、互动量 |
| 公众号 | 打开率、转发、在看 |
| 今日头条 | 完播/读完、推荐量 |
| 知乎 | 它在这个问题下的相对位置(排序、赞数) |
换句话说:在其他平台,你的对手是你的上一篇;在知乎,你的对手是同一个问题下已经写完的那些人。
因此本章 Agent 侧的第一道工序不是【生成】,而是【读懂战场】——这就是【对标】。
二、对标要拆三样东西
注意:拆的内容里没有【观点】和【句子】。 这是本节最重要的一条纪律,第五节会专门给理由。
| 拆什么 | 具体拆成什么 | 用来干什么 |
|---|---|---|
| ① 结构 | 开头方式(结论先行/故事开头/提问开场…)、用到哪些结构元素(定义/原理/案例/清单/数据/对比/亲历) | 看出套路——出现频次高的元素就是【所有人都在用的那一套】 |
| ② 角度 | 每篇从哪个角度切入(原理科普/亲历踩坑/工具测评/成本预算…) | 看出红海——同一个角度挤了 3 篇,你再写就是第 4 个 |
| ③ 缺口 | 把【这个话题本来应该有的角度】列成一张池子,减去已被覆盖的 | 找出空地——这是你的机会所在 |
为什么第③步要单独做? 因为人只能看见【已经写了的】,看不见【没写的】——没写的东西,你从页面上是刷不出来的。 所以必须先手工列一张候选池(这个话题下都有哪些可能的角度),再让脚本去比对。
因为它决定了初稿的输入——不是【写一篇关于收纳的文章】,而是【用甲户型+预算这两个角度,写一篇 1500 字左右的回答】。 给 Agent 的是一个【带着缺口和角度的任务】,而不是一个【话题】。 这个区别,是本章和前面三章在提示词层面最大的不同。
三、⚠️ 一条不能越的边界:拆结构,不抄内容
这一条必须写在最显眼的地方,因为【对标】这个动作,离【洗稿】只有一步。
| 可以做 | 不可以做 |
|---|---|
| 统计多少篇用了【结论先行】 | 把别人的开头段落改几个词搬过来 |
| 记录哪些角度被写过了 | 把别人写过的角度换个说法再写一遍 |
| 看有没有人讲过亲历细节 | 把别人的经历当作自己的经历来讲 |
| 学结构骨架(先定义后举例) | 学他的句式、语气、口头禅 |
为什么这条边界这么硬? 两个层次:
- 平台上,这是明确红线。 第一章就讲过一句关键的话:【通过更换题材人物、替换表达模板等方式规避治理的,同样从严处置】。 换个说法搬内容,正好落在这一句上;
- 技术上,它是可检测的。 平台判低质看的是文本特征——句式重复、结构过分工整。你把别人的结构原样搬来、换了词,在你这边看是【改了】,在统计特征上看是【没改】。
还有一个务实的理由:结构是可以学的通用技能,内容才是你的资产。 一篇回答的长尾价值(5.1.2 讲过)全部来自那些【只有你知道的东西】——你抄来的部分,恰好是价值最低的部分。
下面那个脚本的输入,是人工记录的元数据(赞数、字数、开头方式、结构元素、角度、有没有亲历细节),不是抓下来的回答正文。 这不是技术上的偷懒,是设计上的自觉——它干的是【统计】,不是【搬运】。 统计出来的结论(【3 篇挤在原理科普】【只有 2 篇有亲历细节】)是知识,可以随便用;正文是别人的作品,拿来统计一下就够,不该进你的流水线。
四、工作流四步
① 人工选对标
同一个问题下,取赞数前 5~8 个回答
(这一步为什么不自动化:见下面第五节)
↓
② 人工录入元数据
每个回答记:赞数、字数、开头方式、结构元素、角度、有没有亲历细节
(几个字段,一篇一两分钟)
↓
③ 脚本做统计
结构频次 / 角度分布 / 缺口识别 ← 本节的 Demo
↓
④ 定角度,写成任务卡
把【角度 + 字数 + 要补的缺口】写进 5.2 任务表的那一行
为什么第①步不自动化? 三个理由,一个比一个实际:
- 样本量太小。 5 到 8 篇,人点开、扫一眼、记几个字段,比写一个抓取脚本再调试还快;
- 选哪几篇需要判断。 要排除已经是几年前的、问题已经过时的回答,也要排除答非所问的高赞——这个判断比抓取难得多;
- 合规边界更干净。 人工阅读、人工记录,不触碰平台的自动化访问限制(5.1.1 现状一:知乎的用户协议明确禁止自动化工具访问、干扰网站正常运行)。
这条判断的通用形式:样本小、需要判断、且规避风险的地方,交给人;样本大、规则固定、纯统计的地方,交给机器。 这和 4.4 那一章选【墨滴排版】而不是【自己写转换器】是同一条原则的不同侧面。
五、动手 Demo:对标拆解器
它做的是第③步。 输入是人工录入的对标元数据,输出三样:结构统计、角度分布、缺口清单。
# -*- coding: utf-8 -*-
"""5.3.1 Demo:对标拆解器 —— 把同问题下的高赞回答拆成【结构 / 角度 / 缺口】(纯标准库)"""
import re
# 每个对标回答:赞数 / 字数 / 开头方式 / 结构元素 / 切入角度 / 有没有亲历细节 / 亲历细节条数
ANSWERS = [
{"id": "A1", "votes": 3200, "words": 1800, "open": "结论先行",
"struct": ["定义", "原理", "案例", "清单"], "angle": "原理科普", "firsthand": False, "detail": 0},
{"id": "A2", "votes": 2100, "words": 2400, "open": "结论先行",
"struct": ["定义", "原理", "对比", "清单"], "angle": "原理科普", "firsthand": False, "detail": 0},
{"id": "A3", "votes": 1800, "words": 1200, "open": "故事开头",
"struct": ["亲历", "踩坑", "清单"], "angle": "亲历踩坑", "firsthand": True, "detail": 4},
{"id": "A4", "votes": 950, "words": 2600, "open": "提问开场",
"struct": ["定义", "原理", "案例", "数据"], "angle": "原理科普", "firsthand": False, "detail": 0},
{"id": "A5", "votes": 600, "words": 900, "open": "结论先行",
"struct": ["清单", "工具"], "angle": "工具测评", "firsthand": True, "detail": 1},
]
# 这个话题下【本来应该有人写】的角度池(人工列的候选,脚本负责比对)
ANGLE_POOL = ["原理科普", "亲历踩坑", "工具测评", "户型适配", "成本预算", "心理动因", "长期维护", "反常识"]
def topn(counter, n=3):
return sorted(counter.items(), key=lambda kv: (-kv[1], kv[0]))[:n]
print("=" * 72)
print("一、对标全景(共 %d 篇)" % len(ANSWERS))
print("=" * 72)
print(" %-4s %-7s %-7s %-9s %-9s %-9s %s" % ("编号", "赞数", "字数", "开头方式", "角度", "亲历细节", "结构元素"))
for a in ANSWERS:
print(" %-4s %-7d %-7d %-9s %-9s %-9s %s"
% (a["id"], a["votes"], a["words"], a["open"], a["angle"],
("有 %d 条" % a["detail"]) if a["firsthand"] else "无",
"/".join(a["struct"])))
# ---- 二、结构统计 ----
print()
print("=" * 72)
print("二、结构统计(【怎么写】比【写了什么】更能看出套路)")
print("=" * 72)
op = {}
for a in ANSWERS:
op[a["open"]] = op.get(a["open"], 0) + 1
print(" 开头方式:")
for k, v in sorted(op.items(), key=lambda kv: -kv[1]):
print(" %-10s %d 篇 %s" % (k, v, "█" * v))
el = {}
for a in ANSWERS:
for e in a["struct"]:
el[e] = el.get(e, 0) + 1
print(" 结构元素出现频次(越高=越套路):")
for k, v in sorted(el.items(), key=lambda kv: (-kv[1], kv[0])):
print(" %-6s %d 篇 %s" % (k, v, "█" * v))
# ---- 三、角度分布 ----
print()
print("=" * 72)
print("三、角度分布(扎堆的就是红海)")
print("=" * 72)
ang = {}
for a in ANSWERS:
ang[a["angle"]] = ang.get(a["angle"], 0) + 1
for k, v in sorted(ang.items(), key=lambda kv: -kv[1]):
flag = " ← 红海(%d 篇挤在一个角度)" % v if v >= 2 else ""
print(" %-10s %d 篇%s" % (k, v, flag))
# ---- 四、缺口识别 ----
print()
print("=" * 72)
print("四、缺口识别(你的机会在这三处)")
print("=" * 72)
covered = set(a["angle"] for a in ANSWERS)
gaps = [g for g in ANGLE_POOL if g not in covered]
print(" 角度缺口:%s" % "、".join(gaps))
print()
# 结构缺口:没人在结构里用的元素(但仍需有意义的那些)
STRUCT_SHOWN = ["数据", "对比", "案例", "工具"]
untouched = [e for e in STRUCT_SHOWN if el.get(e, 0) <= 1]
print(" 结构缺口(用的人≤1的元素):%s" % "、".join(untouched))
print()
fh = [a for a in ANSWERS if a["firsthand"]]
print(" 人味缺口:%d/%d 篇有亲历细节;平均每篇 %.1f 条 —— %s"
% (len(fh), len(ANSWERS),
sum(a["detail"] for a in ANSWERS) / float(len(ANSWERS)),
"稀缺,这是最大的一块空地" if len(fh) * 2 < len(ANSWERS) else "不稀缺"))
# ---- 五、结论 ----
print()
print("=" * 72)
print("五、结论")
print("=" * 72)
crowded = [k for k, v in ang.items() if v >= 2]
print(" 不建议切入:%s(%d 篇同款,且多以【%s】开场,结构高度雷同)"
% ("、".join(crowded), sum(ang[k] for k in crowded), topn(op, 1)[0][0]))
print(" 建议切入 :%s + %s" % (gaps[0], gaps[1] if len(gaps) > 1 else "亲历细节"))
print(" 理由:这两个角度【没人写】,而且落地时天然需要【只有作者知道的东西】——")
print(" 一条对标的缺口,正好和平台要的【人味】重合在同一个位置。")
实际运行输出(真跑,不是示意):
========================================================================
一、对标全景(共 5 篇)
========================================================================
编号 赞数 字数 开头方式 角度 亲历细节 结构元素
A1 3200 1800 结论先行 原理科普 无 定义/原理/案例/清单
A2 2100 2400 结论先行 原理科普 无 定义/原理/对比/清单
A3 1800 1200 故事开头 亲历踩坑 有 4 条 亲历/踩坑/清单
A4 950 2600 提问开场 原理科普 无 定义/原理/案例/数据
A5 600 900 结论先行 工具测评 有 1 条 清单/工具
========================================================================
二、结构统计(【怎么写】比【写了什么】更能看出套路)
========================================================================
开头方式:
结论先行 3 篇 ███
故事开头 1 篇 █
提问开场 1 篇 █
结构元素出现频次(越高=越套路):
清单 4 篇 ████
原理 3 篇 ███
定义 3 篇 ███
案例 2 篇 ██
亲历 1 篇 █
对比 1 篇 █
工具 1 篇 █
数据 1 篇 █
踩坑 1 篇 █
========================================================================
三、角度分布(扎堆的就是红海)
========================================================================
原理科普 3 篇 ← 红海(3 篇挤在一个角度)
亲历踩坑 1 篇
工具测评 1 篇
========================================================================
四、缺口识别(你的机会在这三处)
========================================================================
角度缺口:户型适配、成本预算、心理动因、长期维护、反常识
结构缺口(用的人≤1的元素):数据、对比、工具
人味缺口:2/5 篇有亲历细节;平均每篇 1.0 条 —— 稀缺,这是最大的一块空地
========================================================================
五、结论
========================================================================
不建议切入:原理科普(3 篇同款,且多以【结论先行】开场,结构高度雷同)
建议切入 :户型适配 + 成本预算
理由:这两个角度【没人写】,而且落地时天然需要【只有作者知道的东西】——
一条对标的缺口,正好和平台要的【人味】重合在同一个位置。
读结果,五个值得注意的地方:
-
最有力的一组对比藏在第一张表里:
A3只有 1200 字,赞 1800,排第三;A4有 2600 字、结构元素最全(定义/原理/案例/数据),赞只有 950,排第四。 写得更长、结构更完整的那一篇,输给了更短的那一篇。 差别在哪?A3有 4 条亲历细节,A4一条都没有。 这是本节最有说服力的一组数——在知乎,长度和结构完整度不决定赞数,人味决定。 -
清单出现在 4 篇里(5 篇中 4 篇)。 清单是结构元素里最容易套路化的一个——因为它既好写、又显得有条理。 所以这条统计给了一个很具体的提醒:如果 4 篇都用清单,你也用清单,你就是第 5 个。 这不代表不能用,代表【不能只靠它】。 -
结论先行3 篇。 和第 2 条是同一个现象的另一面:开头节奏也在趋同。 而平台判 AI 的抓手之一恰恰是【结构过分工整、句式重复】(5.1.1 现状三)——所以第一批高赞回答的【写法】本身,就已经是这个问题的【套路基线】了。 跟着它写,等于自动获得一个【很标准】的文本特征。 -
缺口那一栏才是本节真正的产出:
户型适配和成本预算两个角度【没人碰】。 注意脚本给出的理由——这两个角度落地时天然需要【只有作者知道的东西】(你家门后只有二十厘米、你的预算是多少)。所以【对标的缺口】与【平台要的人味】,在位置上重合了。 这不是设计巧合,这是同一件事的两种说法:一个角度之所以是缺口,往往正因为写它需要亲历。
-
脚本最后的结论是【不建议切入:原理科普】——注意它给的理由不是【写得不好】,而是【3 篇同款、开场方式一样、结构雷同】。 这是本节要建立的判断方式:在知乎,选择写什么,是在看【别人写了什么】和【别人都怎么写的】——两者同等重要。
它吃的是元数据(赞数、开头方式、结构元素、角度……)。这套字段对小红书、公众号、头条同样适用——任何一个【同类内容会互相竞争】的平台,都可以用同一张表做对标。 唯一变的是【角度池】那一栏:收纳话题的角度池是户型、预算、动因;换成别的话题,池子要重列。而这一栏恰恰是人工的——这也是本节第四节那条判断(样本小、要判断的,留给人)的具体体现。
30 秒实验
在知乎找一个你熟悉的问题,只看它下面赞数前 5 的回答,把它们的【开头第一句】抄下来(只抄第一句,不动正文)。
会发生什么:
- 如果有 3 句以上的句式结构是同一个形状——恭喜,你摸到了这个问题的【套路基线】。你的回答如果也这么开头,就会立刻显得【和大家一样】;
- 顺手做一件事:在这 5 个开头里,找有没有哪一句写了【只有作者才会有的东西】(一个具体的数字、一个地名、一个具体的失败经历)。
结论:开头第一句是【人味密度最高】的位置——因为它决定了读者要不要读下去,所以写它的时候人最用心、也最暴露自己。对标一个问题的开头,等于对标这个问题的【真人浓度】。 如果那 5 句都是干干净净的结论句,那你的机会就非常明确了:写一个不那么干净的开头。
常见误区
- 【对标就是看看别人怎么写,然后照着写】——错,方向正好反了。 对标的目的是【找出别人都怎么写,然后避开】。统计出来的高频元素(本节里的【清单 4 篇】【结论先行 3 篇】)是【要小心的地方】,不是【该模仿的地方】。
- 【对标就是收集素材,看到好的句子记下来备用】——错,这条越线了。 拆的是结构、角度、缺口,不是句子。 平台已明确【更换表达模板规避治理】同样从严处置,而且统计特征上【换个词】等于没换。 更要紧的是:你抄来的部分,恰好是价值最低的部分(长尾价值全部来自只有你知道的东西)。
- 【对标应该自动化,人只做最后一步】——错,分工要反过来。 对标这个任务样本小(5~8 篇)、需要判断(选哪几篇、哪些已经过时)、且涉及平台的自动化访问限制——这三条都指向【该人做】。机器接的是【人工录完元数据之后的统计】(本节的 Demo)。这与 4.4 那一章选墨滴而不是自己写转换器,是同一条原则的两个侧面。
- 【高赞回答的结构就是标准答案】——错,本节数据直接反驳。
A3与A4的对比摆在那儿:结构最全、字数最多的那一篇,赞数只有别人的一半。 高赞的结构值得【分析】,不值得【复制】——它告诉你【这个问题的读者在看什么】,不告诉你【你该怎么写】。 - 【角度池可以省掉,直接看别人写了哪些角度】——错,省掉的正好是最关键那一步。 人只能看见【已经写了的】,看不见【没写的】——缺口是刷不出来的。 必须先人工列一张候选池,再让脚本去比对。这张池子列得好不好,直接决定这次对标有没有价值。
自测三问(点开对答案)
1. **【对标】拆的是哪三样东西?为什么不能拆【内容】?** **结构(开头方式、结构元素)、角度(切入方向)、缺口(未覆盖的角度)。** 不能拆内容的原因有三层:**① 平台上,【更换表达模板规避治理】已被明确列为从严处置对象,换个说法搬内容正好落在这一句上;② 技术上,平台判 AI 看的是文本特征(句式重复、结构过分工整),换词在统计上等于没换;③ 价值上,一篇回答的长尾价值全部来自【只有你知道的东西】,而抄来的部分恰好是价值最低的部分。** 2. **脚本的输入为什么是【人工录入的元数据】,而不是【抓下来的回答全文】?** 三个理由:**① 样本只有 5~8 篇,人工录入比写抓取脚本更快**;**② 选哪几篇需要判断**(排除过时的、答非所问的高赞),**这个判断比抓取难得多**;**③ 合规边界更干净**——人工阅读、人工记录不触碰平台的自动化访问限制。 **而且这是一个设计上的自觉:脚本干的是【统计】,不是【搬运】。** 统计结论(【3 篇挤在原理科普】)**是知识**,可以随便用;正文**是别人的作品**,不该进你的流水线。 3. **结合本节的 Demo,说说【对标的缺口】和【平台要的人味】为什么会重合?** 因为**一个角度之所以是缺口,往往正因为写它需要亲历**。 脚本把这一点显示得很清楚:`户型适配` 和 `成本预算` 两个角度没人碰,**而写它们必然要提到【你家门后只有二十厘米】【你的预算是多少】这类只有作者才知道的信息**——**这恰好就是平台要的【人味】**(5.1.1 讲过:判 AI 看的是文本特征,而亲历细节是最难被生成的)。 反过来看那 3 篇挤在【原理科普】的回答:**它们的角度本身就不需要亲历**,所以**结构趋同、开头一样、人味为零**——**红海和套路是同源的。**- ☐ 下一节(5.3.2 知乎图文创作智能体)
相关笔记
- 知乎图文自动化创作和发布助手整体流程设计 —— 本节是那张任务表的第①格
- 知乎图文创作和发布概述 —— 【知乎有存量竞争】这个前提的出处
- 今日头条批量发布助手Agent部分的工作流设计 —— 上一个【防同质化】的设计,本节是它在知乎的形态
- 提示词设计 —— 本节产出的【带缺口和角度的任务卡】怎么变成提示词
- 🤖 Agent+RPA实战 · 索引 —— 全课路线图