GitHub: Keibott, token=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。服务器git协议被墙，但 api.github.com 可达！用 REST API (PUT /repos/{owner}/{repo}/contents/{path}) 推送——base64编码 + Authorization header。不要用git push。
§
双服务器架构（2026-06-24统一后）:
• 北京 ins-jrstx6f5 (120.53.228.229): 全部服务。we-mp-rss登录: gdcjgk/admin888。上海已停用。
§
用户新项目方向：基于 we-mp-rss 构建 广东春季高考信息网 的选题库 SaaS 产品。三个核心模块：1) 选题日报（每天9点推送，含推荐选题+角度拆解+标题生成）；2) 热点预警（多号同题实时推送）；3) 分发工具箱（同一选题自动生成公众号长文/微信群话术/朋友圈文案/小红书拆条四种版本）。春季高考时间线：11月报名、12-1月考前冲刺、1月中考试、2-3月出分、4-5月志愿填报、全年证书考试。
§
企微: corpid=wwbcfb7cbc0f8912d7, corpsecret=2ad1mn5mqxMuopQxWpc0QCZG0EEfAlu9pr7DIA66p4s。TuKeXin userid=TuKeXin。API限制: ①doc URL(w3_/d3_)≠API docid→301085, doc API只读自建文档; ②微盘API只操作自建空间,用户空间→640008; ③无list-spaces; ④acl_add仅auth=1/7。结论:API无法读用户已有文档,需浏览器模拟(Cookie)或用户手动搬迁。企微回调L348收text/event/link。DM不传文件/图片。markdown限4096B。
§
gdcjgk.net 是 FastAdmin CMS (ThinkPHP 5)，CMS 发布 API: POST /addons/cms/api/index，参数 channel_id/title/content/description。API key 验证已在 Api.php 中注释掉。xss_clean 已从第51行移除。发布用 channel_id（叶子栏目），常见：3+证书报考227、依学考报考294、辅导培训176、广东政策198。
§
文章流程：写稿→存草稿(POST API status=draft, 缩略图~/.hermes/data/image_library.json 4179张)→审核通知推送 TuKeXin+CaoXiaoFen DM→后台改normal发布。草稿对外404。channel对照: skills/devops/fastadmin-publish/references/gdcjgk-channels.md。⚠️ channel_id=1是link类型不可用，226=填报相关 227=报考相关。
§
gdcjgk.net 每日≤5篇AI发布。质量门槛：AI打分(信息增量0-5+时效性0-3+可改写性0-2)≥7分入选，不足宁缺毋滥。800-1000字原创，发布前自检标题/数据出处/栏目匹配。
§
缩略图库 ~/.hermes/data/image_library.json(4179张)。gaozhigaokao.net：用户第二个站，专注高职高考/3+证书（中职生赛道），是春季高考子集。CMS系统待确认，目前未接入自动化发布。
§
用户有小程序"云上春考"，正在申请微信公众号认证。公众号审核不允许用"春考"二字。需要起新名——优先品牌统一（借"云上"或"gdcjgk"），考虑"云上高职""云上中职升学"等方向。
§
知识库位于 ~/.hermes/知识库/，含两份基础资料：
1) 院校专业（名词解释）内部资料不对外26.06.17.pdf — 23页，无密码。53个广东省高校专业/学校评级名词（示范专业→高水平专业群全时间线、双高计划、创新强校A/B/C类、冲补强、双万计划、1+X证书等），附记忆口诀+避坑指南。写文章时的术语准绳。
2) 广东普高生、中职生（高考）信息表.xlsx — CDFV2加密，密码a123456a。普高生vs中职生高考路径对照：夏季高考/依学考/3+证书的考试时间、科目、分数、院校类型、报考区域限制、专业目录类型。
§
企微自建应用 API 权限实验结论：corpid=wwbcfb7cbc0f8912d7, corpsecret已存session。文档API(wedoc)和微盘API(wedrive)均可调通，但存在硬隔离：1) 应用只能读自己创建的文档(API docid长串)，URL里的w3_XXX/d3_XXX不是API docid，两套ID不互通；2) 微盘API只能访问应用自己创建的空间(s.wwbcfb7cbc0f8912d7.xxx格式)，用户自建的共享空间返回640008 permission deny；3) 应用创建的空间(space_acl_add加auth=7)用户UI侧看不到/无法协作；4) 文档API可创建文档→加成员编辑→读回内容，但同事看不到API创建的文档。用户结论：微盘方案不适合团队协作场景，已删除所有测试空间和文档。当前唯一可行的是企微聊天发文件消息或浏览器Cookie方案。
§
3+证书本科录取计分：5:4:1（文化50%+校测40%+证书折算10%，满分450分），不是50:50。来源：粤招办2025-10-10通知(post_4782227)。本科不能征集志愿。中职专业对口为硬性要求。
§
省考试院(eea.gd.gov.cn)年度政策通知是3+证书最权威来源。搜索技巧：用正式文件全称搜索（如"关于做好广东省2026年普通高校招收中等职业学校毕业生统一考试招生工作的通知"），简称反而搜不到。政策URL模式：/ptgk/content/post_NNNNNNN.html。答问知识库只覆盖静态概念，不覆盖年度可变政策。
§
广东省教育考试院(eea.gd.gov.cn)是3+证书政策最权威来源，搜索"中等职业学校毕业生统一考试招生"可找到年度政策原文。2026年政策(粤招办普〔2025〕44号, post_4782227)，2026志愿填报通知(粤招办普〔2026〕8号, post_4863975)。关键事实：3+证书本科录取=文化50%+校测40%+证书折算10%(满分450)，本科设1个院校专业组志愿，本科不征集志愿，中职专业须对口。这些细节在答问知识库里找不到，必须查eea.gd.gov.cn。
§
事实库路径：~/.hermes/知识库/事实库.md。写任何政策/考试相关文章前必须加载 fact-check skill，逐条验证。核心规则：搜索到事实→立即写回事实库→再汇报给用户，不能汇报后才写。官方验证来源：广东省教育考试院 eea.gd.gov.cn（政策文件）、广东省教育厅答问知识库 edu.gd.gov.cn/hdjlpt/dwzsk（概念定义）。已验证的2026年官方政策文件：粤招办普〔2025〕44号（招生通知）、粤招办普〔2026〕8号（志愿填报通知）。
§
gdcjgk-每日发布 cron(533d92e64b59) deliver已配 wecom_callback:TuKeXin,wecom_callback:CaoXiaoFen。send_message对wecom_callback DM投递格式有问题(需home channel)，cron deliver不受影响。后续有审核通知需确认曹小芬侧收到。
§
小红书选题流水线 v3：cron c27628909af0 每天09:00运行 ~/project/scripts/daily_xhs_topics.py。每次只生成1个选题（质量>数量），产出保存到 ~/.hermes/articles/YYYY-MM-DD/。内页数量由选题内容决定（不强制2页）。内含自评系统（score_topic函数），<7分自动换兜底。支持8种区块类型自由混排（引言/数据卡/分析/行动/对比条/表格/步骤/清单）。品牌素材在 ~/project/brand/。
§
小红书账号：广东高职高考信息网（gaozhigaokao），user_id=65066df8000000001603b1d6，绑定手机13326425688。这是用户第二个站（高职高考/3+证书赛道），不是gdcjgk（春季高考）。Cookie: a1=19cffe1b5b2hokiz8xe47nlruk1bizhv8kzm7csnk50000272464, webId=527a6a761041a7af2c73e1e441805d34。web_session 几小时内过期，需用户浏览器刷新。
§
小红书 API 签名关键发现：xhs 包内置 Python sign 算法(help.py)已过时——生成 x-s 仅 48 字节，浏览器新版签名 372 字节，x-s-common 差异更大（259 vs 2203 字节）。浏览器 x-s 以 "XYS_" 为前缀。v1 搜索接口用旧签名返回 300011 而非 406，说明签名被部分接受但版本不匹配。本机无法修（Playwright/Docker/浏览器全被墙），需用户本地运行签名代理。
§
DeepSeek API Key 配置：① ~/project/.env（DEEPSEEK_API_KEY=sk-...，daily_xhs_topics.py 读取）；② ~/.hermes/config.yaml。⚠️ 当前 .env 中是占位符 *** 需用户替换为真实 Key。阿里云百炼 CLI (bl 1.4.2) 已安装，DashScope API Key 已配置（sk-ws-...），可用于 Qwen-VL 视觉分析。无需额外配置可直接用 `bl vision analyze --image <路径>` 看图。
§
腾讯云 TAT API 凭证：SecretId=AKIDCPsvqtndHoBMOHzWmxyocIm5B8tTqGbl, SecretKey=3ucIubBmQ4Zs1QkpyHROKSTHtIVVIsHj。Lighthouse 实例 ID: lhins-5ertfkpu，区域 ap-beijing。可通过 TAT API 远程执行命令（tat.tencentcloudapi.com, RunCommand + DescribeInvocationTasks）。凭证获取路径：腾讯云控制台→访问管理→API密钥管理。跨服务器部署时优先用 TAT 而非让用户手动操作。
§
gdcjgk.net DNS 已于 2026-07-10 从 Cloudflare 迁回阿里云云解析（NS: dns17.hichina.com, dns18.hichina.com）。主站 gdcjgk.net/www → 47.120.3.199（阿里云 ECS），rss/callback/bot/files → 120.53.228.229（本机 Lighthouse）。Caddy (:80) 反代到本地端口。cloudflared tunnel (Docker) 仍在运行但 DNS 不再指向它——外部不可达，待停用。
§
用户决定停用上海服务器(ins-5mj1p2zt)，将所有服务整合到北京(ins-jrstx6f5)。we-mp-rss需要迁移到北京。上海project目录已清空，源码需重新部署。
§
行为规则：用户反复问同一个事实性问题（如"跑在哪台服务器"）时，你的回答很可能基于过期记忆。不要重复给同样答案——立即用 hostname、curl metadata、ifconfig 等现场命令核实，再回答。
§
rss.gdcjgk.net 登录: 用户名 gdcjgk, 密码 admin888（不是 gdcjgk）
§
知识库已在 ~/.hermes/知识库/（7文件），运营数据在 ~/.hermes/运营数据/。迁移临时目录 /home/ubuntu/hermes-migration/ 已清理。
§
小红书每日选题 pipeline 已部署：cron c27628909af0 每天09:00运行 ~/project/scripts/daily_xhs_topics.py → DeepSeek AI生成3个选题+文案 → Pillow合成品牌封面图（底板 ~/project/brand/小红书封面.jpeg + 优设标题黑字体）→ 产出保存到 ~/.hermes/articles/YYYY-MM-DD/。封面合成：白色主标题+橙色强调数字+深绿底+插画小人，Qwen-VL验证通过。待用户更新 .env 中 DEEPSEEK_API_KEY 后 AI 生成才能正常工作（当前占位符，走模板兜底）。
§
小红书内容产出：封面和内页是独立模块，用户明确说"不要碰封面"时只改内页。内页迭代完成后需自评，用numpy像素扫描做5维评分（橙色锚点、绿色着色、密度、品牌色带、洞察框），<10分继续迭代直到满分。设计完成≠内容完成——内容需另评数据具体性/可操作性/独特洞察/可信度/信息密度。
§
用户内容生产偏好（2026-06-25确立）:
1. 质量>数量: 每次只跑1个选题，不要3个。选题+内页自评达标(≥7/10)才输出
2. 反模板: 内容决定结构，不是结构套内容。内页页数、区块类型应由选题性质决定，不存在固定编排公式
3. 数据诚实: 招生CSV数据只适用于分数/择校/证书类选题。故事/经验/备考类选题没有对应数据源时，坦诚告知而非强行注入不相关数据
4. 内容>视觉: 先解决内容充实度（具体数据、独特洞察、可操作性），再优化视觉呈现
5. 自我迭代: 每次跑完自评+报告评分。用户会追问"你对自己的评价是什么？"——要准备好诚实回答
6. 提示词约束: "宁缺毋滥" "不强求页数" "根据选题性质选择适用数据源"
§
用户反感重复推送噪音到企微群。fetch_and_push.py 已加去重逻辑（pushed_articles.json 记录已推送ID，只推新文章）。任何群推送机制必须带去重——同一批文章不能多次推送。用户发现重复推送会直接质问"为什么一直重复在群里推送一样的更新消息"。
§
七牛云 API 密钥: sk-af1...36c8，base_url https://api.qnaigc.com/v1。provider: qiniu (providers.qiniu)。65个LLM模型 + Kling生图(kling-v1/v1-5/v2, 异步task轮询~60s)。image_gen已配为qiniu+kling-v2，插件 ~/.hermes/plugins/image_gen/qiniu/。LLM默认模型 deepseek-v4-pro。
§
小红书 pipeline 运行必须用 `source .env` 加载 DEEPSEEK_API_KEY，不能用 `export KEY=***...` 拼接——shell 在中文引号和特殊字符处解析错误（syntax error near unexpected token）。正确方式：`cd ~/project && set -a && source .env && set +a && ~/project/we-mp-rss-main/venv/bin/python3 scripts/daily_xhs_topics.py`
§
小红书内页排版 v8 方案（2026-06-26 最终版）：封面用 Pillow，内页用 HTML/CSS + Playwright Chromium 截图。底板（内页.png）作 CSS background-image，不是渲染后合成。文泉驿正黑 Regular 太细，正文字号≥28px 且必须 bold。每页一个视觉焦点（172px hero 数字），橙色只标记核心信息。多页渲染：Playwright 一次截 4968×1660 横排图，PIL 切分。WeasyPrint 和 wkhtmltoimage 中文有 bug 不能用。文件大小 1.4-1.6MB（底板 base64 占空间）。
§
小红书内页渲染方案（2026-06-26最终版）：HTML/CSS → Playwright Chromium截图。字体用Noto Sans CJK SC Bold（/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc）+ 优设标题黑。底板内页.png做CSS background-image(base64)，内容浮于纸上。字号体系：Hero 172px / H1 54px / H2 32px / Body 28px bold。色彩规则：橙色仅标记每页最核心的1-2个元素。依赖：fonts-noto-cjk, playwright(chromium-1187已缓存)。技能：xhs-html-renderer。
§
WeasyPrint和wkhtmltoimage在腾讯云Lighthouse上都有中文渲染bug（文字截断或不显示），不可用于中文信息图渲染。Playwright+Chromium是唯一可靠方案。
§
小红书图片质量标准（2026-06-26确立）:
1. 每次生成封面+内页后必须用 score_xhs_image.py 做5维量化评分（元素完整性/排版密度/对齐精度/色彩节奏/无重叠），满分100
2. 迭代到平均≥90分才可交付。不达标自动修复重生成
3. 评分脚本: ~/.hermes/scripts/score_xhs_image.py（封面/内页区分评分）
4. 修复脚本: ~/project/scripts/daily_xhs_topics.py（溢出自动分页+表格动态列宽+橙色锚点）
§
小红书每日产出目录结构：~/.hermes/articles/YYYY-MM-DD/选题N-简短标题/，每选题独立文件夹，内含 cover.png、inner-01.png~NN.png、小红书文案.md。总览 README.md 在日期根。daily_xhs_topics.py 的 save_topics() 函数已按此结构实现。
§
文件存储方案（2026-06-26简化后）：所有文件统一在 ~/.hermes/ 下，无共享文件夹/文件浏览器/同步中间层。
- 知识库: ~/.hermes/知识库/（7个文件：事实库.md、3+证书CSV 9412条、依学考CSV、信息表.xlsx、自主招生.pdf、专业目录.pdf、院校名词解释.pdf）
- 运营数据: ~/.hermes/运营数据/（小红书笔记汇总.xlsx）
- 文章产出: ~/.hermes/articles/YYYY-MM-DD/
- 图片库: ~/.hermes/data/image_library.json（4179张缩略图）
旧机制（file-browser.py:8088 + sync_shared.sh + /root/.hermes/共享数据/）已于迁移完成后拆除。团队成员SSH直连服务器访问文件。
§
腾讯云 Lighthouse 控制台文件管理器不支持预览 .md 文件。所有产出的 .md 文章必须同时生成 .html 版本供控制台预览。转换脚本：~/.hermes/scripts/md2html.py（使用 Python markdown 库 + gdcjgk 品牌样式）。以后每次写完 .md 文章后立即运行此脚本生成 .html。
§
gdcjgk.net CMS admin login broken: xss_clean() removed from Api.php line 51, but AdminLog.php lines 83+87 still call it → login returns 500 even with correct credentials. Session NOT established. Workaround: ask user for browser PHPSESSID + server_name_session cookies. Fix: edit /www/wwwroot/gdcjgk.net/application/admin/model/AdminLog.php, replace xss_clean() calls. Image hosting: cp file to ~/.hermes/ → accessible at https://files.gdcjgk.net/filename (Python http.server:8088 via cloudflared).
§
gaozhigaokao.net 和 gdcjgk.net 共用 FastAdmin 后台，入口 gaozhigaokao.net/rCIwxpQnNh.php。gdcjgk.net API 被 Cloudflare 拦机房 IP（403），gaozhigaokao.net API 要密钥→服务器端无法调 API 发稿。公网文件用 rss.gdcjgk.net/static/（可靠），不用 files.gdcjgk.net（Cloudflare 403）。发稿流程：生成 HTML → 放 rss.gdcjgk.net/static/ → 用户手动粘贴。
§
gdcjgk.net CMS 后台文章排版规范（2026-07-01 曹小芬确认）：
- 全文靠左、两端对齐、2倍行距、微软雅黑、16px、黑色
- 标题：靠左、空两个字（text-indent:2em）、加粗
- 段落：每段前空两个字（text-indent:2em）
- HTML 实现：body级 style="text-align:justify;line-height:2;font-family:'Microsoft YaHei',sans-serif;font-size:16px;color:#000"，h2 加 font-weight:bold + text-indent:2em，p 加 text-indent:2em
- 发布前用此规范生成 .html 文件，再粘贴到后台编辑器
§
文章分类规则（2026-07-01 曹小芬确认）：\n- 语文/数学/英语单科备考技巧类文章 → 复习资料 > {科目} > 备考经验\n  - 语文备考经验: channel_id=216\n  - 数学备考经验: channel_id=219\n  - 英语备考经验: channel_id=222\n- 语文/数学/英语资料分享类 → 复习资料 > {科目} > 资料分享 (215/218/221)\n- 考试政策、通知、考试历 → 政策信息 > 广东政策 (198)\n- 不要再放到考前辅导 > 辅导培训 (176)