[{"data":1,"prerenderedAt":422},["ShallowReactive",2],{"blog-ai-writing-software-details":3,"blog-prev-ai-writing-software-details":91,"blog-next-ai-writing-software-details":175},{"id":4,"title":5,"author":6,"body":7,"canonical":75,"category":76,"cover":75,"date":77,"description":78,"draft":79,"extension":80,"keywords":75,"meta":81,"navigation":82,"noindex":79,"ogImage":75,"path":83,"seo":84,"seoDescription":75,"seoTitle":75,"stem":85,"tags":86,"updated":75,"__hash__":90},"blog\u002Fblog\u002Fai-writing-software-details.md","让 AI 写出软件行业的细节，靠三份材料","元析智能",{"type":8,"value":9,"toc":66},"minimark",[10,14,19,22,25,29,32,35,39,42,45,48,51,54,57,60,63],[11,12,13],"p",{},"2025 年 12 月我用同一套提示词让 AI 写「日志分析」这个主题，两次结果差得很远。第二次只多做了一件事：先喂材料。想要 AI 写出软件行业的细节，靠的不是把提示词写得更花，而是给它三份东西。",[15,16,18],"h2",{"id":17},"第一份产品文档和更新日志","第一份：产品文档和更新日志",[11,20,21],{},"AI 不知道你的产品里那个字段叫什么。它会把「采样率」写成「采样比例」，把「事件配额」写成「数据上限」，看着像那么回事，实际一查就错。",[11,23,24],{},"我们把产品文档、API 文档、近半年的更新日志整理成一个文件，写到哪类主题就喂对应的部分。更新日志尤其有用，里面有真实的版本号、发布时间、配置项变更，这些东西写进文章里，懂行的人一眼能看出作者是真在用。",[15,26,28],{"id":27},"第二份真实问答","第二份：真实问答",[11,30,31],{},"客户工单、售前咨询、GitHub issue 里的原话，是最有信息量的素材。把公司名和敏感信息去掉，保留问题本身。比如「为什么日志里百度蜘蛛的 UA 是空的」「GSC 里显示已抓取未编入索引但页面明明有内容」，这类问题写进文章，比任何方法论都具体。",[11,33,34],{},"我的习惯是每篇至少带一个真实问题的原话转述。读者看到会想，这个问题我也遇到过。",[15,36,38],{"id":37},"第三份术语和禁区","第三份：术语和禁区",[11,40,41],{},"术语表解决两件事：这个行业的标准叫法是什么，我们内部怎么叫。禁区表列清楚不能出现的表述，比如不承诺排名、不写具体客户的业绩、不引用没核过的数据。",[11,43,44],{},"还有一层是文风禁区。我们不用的词、不用的句式，也写进文件里。AI 的默认写法很爱用排比和总结升华，这些都要在材料里明确禁止，不然它每次都给你来一段。",[15,46,47],{"id":47},"提示词的结构",[11,49,50],{},"角色一句话就够，不用铺垫。材料分块贴，标明哪块是文档、哪块是问答。要求写 1200 字，每个二级标题只讲一个论点，禁止编造数字，遇到不确定的地方留空让我补。",[11,52,53],{},"最后加一句自查：输出前问自己三遍，这段里有没有只有我们知道的信息？没有就重写。",[15,55,56],{"id":56},"材料要跟着产品更新",[11,58,59],{},"材料会过期。产品改了定价、加了功能、换了界面，旧材料喂进去就会写出错的细节。我们每月花半小时更新一次材料文件，重点改三处：版本号、菜单路径、限制数字。",[11,61,62],{},"也别一次性给 AI 太多。三份文件加起来超过一万字，它反而抓不住重点。写到哪个主题就摘出对应的 1500 字左右，宁可少给，不要给一坨。",[11,64,65],{},"我们每篇给 AI 的材料在 2000 字以上。材料不够的时候，出来的稿子读着通顺，但没有一句是别人写不出来的。",{"title":67,"searchDepth":68,"depth":68,"links":69},"",2,[70,71,72,73,74],{"id":17,"depth":68,"text":18},{"id":27,"depth":68,"text":28},{"id":37,"depth":68,"text":38},{"id":47,"depth":68,"text":47},{"id":56,"depth":68,"text":56},null,"内容运营","2025-12-12","同一套提示词，给不给材料，出来的稿子差一个档。我们每篇给 AI 准备三份材料：产品文档、真实问答、术语禁区，文章才能有具体参数和真实场景。",false,"md",{},true,"\u002Fblog\u002Fai-writing-software-details",{"title":5,"description":78},"blog\u002Fai-writing-software-details",[87,88,89],"AI写作","提示词","内容质量","SaZwAY-8neI-KdAL3xKL7HybK26bUDlOsPw2-7W8GDY",{"id":92,"title":93,"author":6,"body":94,"canonical":75,"category":163,"cover":75,"date":164,"description":165,"draft":79,"extension":80,"keywords":75,"meta":166,"navigation":82,"noindex":79,"ogImage":75,"path":167,"seo":168,"seoDescription":75,"seoTitle":75,"stem":169,"tags":170,"updated":75,"__hash__":174},"blog\u002Fblog\u002Ftraffic-drop-diagnosis-9-days.md","流量掉 62%，我们用 9 天定位到根因",{"type":8,"value":95,"toc":156},[96,99,103,106,109,112,116,119,122,126,129,132,135,138,141,144,147,150,153],[11,97,98],{},"2025 年 9 月，一个客户站的自然流量 9 天掉了 62%。团队第一反应是算法更新，我们排了 9 天，根因是自己改版时把 1200 个页面 URL 换了、301 链没配全。这篇把排查顺序完整写出来。",[15,100,102],{"id":101},"第-1-到-3-天先排除算法","第 1 到 3 天：先排除算法",[11,104,105],{},"第一件事看同行。我们同时监测的 8 个同类站，同期流量波动都在 5% 以内。只有一个站掉，基本可以排除\"算法更新\"这个解释。",[11,107,108],{},"第二件事看掉的是哪些页面。是全部页面一起掉，还是集中在某个栏目？这个客户的掉量集中在产品文档和博客两个栏目，首页和定价页几乎没动。范围一缩小，方向就清楚了。",[11,110,111],{},"第三件事，看下降的形状。算法更新通常一两天内影响大量站点，改版的影响是随着抓取逐步扩散的。这个客户的曲线是缓慢下滑，九天里每天掉一点，更像抓取问题，不像算法。",[15,113,115],{"id":114},"第-4-到-6-天看日志和收录","第 4 到 6 天：看日志和收录",[11,117,118],{},"查百度蜘蛛和 Googlebot 的日志，发现改版后蜘蛛访问量掉了 70%，而且大量请求返回 404。",[11,120,121],{},"再看搜索资源平台的索引量：从 1.8 万掉到 6900。Google Search Console 的已编入索引页面也在掉。两边同时掉，指向同一个问题。",[15,123,125],{"id":124},"第-7-到-9-天定位到改版","第 7 到 9 天：定位到改版",[11,127,128],{},"把改版前后的 URL 清单拉出来对比，1200 个页面从 \u002Fdocs\u002Fxxx 换成了 \u002Fdocumentation\u002Fxxx，301 只配了 300 多条，剩下的直接 404。",[11,130,131],{},"更糟的是，新 URL 的 sitemap 是改版后第三天才提交的，中间有三天蜘蛛来了只能看到 404。",[15,133,134],{"id":134},"修复动作",[11,136,137],{},"三件事同时做：补全 301 映射，1200 条一条不落；旧 sitemap 保留两周，新旧都提交；在 404 页面上加搜索框和热门文档入口，减少用户流失。",[11,139,140],{},"修复用了 4 天，其中补 301 是最费时间的，因为旧 URL 清单不全，我们从日志里反推。",[11,142,143],{},"顺带做了两件事：把 404 页面的返回码从 200 改回 404——之前为了“让用户不难受”全返回 200，等于告诉搜索引擎这些页面还在；给新 URL 在导航和文章里补了内链。",[15,145,146],{"id":146},"恢复曲线",[11,148,149],{},"第 3 周开始有回升，第 6 周回到改版前的 78%，第 10 周回到 94%。没有回到 100%，因为期间有 40 多篇内容被我们顺手删了。这次恢复比预估快，原因之一是品牌词搜索量那段时间没掉，说明站点的主体信任没受损，修好抓取就回来了。",[11,151,152],{},"这次之后我们定了个规矩：改版必须做三件事——全量 URL 映射表、301 上线后抽查 50 条、新旧 sitemap 并行两周。现在改版前我们会先跑一遍爬虫，把现有 URL 全存下来，避免再靠日志反推。",[11,154,155],{},"流量掉了先别改内容。改版、上线、换程序这些动作，比算法更新的嫌疑大得多。",{"title":67,"searchDepth":68,"depth":68,"links":157},[158,159,160,161,162],{"id":101,"depth":68,"text":102},{"id":114,"depth":68,"text":115},{"id":124,"depth":68,"text":125},{"id":134,"depth":68,"text":134},{"id":146,"depth":68,"text":146},"行业观察","2025-12-11","2025 年 9 月一个客户站流量 9 天掉 62%，所有人都以为是算法更新。我们排了 9 天，根因是改版时换了 1200 个页面 URL、301 链丢了。排查顺序、修复动作和恢复曲线都在这篇，流量掉的时候可以直接照着走，我们把九天的判断都记了下来。",{},"\u002Fblog\u002Ftraffic-drop-diagnosis-9-days",{"title":93,"description":165},"blog\u002Ftraffic-drop-diagnosis-9-days",[171,172,173],"流量下滑","故障排查","技术SEO","pa6CV_07EZ7ChSosWidR9Z1NqmlnMWuoSF-G_b81hSA",{"id":176,"title":177,"author":6,"body":178,"canonical":75,"category":173,"cover":75,"date":411,"description":412,"draft":79,"extension":80,"keywords":75,"meta":413,"navigation":82,"noindex":79,"ogImage":75,"path":414,"seo":415,"seoDescription":75,"seoTitle":75,"stem":416,"tags":417,"updated":75,"__hash__":421},"blog\u002Fblog\u002Fcrawl-log-analysis-commands.md","日志分析入门：三个命令看蜘蛛在抓什么",{"type":8,"value":179,"toc":403},[180,183,187,259,262,266,303,306,310,365,368,375,378,381,384,387,390,393,396,399],[11,181,182],{},"日志是唯一能直接看到蜘蛛行为的数据。GSC 的抓取统计只给汇总，百度搜索资源平台给得更少。要看细节，还是得自己读 access.log。",[15,184,186],{"id":185},"命令一数请求","命令一：数请求",[188,189,193],"pre",{"className":190,"code":191,"language":192,"meta":67,"style":67},"language-bash shiki shiki-themes github-light github-dark","grep -c \"Googlebot\" access.log\ngrep \"Googlebot\" access.log | awk '{print $4}' | cut -d: -f1 | sort | uniq -c\n","bash",[194,195,196,216],"code",{"__ignoreMap":67},[197,198,201,205,209,213],"span",{"class":199,"line":200},"line",1,[197,202,204],{"class":203},"sScJk","grep",[197,206,208],{"class":207},"sj4cs"," -c",[197,210,212],{"class":211},"sZZnC"," \"Googlebot\"",[197,214,215],{"class":211}," access.log\n",[197,217,218,220,222,225,229,232,235,237,240,243,246,248,251,253,256],{"class":199,"line":68},[197,219,204],{"class":203},[197,221,212],{"class":211},[197,223,224],{"class":211}," access.log",[197,226,228],{"class":227},"szBVR"," |",[197,230,231],{"class":203}," awk",[197,233,234],{"class":211}," '{print $4}'",[197,236,228],{"class":227},[197,238,239],{"class":203}," cut",[197,241,242],{"class":207}," -d:",[197,244,245],{"class":207}," -f1",[197,247,228],{"class":227},[197,249,250],{"class":203}," sort",[197,252,228],{"class":227},[197,254,255],{"class":203}," uniq",[197,257,258],{"class":207}," -c\n",[11,260,261],{},"第一条看总量，第二条按天分组看趋势。我们习惯把百度蜘蛛（Baiduspider）也一起数，两条曲线放一起看，一边涨一边跌通常意味着抓取预算被某个方向吃掉了。",[15,263,265],{"id":264},"命令二看状态码分布","命令二：看状态码分布",[188,267,269],{"className":190,"code":268,"language":192,"meta":67,"style":67},"grep \"Googlebot\" access.log | awk '{print $9}' | sort | uniq -c | sort -rn\n",[194,270,271],{"__ignoreMap":67},[197,272,273,275,277,279,281,283,286,288,290,292,294,296,298,300],{"class":199,"line":200},[197,274,204],{"class":203},[197,276,212],{"class":211},[197,278,224],{"class":211},[197,280,228],{"class":227},[197,282,231],{"class":203},[197,284,285],{"class":211}," '{print $9}'",[197,287,228],{"class":227},[197,289,250],{"class":203},[197,291,228],{"class":227},[197,293,255],{"class":203},[197,295,208],{"class":207},[197,297,228],{"class":227},[197,299,250],{"class":203},[197,301,302],{"class":207}," -rn\n",[11,304,305],{},"健康站点 200 占 85% 以上，5xx 应该低于 0.5%。404 占比高说明死链多，301 占比高说明重定向链没收敛。5xx 是最要命的，蜘蛛连续遇到几次服务端错误会主动降频。",[15,307,309],{"id":308},"命令三按路径聚合","命令三：按路径聚合",[188,311,313],{"className":190,"code":312,"language":192,"meta":67,"style":67},"grep \"Googlebot\" access.log | awk '{print $7}' | cut -d\u002F -f2 | sort | uniq -c | sort -rn | head -20\n",[194,314,315],{"__ignoreMap":67},[197,316,317,319,321,323,325,327,330,332,334,337,340,342,344,346,348,350,352,354,357,359,362],{"class":199,"line":200},[197,318,204],{"class":203},[197,320,212],{"class":211},[197,322,224],{"class":211},[197,324,228],{"class":227},[197,326,231],{"class":203},[197,328,329],{"class":211}," '{print $7}'",[197,331,228],{"class":227},[197,333,239],{"class":203},[197,335,336],{"class":207}," -d\u002F",[197,338,339],{"class":207}," -f2",[197,341,228],{"class":227},[197,343,250],{"class":203},[197,345,228],{"class":227},[197,347,255],{"class":203},[197,349,208],{"class":207},[197,351,228],{"class":227},[197,353,250],{"class":203},[197,355,356],{"class":207}," -rn",[197,358,228],{"class":227},[197,360,361],{"class":203}," head",[197,363,364],{"class":207}," -20\n",[11,366,367],{},"看哪个一级路径吃掉最多请求。2025 年 10 月一个站日抓 1.2 万次，排第一的是 \u002Fapi\u002F，占 41%，全部返回 401。robots.txt 里没屏蔽 API 路径，蜘蛛每天白跑 5000 次。屏蔽后产品页的抓取从每天 800 次涨到 2600 次。",[11,369,370,371,374],{},"顺手还能算响应时间：把 ",[194,372,373],{},"$request_time"," 聚合一下，平均超过 1 秒就要查服务器，蜘蛛抓取频次和响应速度强相关。",[15,376,377],{"id":377},"日志怎么留",[11,379,380],{},"nginx 默认按天切分，保留 7 天，做抓取分析不够用。我们一般让运维保留 90 天并压缩归档，或者直接推到日志服务里。做一次完整诊断要看连续 4 周的数据，单看一天容易被大促、发版这种异常带偏。",[11,382,383],{},"如果站点在 CDN 后面，源站日志里只有回源请求，蜘蛛直接命中缓存的请求看不到。这种情况要用 CDN 厂商的访问日志，或者把蜘蛛 UA 的回源规则调整一下。我们遇到过一次，客户以为自己日抓只有 300 次，换到 CDN 日志一看实际是 4000 次，诊断结论完全反了。",[15,385,386],{"id":386},"三个常见误判",[11,388,389],{},"把 UA 当身份。UA 可以伪造，日志里出现自称 Googlebot 的请求不一定是真的，验证方法是反查 IP 段。把缓存命中当没抓。前面说过，CDN 后面的日志会少一大截。把周末的低抓取当异常。蜘蛛也有自己的节奏，按周看比按天看稳。",[15,391,392],{"id":392},"什么时候不用做",[11,394,395],{},"日抓取量 1000 次以下的站，先别碰日志分析。抓取量太小，结论全是噪声，先把内容做起来、把收录问题修好。抓取预算这件事，是流量上来了才值得抠的细节。",[11,397,398],{},"工具方面，GoAccess 能出一份可视化报表，Screaming Frog Log File Analyser 适合和爬虫数据对照，命令行足够应付 80% 的场景。我们做诊断先用三个命令看一遍，判断要不要上工具。",[400,401,402],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":67,"searchDepth":68,"depth":68,"links":404},[405,406,407,408,409,410],{"id":185,"depth":68,"text":186},{"id":264,"depth":68,"text":265},{"id":308,"depth":68,"text":309},{"id":377,"depth":68,"text":377},{"id":386,"depth":68,"text":386},{"id":392,"depth":68,"text":392},"2025-12-13","不用装工具也能做日志分析。我们用 awk 和 grep 从 nginx 日志里拉出蜘蛛请求量、状态码分布和最费预算的路径，附一个 2025 年 10 月的诊断记录，日抓 1.2 万次里 41% 是无效请求。",{},"\u002Fblog\u002Fcrawl-log-analysis-commands",{"title":177,"description":412},"blog\u002Fcrawl-log-analysis-commands",[418,419,420],"日志分析","抓取预算","爬虫","0jXqh1Xu0qIIJacHBvtC-GCTZ9P3T1s6qFtljpRgYHs",1794088110103]