时地方

This commit is contained in:
coco
2026-07-21 14:53:24 +08:00
parent 8b94d76799
commit 1b8027e61c
308 changed files with 61360 additions and 10 deletions
+55 -1
View File
@@ -225,4 +225,58 @@ GEO是针对**生成式AI引擎**(如ChatGPT、Google AI Overviews、Perplexit
GEO的核心是**“让AI成为你的流量入口”**,需同步做好**技术基建、内容质量、合规安全、数据监测**四大板块,形成闭环。建议先从基础配置(LLMs.txt、Schema)和核心内容重构入手,快速验证效果,再逐步深化差异化与本地化优化。
需要我把以上要点整理成一份可直接复制的**30天GEO落地执行清单**(含每日任务、Schema模板、llms.txt示例)吗?
需要我把以上要点整理成一份可直接复制的**30天GEO落地执行清单**(含每日任务、Schema模板、llms.txt示例)吗?
---
**网站 GEO 优化主要指 Generative Engine Optimization(生成式引擎优化),即针对 ChatGPT、Perplexity、Gemini、Google AI Overviews、DeepSeek 等 AI 生成式搜索引擎的内容优化策略。** 其核心目标是让网站内容更容易被 AI 理解、信任并直接引用,从而提升品牌在 AI 答案中的曝光率和可见度(而非传统搜索排名)。
与传统 SEO(侧重关键词排名和链接)不同,GEO 更注重内容被 AI “阅读”和“引用”的能力。以下是从多个关键方面进行优化的实用指南:
### 1. **内容质量与权威性(E-E-A-T)**
- 强调 **Experience(经验)、Expertise(专业性)、Authoritativeness(权威性)、Trustworthiness(可信度)**。
- 提供原创、深入、数据支持的内容,包含真实案例、统计数据、专家引用和可靠来源链接。
- 明确标注作者信息、更新日期(保持内容新鲜度),并展示公司/作者资质。
- **技巧**:用事实、数据和引用增强可信度,让 AI 更愿意采纳。
### 2. **内容结构与可读性(AI-Friendly Structure)**
- **清晰的层级结构**:使用 H2/H3 作为问题式标题(匹配用户自然提问),添加摘要/Quick Answer(顶部 40-80 字直接回答核心问题)。
- **列表、表格、步骤**:便于 AI 提取和总结。
- **对话式写作**:采用自然、直接、问答式的语言,像在回答真实用户问题。
- **实体明确**:明确指出人名、品牌、概念,避免模糊表达,并通过内部/外部链接关联相关实体。
### 3. **技术与结构化数据优化**
- **Schema Markup**:添加 LocalBusiness、FAQ、Article 等结构化数据,帮助 AI 更好解析实体和关系。
- **页面元数据**:优化 title 和 description,让 AI 快速理解页面主题。
- **移动友好 + 加载速度**:AI 和用户都偏好体验好的页面。
- **llms.txt**(如果适用):为 AI 提供文档结构索引。
- 确保内容易抓取,避免重复或低质量页面。
### 4. **用户意图与查询匹配**
- 从 **Prompts(提示词)** 而非单纯关键词出发,研究 AI 常见提问方式(How to、What is、Comparison 等)。
- 创建 FAQ、对比表、清单、案例研究等高意图内容。
- 覆盖长尾、具体问题,增加信息密度(提供全面上下文和例子)。
### 5. **权威信号与外部强化**
- **PR 与外部提及**:增加品牌在权威媒体、Wikipedia 等地方的曝光,提升整体可信度。
- **一致性**:NAP(名称、地址、电话)等实体信息在全网保持一致(尤其本地业务)。
- **社交与多渠道**:通过社交证明权威性,制造热点让 AI 更容易捕捉。
### 6. **监测、迭代与程序化策略**
- 跟踪 AI 引用情况(手动测试 ChatGPT/Perplexity 等,或用专用工具)。
- 定期更新高价值页面,保持内容时效性。
- 考虑程序化 GEO:批量生成针对性强的优化页面(但需确保质量,避免垃圾内容)。
- 结合传统 SEO:GEO 是 SEO 的延伸,两者协同效果更好。
### 实施优先级建议
1. 先从核心页面入手(首页、产品/服务页、博客高流量文章)。
2. 优化现有内容 → 创建新针对性内容。
3. 测试:在不同 AI 工具中搜索相关查询,观察自己的内容是否被引用。
4. 持续性:AI 模型会不断更新,优化是长期过程。
**注意**:GEO 还在快速发展中,核心仍是“写给人类 + 方便 AI 提取”的高质量内容。过度优化或生成低质内容可能适得其反。
如果你的“GEO”指的是 **地理位置优化(Local SEO / Geotargeting)**,请补充说明,我可以提供另一套针对本地搜索、Google 我的商家、NAP 一致性等的优化策略。需要具体案例或某个方面的深入细节吗?
+37
View File
@@ -0,0 +1,37 @@
# 背景描述
深圳市飞点健康管理有限公司的尿常规14项的尿检App产品名称是**尿大夫**,这个产品涵盖android 版本和 ios版本。
这个app属于二类医疗器械独立软件。
# 你的工作目标
帮我编写《工作环境控制程序》,涵盖的内容包括:研发/测试/生产设备的软件和硬件环境控制程序。
**请严格依照我国国家标准,行业标准对二类医疗器械独立软件的研发/测试/生产过程的要求,帮我编写软件和硬件环境控制程序。**
## app开发环境
android版本的app的开发环境:android studio开发工具,基于windows操作系统开发,使用PC机。
ios版本的app开发环境是:XCode开发工具,基于MAC OS操作系统。
## 测试环境
尿大夫android app 基于 国产android手机测试;
尿大夫ios app基于 iphone手机测试;
测试会使用专用的android和iphone手机。
## 生产环境
尿大夫app属于二类医疗器械,是独立软件。其生产环境不牵涉到任何物料的生产。软件开发和测试完成后(验证和确认),通过专用的一台生产电脑,上传到各个app的应用市场。
ios版本的尿大夫app会上传并发布到apple store。
android版本的尿大夫app会上传并发布到应用宝,小米,vivo,oppo等应用市场。
## 云服务器
基于腾讯云的ubuntu云服务器。尿检用户信息会存储在云服务器上。
app用户登录使用手机号码和短信验证码或者密码登录云服务器。
所有的网络传输采用https方式。
云服务器及运行于云服务器上的程序,不属于我公司医疗器械软件的组成部分。
# 其他
你仔细分析我的需求,如果有问题,请问我。你的文档,要求真实符合实际法规要求,不能瞎编。
File diff suppressed because it is too large Load Diff
+55
View File
@@ -0,0 +1,55 @@
测试运行结果
✅ test/ 目录 — 全部通过
Tests: 377 | Failures: 0 | Errors: 0 | Skipped: 0
BUILD SUCCESSFUL in 52s
运行命令:
export JAVA_HOME="C:/Program Files/Java/jdk-17"
./gradlew :app:testAliDebugUnitTest
📊 HTML 报告位置:
D:\svn\android\urologist\app\build\reports\tests\testAliDebugUnitTest\index.html
用浏览器打开该 index.html 即可看到每个测试类的详细结果、耗时、通过/失败状态。
---
⚠️ androidTest/ 目录 — 未运行(无设备)
当前 没有已连接的 Android 设备或模拟器(adb devices 返回空)。
androidTest 必须在真机或模拟器上运行。当你准备好设备后,执行:
📊 HTML 报告位置:
D:\svn\android\urologist\app\build\reports\tests\testAliDebugUnitTest\index.html
用浏览器打开该 index.html 即可看到每个测试类的详细结果、耗时、通过/失败状态。
---
⚠️ androidTest/ 目录 — 未运行(无设备)
当前 没有已连接的 Android 设备或模拟器(adb devices 返回空)。
androidTest 必须在真机或模拟器上运行。当你准备好设备后,执行:
export JAVA_HOME="C:/Program Files/Java/jdk-17"
./gradlew :app:connectedAliDebugAndroidTest
报告位置:
D:\svn\android\urologist\app\build\reports\androidTests\connected\ali\debug\index.html
---
汇总
┌──────────────┬────────┬─────────────┬───────────────────────────────────────────────────────────────┐
│ 套件 │ 用例数 │ 结果 │ 报告路径 │
├──────────────┼────────┼─────────────┼───────────────────────────────────────────────────────────────┤
│ test/ │ 377 │ ✅ 全部通过 │ app/build/reports/tests/testAliDebugUnitTest/index.html │
├──────────────┼────────┼─────────────┼───────────────────────────────────────────────────────────────┤
│ androidTest/ │ 25 │ ⏸️ 待设备 │ app/build/reports/androidTests/connected/ali/debug/index.html │
├──────────────┼────────┼─────────────┼───────────────────────────────────────────────────────────────┤
│ 合计 │ 402 │ │ │
└──────────────┴────────┴─────────────┴───────────────────────────────────────────────────────────────┘
▎ 注意: androidTest 目录里的 25 个用例已编译验证通过,只是需要 Android 设备/模拟器才能执行。在 loginnew 接口返回 token 且 2144934.txt
▎ 数据有效的前提下,预计也能全部通过。
+52
View File
@@ -0,0 +1,52 @@
方案文档已写好,保存在 /home/ubuntu/nanocode/personal-blog/docs/urinecheck-plan.md。
我的理解总结
我已经完整阅读了所有C++核心代码:
核心算法(7步流水线):
预处理 → BGR/HSV/Gray + 高斯滤波
定位块检测 → HSV颜色分割(红/绿/蓝)→ 形态学→找轮廓;备选Canny
候选筛选+配对 → 面积/宽高比/矩形度多级过滤 → Y坐标聚类 → 逐对验证(颜色一致 + RGB距离<180 + 面积比±20%)
清晰度 → Laplacian方差
杂物检测 → 试纸高度≥30px + 候选≤15
规格匹配 → distRatio + areaRatio → 6种规格
色块位置 → 边缘中心 + 50切片插值 → 14个中心点
Python重写范围:
跳过鸿蒙NAPI层(YUV转换、RGBA格式等)
完整保留:PaperRecognizer + ColorReader + PaperConfig + GlobalParams
用Python dataclasses 替代C++ structs,logging 替代鸿蒙日志
待你确认的6个问题(文档第四章节),最关键的是:
只做14联,还是保留6种规格的架构?
answer: 全部支持,所有格式
14项色块是否需要标注检测项目名称?
answer: 是的
是否需要标注图展示?
answer:可以不需要
是否需要数据库存储历史?
answer: 先不实现
请蔡叔叔看下方案,哪里需要调整直接说。
---
只做14联,还是保留6种规格的架构?
answer: 全部支持,所有格式
14项色块是否需要标注检测项目名称?
answer: 是的
是否需要标注图展示?
answer:可以不需要
是否需要数据库存储历史?
answer: 先不实现
+117
View File
@@ -203,3 +203,120 @@ AI 不擅长鸿蒙UI界面性工作。
---
上周的工作:
1、我的主要时间,用于开发 尿大夫官网+CMS内容发布系统,进度50%+。目前的风格是沿用现有官网为主。通过cms实现网站内容全动态。
2、少部分时间用于查阅研发体系资料,5月份会花一段时间,完善性能测试相关的体系资料(这一部分目前是缺失的,包括资料和工具本身。 目前的想法是,通过AI 做 性能测试工具)。
我下周的主要工作:
做完 尿大夫官网+CMS内容发布系统!5.1之后上线,替换现有官网。
小温:上周部署了测试用的AI 客服,我也打了一个android测试包配合他的ai agent测试。能做基本的客服。
下周,让唐莉他们也来用这个ai 客服,探讨一下功能
---
蔡贤明上周的工作:
1. 基本做完 尿大夫官网+CMS内容发布系统的基础版本
蔡贤明下周的主要工作:
1. 发布尿大夫官网,替换现有官网。准备部署在一台 不是尿大夫的管理平台的服务器上,后续在上面在放一个ai agent,方便后续的维护和开发。
2. 继续优化官网的内容:geo ,seo优化。
3. 完善性能测试相关的体系资料(这一部分目前是缺失的,包括资料和工具本身。 目前的想法是,通过AI 做 性能测试工具)
---
温景涛本周完成工作:
1.DeepSeek结果解读切换对接到腾讯云新的TokenHub接口
2.查阅扣子平台文档,继续深入了解平台提供的服务能力与实践方式
3.开发AI智能客服
温景涛下周工作计划:
开发AI智能客服工作后端业务板块
---
蔡贤明上周的工作:
1. 基本做完 尿大夫官网+CMS内容发布系统的基础版本
2. 发布尿大夫官网。部署在niaodaifu.com。
3. 继续优化官网的内容:geo ,seo优化。【基本没有做这个事情,下周做】
4. 完善了几个产品web html页
企业荣誉墙
https://niaodaifu.com/static/honor/index.html
招商加盟
https://niaodaifu.com/static/zsjm/index.html
尿大夫.尿检云
https://niaodaifu.com/static/ndf/index.html
基层医疗.吴试纸
https://niaodaifu.com/static/wupaper/index.html
通焦仪
https://niaodaifu.com/static/tjy/index.html
宠物尿检.嘘嘘邦
https://niaodaifu.com/static/xuxucheck/index.html
5. 完善性能测试相关的体系资料,自己编写工具【基本没有做这个事情,下周做】
蔡贤明下周的主要工作:
1. 基于尿大夫官网+CMS,继续优化运营工具
2. 继续优化官网的内容:geo ,seo优化
3. 完善性能测试相关的体系资料,自己编写工具
---
温景涛上周完成工作:
1.调整前端云服务器部署PHP运行环境,并在生产环境进行代码测试与bug修复
2.调整APP视频教程,压缩视频大小节省云点【压缩原有的教程视频,一个月能省一些钱】
3.开发AI智能客服,查阅扣子平台文档,继续深入了解平台提供的服务能力与实践方式 【上周基本停滞】
温景涛下周工作总结:
1 整理痛风问卷调查与评估需求与功能开发
2.新服务器申请,部署计划等
---
蔡贤明上周的工作:
1. niaodaifu.com官网本身内容的geo和seo优化,遵从AI的建议
2. 完成尿大夫云平台算法代码的改造(其一,32位到64位升级,其二,将云平台之前的PHP和opencv之前的紧耦合调用方式改成HTTP REST API方式,这也是我一直想做的事情)
【因为尿大夫腾讯云服务器到期,服务器需要升级,opencv算法的部分做完了,后续温景涛需要升级 PHP相关代码和架构,适应新服务器架构和算法调用api的对接】。
3. 完善性能测试相关的体系资料,自己编写工具【基本没有做这个事情,下周做】
蔡贤明下周的主要工作:
1. 基于尿大夫官网+CMS,继续优化运营工具【下周开始做】
2. 完善性能测试相关的体系资料,自己编写工具【下周正式开始做】
---
温景涛上周完成工作:
1 痛风问卷调查与评估需求与功能开发
2 升级了一台腾讯云服务器,后续的升级开发基于此服务器
3 启动ACR 及 蛋白之类的单联或2联试纸的识别(新申请一个小程序进行开发和部署)
温景涛下周工作总结:
1 开始ACR 2联试纸的识别,试纸就位后替换成真正的试纸进行食品
---
蔡贤明上周的工作:
1. 基于尿大夫官网+CMS,继续优化运营工具:编写了3个采集工具,可以采集或者批量几乎任何网站的内容。
尝试通过微信批量采集工具,采集了数百篇围绕 尿检等相关的 公众号文章,下周还会继续做这个。
这些文章,我的想法是:通过后续编写的通过AI实现的文章改写工具,定期改写这些文章,然后自动发布。
2. 完善性能测试相关的体系资料,自己编写工具:初步实现了一个性能测试工具,基本可以使用。
下周还需要优化,关于出测试报告这一块的功能;
已经可以测试线上的服务器,但是担心干扰了线上服务器,所以我要把局域网之前没有完全搞好的本地尿大夫的**本地云平台**搞好。有一些小小的问题。
蔡贤明下周的主要工作:
1. 基于尿大夫官网+CMS,继续优化运营工具【采集数据,及 编写 AI 文章改写工具,看看能不能从改写数据库文章,到自动发公众号,在无人干预的情况下】
2. 完善性能测试相关的体系资料,自己编写工具【完善性能工具】
3. 让本地**云服务器**跑起来,能够基于本地服务器,进行性能测试(方便任何人的检查)。
---
温景涛上周完成工作:
1 ACR 2联试纸的识别,试纸就位后替换成真正的试纸
2 申请新小程序
3 支持第三方公众号sdk对接
温景涛下周工作总结:
1 继续完成ACR 2联试纸的识别的小程序
+265
View File
@@ -0,0 +1,265 @@
website-new官网项目的后台管理的内容列表中的文章,对应处于草稿状态的文章,我希望有这样的需求:
1、读取草稿文章的内容,通过大模型改写文章;
2、将改写好的文章,覆盖数据库中的原文章,并将文章的状态从“草稿”改成“发布”;
3、如果你能识别图片内容的话,丢弃无效的图片(比如:包含二维码的图片,包含原作者图像的图片,包含一般性人物头像的图片等),对于有效图片,可以通过我们的AI生图Seedream模型,重新生成类似的图片;
4、将改写好的文章发布公众号文章;
对于以上功能和需求,用户可能发起的方式有:
1、通过技能触发,也就是直接在nanobot里面,告诉你,在网站后台找到某个草稿文章,改写和覆盖,然后发布公众号文章;
2、用户在管理后台的草稿文章列表中,点击某个按钮“改写和发布”,然后通过固定的代码流程实现上述功能;
关于以上我的论述,你理解一下,给出你的想法和建议! 我们先讨论方案,再决定具体实现。
---
Nanobot给LLM的提示词!改写提示词在 `website-new/rewrite/pipeline.py` 里,核心是这个 `SYSTEM_PROMPT`:
```
你是一个专业的医疗健康内容编辑。请将下面的文章改写为适合微信公众号发布的版本。
改写要求:
1. 保持医疗准确性: 不得改变任何医学事实、数据、诊断标准、用药建议
2. 风格口语化: 用亲近自然的语气,像医生朋友在聊天。适当使用emoji(每段不超过1个)
3. 保留结构: 保留原文的章节标题和信息层次,但标题可以重新提炼得更吸引人
4. 精简优化: 去除重复表述,合并相近内容,让文章更紧凑
5. 适合手机阅读: 段落短小(2-3句一段),善用小标题和列表
6. 只输出改写后的 markdown,不要加任何解释说明
输出格式: 纯 markdown 文本,可以包含:
- **粗体** 强调关键信息
- 无序列表 -
- ## 二级标题(如果需要)
- 段间空行分隔
```
**调用参数**:模型 `deepseek-v4-flash`,temperature 0.7,max_tokens 4096。
顺便提一下,pipeline 里也有「志玲模式」——传 `--content-file` 参数可以跳过 LLM 改写,直接用你预改写好的 markdown 去发布。
---
## 你的需求我这样理解
核心流程是一条流水线:
```
草稿文章 → LLM改写 → 图片清洗/重生成 → 覆盖DB+改状态 → 发布公众号
```
两个触发入口:① 跟我聊天触发(Nanobot skill);② 管理后台按钮触发(前后端自动化)。
---
## 我的分析和建议
### 1. 方案①(Nanobot skill)—— 现在就能做,几乎零成本
我本身就是一个 LLM,你告诉我找某篇草稿,我就可以:
- 通过 API/数据库读取文章内容
- 改写正文
- 更新数据库(状态改为"发布")
- 调用 `baoyu-post-to-wechat` 发公众号
**图片处理**是唯一需要额外工具的环节。需要分两层:
| 检测类型 | 技术方案 | 难度 |
|---------|---------|------|
| 二维码 | `pyzbar` 库,准确率很高 | 低 |
| 人物头像/人像 | OpenCV 人脸检测 或 调用视觉模型 | 中 |
| "原作者图像"等语义判断 | 必须用视觉 LLM(如 GPT-4V),纯代码做不到 | 高 |
建议**图片处理分阶段**:先上二维码过滤(简单可靠),人像检测视需求再加。
### 2. 方案②(管理后台按钮)——需要后端支持
这个链路长,涉及:
- **前端**:文章列表加"改写和发布"按钮,点击后调 API,展示进度
- **后端**:新增 API 端点,编排整个流水线(读文章→调 LLM→处理图片→更新 DB→发公众号)
- **异步化**:整条链路耗时可能 30s~2min(LLM + 图片生成),不适合同步 HTTP,建议用后台任务 + 轮询状态
### 3. 能不能复用现有东西?
已有的可以直接用:
- **公众号发布**:`baoyu_optimized.py` 的发布逻辑 + 博客同步
- **Seedream 生图**:API Key 和模型已配好
- **文章 DB 操作**:后端 FastAPI 已有文章 CRUD,直接调 ORM 或 API
跟 `wewrite` skill 的关系:wewrite 流程是「改编→排版→发布」,你这个新需求本质上是同一套流程,只是**起点不同**(CMS 草稿 vs 外部来源)。可以考虑把核心流水线抽象出来共用。
### 4. 我建议的实施顺序
1. **先跑通方案①**(Nanobot 手动触发)——验证整条链路可行,摸清耗时和坑
2. **再补方案②**(后台按钮)——基于方案①的成熟逻辑,封装成后端 API + 前端按钮
3. **图片 AI 判断最后做**——前期先人工判断哪些图要丢,稳定后再接入视觉模型
---
## 想先确认几个问题
- 改写风格有偏好吗?比如保持原文结构还是自由发挥?面向什么受众?
- 图片重生成:是希望 Seedream「根据原图描述生成类似的」,还是「根据文章上下文全新配图」?
- 方案①要不要我现在就试一篇文章跑通看看效果?
-
---
好,我仔细看了现有代码,现在给你分析。
---
## 现有两个技能的职责
| | wewrite | baoyu-post-to-wechat |
|---|---|---|
| **输入** | 外部来源内容 | Markdown/HTML 文件 |
| **职责** | 改编→排版→发布 | 文件→公众号草稿 + 博客同步 |
| **博客同步** | 无 | **有**(blog_sync.py,同步到 129.211.173.87 那个博客) |
两者都不适合直接套用。新流程的独特性在于:
- **输入是 CMS 数据库里的草稿文章**(不是文件,不是外部来源)
- **需要回写 CMS 数据库**(改状态)
- **不需要博客同步**(那个是另一个项目)
---
## 我的建议:新建一个独立 skill
推荐方案:**新建 `cms-rewrite-publish`**,不修改现有两个 skill。
理由很简单:
**复用而不修改**——`baoyu-post-to-wechat` 里的 `WeChatPublisher` 类是干净的公众号 API 封装(获取 token、上传图片、创建草稿),新 skill 直接 `import` 它来用,但**不调用** `publish_markdown_with_images()`(因为它绑定了博客同步)。
新 skill 的流程:
```
CMS草稿 → 我(LLM)改写 → WeChatPublisher.create_draft() → SQLite改状态
```
具体来说:
```
1. 通过 API 或 SQLite 找到草稿文章(按标题 / 按栏目最新)
2. 我读取内容,直接改写(我就是 LLM,不需要调外部 API)
3. 调用 WeChatPublisher.create_draft(title, html, author, digest, cover)
4. SQLite UPDATE articles SET status='published' WHERE id=?
5. (图片处理后期再加)
```
关键点:
- **博客同步被自然绕过**——因为我们直接调 `create_draft()`,不走 `publish_markdown_with_images()` 那条带 blog_sync 的路径
- **`baoyu-post-to-wechat` 完全不动**——它继续服务原有的「文件→发布」场景
- **新 skill 轻量**——主要是编排逻辑 + CMS 操作,公众号能力都复用
---
## 跟你的触发方式的对应
两种触发方式都能覆盖:
| 触发方式 | 实现 |
|---------|------|
| 跟我聊天说「改写 xxx 标题的草稿」 | 新 skill 的 SKILL.md 写清楚触发词,我按流程执行 |
| 后台按钮(方案②后续) | 后端新增 API,内部调用同样的 Python 逻辑 |
---
## 如果同意,下一步我做什么?
1. 检查一下 `baoyu_optimized.py` 里 `create_draft()` 的签名,确认直接调用没问题
2. 创建新 skill 目录和 SKILL.md
3. 写一个轻量的 Python 脚本做 CMS 侧操作(查文章、更新状态)
4. 先拿一篇真实草稿跑通全流程验证
你觉得这个方向可以吗?
---
基于你写的完整设计文档已写入 `/home/ubuntu/website-new/docs/CMS_REWRITE_PUBLISH.md`
你逐步执行你说的4点:
1. 检查一下 `baoyu_optimized.py` 里 `create_draft()` 的签名,确认直接调用没问题
2. 创建新 skill 目录和 SKILL.md
3. 写一个轻量的 Python 脚本做 CMS 侧操作(查文章、更新状态)
4. 先拿一篇真实草稿跑通全流程验证
另外:关于第3点, Python 脚本的一些事情。这个技能是跟网站项目紧耦合的,我建议相关的Python代码,放到网站项目/mnt/datadisk0/www/new-media-platform/website-new的某个目录下比较好。
---
## pinkbear提取sogou.weixin的逻辑!!! 非常好
你现在的提取真实 URL 逻辑,是不是跟/home/ubuntu/new-media-platform/website-new/backend/app/routers 一样?
已修复完成,总结一下改动:
**问题原因**:搜狗 `link?url=` 页面返回的是反爬页面(仅 822 字节),包含一段 JS 用 `url += '...'` 拼接出真实的 `mp.weixin.qq.com/s?` 链接。之前直接把这个反爬页面当文章内容解析,导致所有文章内容为空(标题全是"搜狗搜索")。
**修复内容**(`api/lib/wechat-crawler.ts`):
1. **新增 `extractSogouRedirectUrl()`** — 从反爬页 JS 中提取拼接的真实微信文章 URL
2. **新增 `isSogouAntiSpiderPage()`** — 检测是否为搜狗反爬页面(特征:长度 < 2000 + `setTimeout` + `url +=` + `mp.weixin.qq.c`)
3. **修改 `fetchWechatArticle()`** — 检测到反爬页面后:
- 提取真实 URL → 延迟 1.5s → 带微信 UA 直接请求 `mp.weixin.qq.com`
- 将获取到的正文 HTML 传给 `extractWechatContent` 正常解析
**清理**:
- 已从数据库删除 94 条空内容微信文章
- 服务已重建并重启运行中
**不一样。两者策略完全不同:**
**pink-app(`wechat-crawler.ts`)** — 纯 HTTP 方案(axios)
- 请求搜狗链接 → 拿到反爬 HTML → 用正则从 `setTimeout` 内的 JS 代码中提取出 `url += '...'` 拼接后的真实 `mp.weixin.qq.com/s?` URL → 用那个 URL 重新请求文章内容
- 不依赖浏览器,纯文本解析
**new-media-platform(`wechat_crawl.py`)** — Playwright 浏览器方案
- 直接启动 Playwright + Stealth 浏览器 → 先访问搜狗搜索页建立会话 → 然后 `page.goto(url)` 加载页面
- JS 由浏览器自动执行,不需要手动提取 URL
- 反爬页面的 `setTimeout` + `window.location.replace(url)` 在浏览器中会自动跳转到真实微信 URL
**简而言之**:pink-app 是"文本提取型"——从代码里抠出真实 URL 再请求;新平台是"浏览器渲染型"——让 Playwright 自己处理 JS 跳转。
如果新平台也想像 pink-app 这样纯 HTTP 请求绕过反爬,可以复用 pink-app 的 `extractSogouRedirectUrl` 逻辑,改成 Python 版本。不过 Playwright 方案稳定性更好,代价是资源消耗大。
---
蔡叔叔,查过了:
---
**微信公众号 API 只有两步流程:**
1. `draft/add` → 创建草稿(我们现在做的)
2. `freepublish/submit` → 将草稿提交发布
**没有一步直达的接口**,必须经过草稿。
---
所以目前保留在草稿箱是合理的。如果要全自动,加上第二步 `freepublish/submit` 就行,一行代码的事。但我建议**不自动发布**,原因跟你说的完全一致:
- 改写质量不可 100% 保证,人工过一眼更稳
- 封面图、摘要这些 AI 生成的东西有时需要微调
- 万一 DeepSeek 抽风输出敏感内容,还能拦住
现在每天早 8 点、晚 8 点自动生成 2 篇进草稿箱,操作人员上班看一眼点发布就行,效率和安全感都有。
---