Rankup 3.0

SkillWeb & browsing

Master control Skill for building a website from zero to one and for long-term growth. Use it to create new websites, SaaS products, tool sites, or content sites; plan or initialize a TanStack Start Monorepo; deploy full-stack applications using Cloudflare Workers, D1, and R2; integrate payments; an

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Rankup 3.0 skill

What this skill tells your AI

The instructions your AI receives, as published by yan-labs/yan-skills in rankup/SKILL.md and read by ahel’s review.

给独立开发者用:做产品,也做关键词流量站、AI 工具、桌面客户端上架商店、付费订阅。 共同点是靠 SEO + GEO 拿免费曝光导到自己的平台;市场是全球,任何语种任何国家,有流量就做。 本文件只做两件事:把一句话落到七段生命周期的哪一段,以及每段的硬规则。怎么干活的纪律在 references/discipline.md

一句话落到哪一段

用户不会说「跑一下 seo-audit.mjs」,他会说下面这些话。命中就照入口走,不要自己现编步骤。

用户会说的话入口
「看下这批数据有没有能做的关键词」「找几个关键词」「挖点需求」「最近有什么能做的」1playbooks/research.md(P0 分流 → 词根调研)
「调研一下这个词」「调研一下这关键词」「调研的关键词」「这个词能不能做站」「这词难不难」「帮我扩词」1research.md P2 词根调研:任何词都是词根,先直接搜再扩树(旧 P3 已并入 P2,不再有单独的扩词流水线)
「找个方向」「这个方向能不能做」「值不值得做」「选品」「有什么能做的」「帮我看看这个想法」1playbooks/selection.md:先过七道选品闸门判"该不该做"(硬约束/频次/痛点/付费信号/护城河/获客可行性,几乎零配额),过闸的候选才把主词交给 research.md P2 花配额查清楚——不要跳过闸门直接进 P2
「谁在赚钱」「反查这个站」「竞品最近在做什么」「帖子说月入 X 是真的吗」1research.md P4 + demand-sources.md 第十节
「XX 和 YY 哪个更火」「今天美国/日本在搜什么」「哪个国家有机会」1–2trends.mdscripts/gt.py
「有什么游戏站能做」「跑一下小游戏监测」「游戏关键词怎么找」1game-sites.md:Rankup 总控发现、探索、研究和是否值得做的判断,内部按需调用 game-opportunity
「小游戏机会每日采集」1game-sites.md 每日采集:读项目参数,采集、全池轻筛、写当天交接
「小游戏机会每日决策」1–2game-sites.md 每日决策:读当天交接,选深查名单、验证、判读并维护观察池
「这个方向做不做」「做哪个语种」「要不要上多语言」「做成工具还是内容站」2lifecycle.md 段 2
「我们做个网站吧」「新建个站」「想做个工具站」「帮我搭起来」2→3先过段 2 立项定位,再段 3 初始化;手上没有词树先回段 1,不许跳过
「一步步来」「我们开始执行这个项目的计划」checkrankup check 定位当前段与第一个没过的闸,然后按 checklists.md 逐环节推进,每过一闸记 checks.md;不要跳过 check 直接猜段
「做个功能吧」「加个 X 功能」「把这个做出来」「实现一下这个」3红线先行:任何 UI 一律用脚手架自带的 shadcn 组件库components/ui/),缺的 shadcn add 或装同生态的现成组件,禁止手写下拉框 / 弹窗 / 日期选择 / 表格分页 / Toast;然后按段 3 硬规则与 checklists.md 段 3 做,做完段 4 全套体检
开发时挂着当规范:「按 rankup 规范来」「这个页面这样写行不行」「这块要不要 SSR」3–4本文段 3、段 4 硬规则 + checklists.md 对应段
「我们做个内页吧」「把这个关键词做成内页」「关键词没问题了,做成内页」4一个关键词对应一个内页:目标词登记、TDK、独立 OG 含图、密度、无占位、体检全套;页面上的控件同样只准来自组件库(红线,见 discipline.md 十六);lifecycle.md 段 4「新增内页 / 新模板的随手清单」逐条带上,不是等段 4 集中体检才补lifecycle.md 段 4 + checklists.md 段 4
「看一下 SEO 有没有问题」「看一下 GEO 有没有问题」「GEO/SEO 有没有问题」4段 4 体检:seo-audit.mjsis-agentic.mjsaitdk-opencli.shseo-webcafe.mjs audit、哥飞 AI;分组见 playbooks/site-review.md A / C / E 组
「能不能上线了」「上线前还差什么」「TDK」「关键词密度」「标题描述怎么写」4checklists.md 段 4 + seo-box.md
「怎么被 AI 引用」「llms.txt」「对 AI 代理友好吗」「AEO/GEO」4seo-growth.md 三-B
「AI 会不会推荐我们」「GEO 反推」「试试 AI 搜这个词会推荐谁」4seo-growth.md 三-B GEO 反推测试
「帮我生成 logo / 配图 / 封面 / 海报」「要张 og 图」「画个吉祥物」3–4/imagegen:图片必须真实生成,不允许占位图
「做个好看的页面」「有没有什么好的设计参考」「Hero 怎么设计」「找个组件参考」「landing page 怎么排」「有什么动画效果」「页面设计灵感」3先浏览 design-references.md 收录站的相关分类,选 2–3 个案例参考后再实现;基础控件仍走 shadcn 组件库红线
「写一下这页的文案」「这稿子 AI 味太重」「帮我改稿」「语言结构理顺一点」「怎么写才会被 AI 引用」4中文:/write(先确认它的五个附属 Skill 都在,缺的用 find-skills 装齐;装不上才退到 /human-writing 起稿 → /shuorenhua 去 AI 味,见 skill-ecosystem.md);内容形状按 /ai-seo 的 content-patterns;JSON-LD 只取 /seo-geo 的模板
「文案怎么写才有人点」「定价页怎么排」「用户为什么不买」「还有什么渠道能推」7/marketing-psychology(锚定、社会认同、损失厌恶等用在页面与定价上)+ /marketing-ideas(渠道清单);判据仍以 conversion.md 为准
「站慢不慢」「跑个性能」「Core Web Vitals」4seo-box.md 一,scripts/pagespeed.mjs collect --strategy bothplan 只打印链接不采数,仅兜底)
「这个域名能不能用」「域名前世」「域名黑历史」5lifecycle.md 段 5 黑历史闸门 + seo-webcafe.md history
「域名买完了」「帮我绑域名」「这个域名绑一下」5cloudflare-stack.md §8.5「域名绑定到 Workers(全 API,零界面操作)」:添加 zone → 绑 Workers 自定义域名 → 设 SITE_URL → 告知 NS → 等激活 → 放开索引
「数据检测平台都接入了吗」「GSC 接了没」「提交 sitemap」「怎么一直不收录」5search-platforms.mdanalytics-platforms.md
「把 Ahrefs 的检验结果都修了」「全站内链失效」「重定向链」5→4scripts/ahrefs-site-audit.mjs 取清单,scripts/ahrefs-issues-recheck.mjs <导出的issues.json> 线上复核哪些已经不存在、哪些仍存在、哪些需要浏览器或 PSI 判(报告常滞后于最近部署,别假设报告永远反映当前状态),修完按段 4 全套重跑
「帮我搞点外链」「去哪发外链」「竞品的外链哪来的」「这些外链有没有毒」6backlink Skill + webcafe-topics.md
「发个 Product Hunt」「上架发布平台」6product-launch.md
「访客不注册」「没人付费」「定价怎么定」「接 PayPal」「AdSense 被拒」7monetization.mdconversion.md
「流量掉了」「排名没了」「是不是被 K 了」7webcafe-experiences.md 十七~十九
「现在该做什么」「到哪一步了」「本轮还差什么」check本文 rankup checksite-review.md
「review 一下我的站」「帮我看看这个站有什么问题」「查漏补缺」「这项目脱轨了」review本文 rankup reviewsite-review.md
「我想让流量涨一点」「今天弄下 SEO」「优化一下我的网站」checkrankup check 定位第一个没过闸的段;默认打磨转化链路,不重构(zero-to-one.md
「把这个老项目接进来」「rankup init」init本文 rankup initproject-memory.md
「群里怎么说的」「哥飞说过什么」「论坛里搜一下」经验webcafe-forum.mdscripts/webcafe-forum.mjs chat-search 拿原文,不问 ask
「我看到一个帖子分享 SEO 的东西,你把这东西记下来更新到源码里」「把这个经验写进 rankup」维护维护 Skill 本身:按 experiences/INDEX.md 收录规则与 evolution.md 晋升门写进对应的现有文件,不新建文件;见文末「经验回流」
「抓一下后台数据」「导出报表」「数据面板」「Semrush 能查这个吗」取数discipline.md 六 + provider-capabilities.md:有脚本先跑,没有才加载 backlink
说的事这张表没有capability-map.mdskill-ecosystem.md/skillsmp → 最后才按 integrations.md 用 find-skills;不要现写等价实现
本文点名的任何兄弟 Skill 本机没装加载 find-skills 搜索并安装,装完再继续;不跳过、不现写替代。每台机器装的不一样,文档只保证「该用什么」(skill-ecosystem.md「缺 Skill 的处置」)

越模糊越不要盲跑全套:有明确对象就先跑最便宜的那个脚本;只有方向没对象就先 rankup check;连站都没有只问一个问题(有没有想好的词),不要连问三个。

七段生命周期

旧的 12 阶段编号与七段的映射表在 lifecycle.md 顶部;项目里旧 checks.md 按它对照。每段四块:触发 / 入口 / 硬规则 / 闸门。不写操作步骤。

1 调研

  • 触发:给了一批数据、一个词、一个帖子、一个域名,问「能不能做」;或者只有一个模糊方向,问「该不该做」「值不值得做」——后者先进 selection.md,不要直接进 research.md
  • 入口:候选方向先过 playbooks/selection.md(七道选品闸门:硬约束/频次/痛点/付费信号/护城河/获客可行性/量化验证,前六道几乎零配额,判"该不该做");过闸的候选,或用户已经给了一个具体词/域名,再进 playbooks/research.md(P0 只看输入分流:什么都没有 → P1;一个词 → P2 词根调研;一个域名 → P4,判"怎么把它查清楚");判读 demand-discovery.md;意图核验在 lifecycle.md 段 1 · 1.2;验收单 research-checklist.md(不是入口)。常用脚本:scripts/demand/suggest.mjs(三引擎下拉联想)、scripts/seo-webcafe.mjs kd(默认经 OpenCLI 驱动已登录 Chrome 跑登录/VIP 档,游客 10/日只在 OpenCLI 不可用或显式 --guest 时出现,是降级不是默认)、backlink/scripts/semrush-keyword.mjs;面板取证 scripts/rankup-cli.mjsnpx @yan-labs/rankup audit similarweb);selection.md 自己的两个 脚本——scripts/select/leading-indicator.mjs(候选生成器,扫 ads/appstore/gplay/stripe 信号源产出候选) 与 scripts/select/gate-runner.mjs(七道闸门判定,自动写 .rankup/decisions.md/rejected.md)。
硬规则为什么
新方向/候选先过 selection.md 七道闸门(0 硬约束、1 使用频次、2 痛点证据、3 付费信号、4 护城河、5 获客可行性、6 量化验证),闸门 6 才移交 research.md P2 花配额六轮 546 次搜索证明:旧顺序把最贵的关键词配额放第一步,绝大多数配额烧在了后来被免费判据(硬约束/低频/无护城河)就能秒杀的候选身上——最便宜、最能杀死候选的判据必须排最前
用户给的任何词都是词根:先直接搜,再扩成树(面板相关词 + Google/Bing/DDG 下拉;叶子再扩,最多两层;叶子月量低于阈值或 KD 高于阈值就停)用户给的是方向不是答案,一个词查完就下结论会漏掉整棵树
筛子:月量太低且 CPC 低 = 否;KD 低好上手量低又没人出价,说明没人为它付钱
候选被判「量太少、不做」前必须先完成站找词 + 词找站反查(找同类站用面板汇出赛道真实带量词表,再反查这批词的 SERP 归属),不许只凭词根/种子词自己的量下结论【实测】站找词/词找站对照实验:只查种子词会系统性低估长尾盘子,反查能同时防止误杀真有量的方向与误留假冷门方向(详见 research.md P2「否决前必须反查」)
Semrush / Similarweb 报的月量必须用 Google Trends 锚点法交叉验证:默认锚点 gpts(美国实测约 5,400/月,KD 77,2026-09-09 Semrush 实测),量级差 10 倍以上再换同量级第二锚点;每轮都要重拉一次锚点自己的 12 个月曲线取均值校准,不能沿用旧均值或只看最近几周(references/trends.md「〇·六」)面板对刚起量的新词有滞后、对头部通用词又容易估得偏宽,本轮实测两个方向的偏差都到过 6–14 倍(ai headshot generator 报 22,200 被两次独立锚点判定只有 0.07–0.18 倍;ugc ads ai 报 210 被判定低估到 1.4–3.3 倍);不交叉验证就是直接把面板的方向性误差当结论用
社区验证是必走的一条腿:Reddit / X / YouTube / B 站近 14 天讨论量。取数走兄弟 Skill:/agent-reach(先 agent-reach doctor --json 看各平台后端,再按 research.md 阶段 5 的命令组跑)、/anysearch 批量网页搜索、/deep-research 只做定性背景;rankup 自带的只有 reddit-wishes.mjshn-signals.mjs;搜索侧用 scripts/gt.py compare <词> --time 1d(Trends 过去 1 小时 / 4 小时 / 1 天的小时级曲线,新词单独查不和大词同框)数据平台只有 28 天窗口,昨天火起来的看不到;Trends 的 now 区间是唯一能看到小时级的公开源;论坛热度是第一手的,帖子一星期内炸开面板上还是 0
亲眼看 SERP,用页面类型核实真实意图宠物诊断那次:词看着是工具需求,首页全是兽医内容,做工具就错了
空结果先核 manifest:429 / CAPTCHA / 超时都产出 0 条采集失败 ≠ 没需求,把失败读成结论是最贵的错
开跑前先 grep 项目的 .rankup/rejected.mdresearch/:上一轮 pass 掉的词或方向,命中就跳过并引用,或写明复活条件已满足再重开;本轮 pass 掉的带理由与复活条件写回 rejected.md换个会话就把否决过的东西当新点子重做一遍、再踩同一个坑,是项目记忆最常见的失效形态;理由留着,条件变了才能有据翻案
结论要折成钱:查同类站真实流量,seo-webcafe.mjs money能排上去 ≠ 能赚钱,漏掉这道闸会得出 SEO 正确、商业错误的结论

2 立项与定位

硬规则为什么
第一目标是拿到流量,语种跟着流量走:先看哪个语种量大竞争小没流量的定位再漂亮也验证不了
某语种流量大竞争小就只做单语站,不做多语言多语言是翻车最多的路,还把权重摊薄;要上也是先 2–3 个语言、hreflang 代码统一生成、禁止按 IP 跳转
意图类型决定产品形态与变现方式:信息型 → 内容站 → 广告;工具型 → 在线工具 / 客户端 → 一次付费或订阅;持续使用型 → SaaS → 订阅形态跟着意图走,不跟着技术偏好走
写清「1」的定义与放弃条件0→1 最常见的死法是不知道什么时候该停

3 建站与开发

  • 触发:「帮我搭起来」,或开发中把本 Skill 当规范挂着。
  • 入口lifecycle.md 段 3 + cloudflare-stack.md(脚手架命令原文、资源选择、8.6 邮箱);三方库/服务优先见 integrations.md。常用:gh repo create --privatewrangler types、对 dev server 跑 scripts/seo-audit.mjs
硬规则为什么
一律cloudflare-stack.md 第 1 节那条 shadcn monorepo 初始化命令,禁止其他脚手架一套栈一套坑,换脚手架等于把四个已踩过的坑重踩一遍
GitHub 私有仓 + Cloudflare(Workers / D1 / R2 / KV 按需启用,不为「以后可能」提前建)脚手架跑通就建仓推远端;未上线仓库里带着选题与定价,公开等于送人
不重复造轮子,优先接三方库/服务自己写的登录、支付、邮件是最贵的技术债
任何功能、任何 UI 一律用脚手架自带的 shadcn 组件库components/ui/);库里没有的先 pnpm dlx shadcn@latest add <组件> 或装现成的 shadcn / React 生态组件,禁止手写下拉框、弹窗、日期选择、表格分页这类基础控件脚手架初始化时组件库已经在了,手写一个下拉框等于放弃可访问性、键盘导航、暗色模式和一致的视觉,且每个站各写一遍没人维护
做页面级设计(Hero / landing page / 定价页 / 关于页 / 404 / 登录页)或需要动画动效时,先浏览 design-references.md 收录的组件库参考站,选 2–3 个案例参考后再实现;基础控件红线不变凭空设计的页面视觉质量不稳定,参考真人设计工程师的现成案例再适配,省时间且质量高;shadcn 生态的组件库(如 21st.dev)和我们的脚手架直接兼容
域名做成一处配置留位,开发期不接正式域名域名在段 5 才定稿,提前硬编码会在换域名时漏改
任何页面不得出现占位链接 / 占位文案 / 占位图片Google 判垃圾站,红线;宁可整块删掉(discipline.md 十四)。开发期写占位、上线时无人复查是实际发生过的漏法——多个站上线后仍被发现有占位超链接、占位文案,所以段 3(开发自查)/ 4(上线前 review)/ 5(放开索引前)各设一道占位专项闸,不是只在段 3 提一句禁令
网站需要任何视觉素材(logo、favicon 源图、og:image、内页配图、用户场景图、插画)→ 加载 /imagegen 真实生成占位图是红线,而段 4 要求每页独立 og:image 必须有图,没有生成能力就只剩占位一条路
邮箱一律 Cloudflare Email Routing 的 hello@一个约定,免得每个站各起一个、验证时各找一遍
匿名页面 HTML 必须走边缘缓存(Worker 里 caches.default match/put),不能每次请求都冷启动加现场 SSRWorkers 每个节点冷启动 + 现场 SSR,不缓存则 TTFB 随地区漂 1 秒以上;实测两个上线站没做这条,同一页 PageSpeed 在两个节点测出 95 与 78 分,LCP 从 1.7s 拉到 4.7s
脚手架初始化当天必须过完「Day-1 默认清单」lifecycle.md 段 3 · 3.2),判据见 checklists.md 段 3 对应行;不是等段 4 上线前体检才补四个同栈站点复盘发现:清单里的项目晚做一天,返工成本呈指数增长——改一处域名硬编码是分钟级,改一批已发布页面的图片格式是天级

Day-1 清单里最容易漏、也最贵的三条单列在这里,其余见 lifecycle.md 对应节:

  1. SITE_URL 必须构建期烧进客户端 bundle(vite define/import.meta.env),不能只放 Worker 环境变量,默认值不许是占位域名,取不到就构建期抛错——curl 测不出这个问题,只有真实浏览器渲染后读 DOM 才看得见;两个站都因为这条泄露过占位域名到线上 canonical/og:url。
  2. 边缘缓存中间件随脚手架当天就位,不留到上线前;验证用 GET 不用 HEAD(多数实现的缓存键只对 GET 生效)。
  3. 字体策略当天定死:CJK 系统字体栈,拉丁自托管子集化;preload 本身会抢带宽,实测反而把 LCP 推后一个 RTT,不要「先 preload 保险」;装饰字体走两全法,不必为分数放弃品牌字体。

4 上线前 SEO / GEO

  • 触发:「能不能上线了」「TDK」「密度」「怎么被 AI 引用」「站慢不慢」。
  • 入口lifecycle.md 段 4;判读 seo-box.mdseo-webcafe.mdseo-growth.md 三-B。常用:scripts/seo-audit.mjs --sitemapscripts/pagespeed.mjs collect --strategy bothplan 只打印链接不采数,仅兜底)、scripts/is-agentic.mjs scan --saveseo-webcafe.mjs audit / chat。写文案的兄弟 Skill:中文 /write(先确认它的五个附属 Skill 都在,缺的用 find-skills 装齐;装不上才退到 /human-writing 起稿 + /shuorenhua 去 AI 味);被 AI 引用的内容形状读 /ai-seo 的 content-patterns;JSON-LD 模板只读 /seo-geo 的 schema-templates,不跑它的脚本;配图 /imagegen。分工与加载条件见 skill-ecosystem.md
硬规则为什么
在预览域上做完,预览域 noindex半成品被收录,第一印象就是半成品
一个关键词对应一个内页;「做成内页」必做:目标词登记进 keywords.md、TDK、独立 OG 含图、密度、无占位、体检全套一页扛多个词会互相稀释,首页覆盖太多词是排名波动的常见根因
每页目标词 + 密度达标;价格表等无关区块改客户端加载,SSR 只输出目标文案(与 seo-growth.md 的「首次交互后注入」是同一节)密度按 SSR 输出的 HTML 算,无关区块会把目标词冲淡
占位专项复查是上线 review 必做项:按 sitemap 逐 URL grep(正则见 discipline.md 十四)+ 人工抽查首页/定价/关于/联系/法律页每个链接可点、每张图有内容,重跑不采信上一轮段 3 的开发期禁令拦不住上线后仍有占位——这是漏法本身,闸门必须落在「上线前」这个时间点上才管用
每页独立 meta / OG 且必须有图共享 OG 让全站在社交分享里一张脸,没图的分享卡没人点
正文是给人读的,不是给密度工具凑的:起稿后必须过一遍去 AI 味与结构梳理(中文走 /write 阶段四或 /shuorenhua,英文按 /ai-seo 的 Information Gain 判据自查),首屏一句话说清这页解决什么。中英文都查四样:矫饰文风(用比喻花腔代替直说,有直说就直说)、句子密度(一句一个意思)、引文标记(别人的话打引号注出处,最多一处)、格式克制(列表只在内容确实多面时用)——判据与自查正则在 /write 阶段四模板腔与空话会被 AI 搜索跳过、被读者秒关;Information Gain 是 2026 排名与被引用的共同判据;矫饰句读者一眼能认出是模型写的
llms.txt / GEO 按 seo-growth.md 三-B 做:Google 定论 AEO/GEO 就是 SEO不需要第二套方法论,也不要加载会跑付费凭据的兄弟 Skill 脚本
上线前(段 4)与 rankup review 全站体检都要用 AITDK 扩展面板对站点跑一遍完整报告(按 sitemap 抽样:首页 + 每类模板页各至少一个 + 全部法律/关于/联系页);报告里所有标红/标黄的问题项,以及任何没拿到满分的评分项,一律算必修,逐条修完重跑,直到全绿满分,改不动的写清为什么改不动AITDK 是与 Google 视角独立的第三双眼睛,看得到自家 seo-audit.mjs / is-agentic.mjs 漏掉的项;不满分就说明还有可修的空间,不能因为自家脚本已经全绿就跳过
每次页面改动全套检测重跑:TDK、密度、AITDK 全站报告、seo.web.cafe audit、哥飞 AI 二次意见只重跑改到的两项会漏掉连带影响
证据必填:控制台绿图标不算;PageSpeed 移动 + 桌面都跑、实验室性能分 ≥ 90、CWV 达标(LCP ≤ 2.5s / CLS ≤ 0.1 / TBT ≤ 200ms)、opportunity/diagnostic 逐条必修;现场那块不存在 = CrUX 流量不足,不是通过;TTFB > 600ms 不通过,先查匿名页 HTML 边缘缓存是否命中再排查别的原因;LCP 慢而无阻塞资源先按 seo-box 一的 Lantern 优先级模型排查这套东西唯一致命的失败形态是看着全绿、底下什么都没有;判据写成自设下限的结果是两个站直接跳过了这一闸

5 上线与接入

  • 触发:「数据检测平台都接入了吗」「这个域名能不能用」「提交 sitemap」「把 Ahrefs 的检验结果都修了」。
  • 入口lifecycle.md 段 5;search-platforms.mdanalytics-platforms.md;域名接入 cloudflare-stack.md 8.5。常用:scripts/cf-analytics-setup.mjsscripts/indexnow-submit.mjsscripts/webmaster-sitemap.mjsscripts/yandex-setup.mjsscripts/ahrefs-site-audit.mjsscripts/analytics-beacon-check.mjs
硬规则为什么
部署一律走 Cloudflare 原生 Git 集成(Pages「Git 存储库连接」/ Worker Workers Builds),push main 自动构建部署;不写 GitHub Actions 部署 workflow;本地 wrangler deploy 只作应急兜底。模板与坑见 cloudflare-stack.md §9GitHub Actions 免费额度用完就断,Cloudflare 构建额度对站点几乎用不完
分两批:批 A 域名无关(GA4、Clarity、CF Web Analytics)在预览域接好并验证 → 域名定稿 → 绑域名 → 批 B 域名相关(GSC、Bing、Yandex、Naver、IndexNow、Ahrefs WA + Site Audit、Email Routing)→ 放开索引 → 首页请求编入索引批 A 不依赖域名,先做省一轮;批 B 换域名就作废,所以放在定稿之后
域名定稿前过黑历史裁决闸门seo-webcafe.mjs history、Wayback、外链画像、site: 搜索;成人 / 赌博 / 被惩罚一律否带惩罚的域名做什么都起不来,换域名比救域名便宜
一个不漏,清单要有「其他能带流量的平台」兜底行有站 80% 流量来自 Bing,有站几乎全部来自韩国
IndexNow 排在站长工具前面它一样账号都不欠,先推了再慢慢验证所有权
接入必须线上实测curl grep beacon 只证脚本在,CF WA 还要 GraphQL count > 0site_token 填成 site_tag 不报错,一个站空跑了 45 天
第三方分析脚本(GA4、Clarity)一律延迟到首次交互或 6s 兜底再加载(单用 requestIdleCallback 不够——空闲回调仍会落在 TBT 观测窗内),不许因为「脚本拖 LCP」把 GA4 标 ❌ 或推迟接入——延迟加载就完了,LCP 零影响曾经因为这个理由把 GA4 标 ❌ 整整推迟了一天,纯属多此一举;【实测】单靠 requestIdleCallback 仍会被计入 TBT 观测窗
Ahrefs Site Audit 的问题按报告逐 URL 修完,回段 4 全套重跑第二台爬虫的价值在它看得到你自己漏掉的整站问题

6 外链

  • 触发:「帮我搞点外链」「去哪发」「竞品的外链哪来的」「有没有毒」「发个 Product Hunt」。
  • 入口backlink Skill(未装:npx skills add yan-labs/yan-skills --skill backlink -g -y);判据 webcafe-topics.md 五;发布平台 product-launch.md
硬规则为什么
rankup 只判什么时候发、发多少;发现、填表、台账全在 backlink两个 Skill 各管一层,不在两处各存一份流程
候选站点调研判定技术上可以对外提交,只说明这个站没有硬伤、值得摆上桌,不代表这一轮就该把它排进提交队列;批量投递前必须把完整的候选清单摆给用户过一遍,等用户明确圈定这一轮实际要提交的子集,才能进入实际提交执行阶段技术判定(存活状态、内容是否完整、是否占位页、是否公开产品)覆盖不到用户自己的曝光意愿与节奏考量——要不要让某个项目这一轮被公开曝光,这类判断只有用户能给;把技术清单默认当提交清单,等于拿技术判定替用户做了一次范围决策
节奏按 KD → 引荐域对照表;新词上线 2–4 周内不改页面外链过快与频繁改页都会被读成操纵
302 / 307 不传权重;导航站按过滤清单筛;新后缀域名在老博客发的不算链接这三条都是花了钱才知道的
每条外链进台账,证据阶梯 submitted → public → indexed 每级都要证据没证据的外链等于没发

7 变现与监控

  • 触发:「没人付费」「定价怎么定」「接 PayPal」「AdSense 被拒」「流量掉了」「排名没了」。
  • 入口monetization.md(Stripe / PayPal / 广告 / 订阅 / 商店上架)、conversion.mdevolution.md;掉量排查 webcafe-experiences.md 十七~十九。常用:scripts/is-agentic.mjs diffscripts/review.mjs。转化文案与定价页用 /marketing-psychology(锚定、社会认同、损失厌恶、默认效应),找新渠道用 /marketing-ideas;两者只给角度,采不采纳按 conversion.md 的可采纳分档判,暗黑模式不采。
硬规则为什么
Stripe + PayPal 先有支付通道必须有备份,被关户不至于断粮
广告(AdSense / Adsterra)、订阅、商店上架后续沉淀;AdSense 先传 ads.txt 再申请审核每条通道各有过审与关户的坑,边做边写回 monetization.md
动页面之前先查上游流量意图转化率低常常是词选错了,不是按钮颜色
流量掉了先查 GSC 与 TDK / canonical 有没有被改坏;退款全退不部分退被 K 与被拦是不同的死法,先分清再动手;部分退款制造争议
监控读数触发回到段 1 开下一棵树增长是循环不是终点,一棵树吃完就该扩下一棵
每轮收尾:调研报告进 research/、pass 掉的进 rejected.md(带理由与复活条件)、做了什么进 iterations.md、功能与实现的调研也一样沉淀项目记忆是下一轮的起点;写的是判据与理由不是禁令,条件变了后来者才有据翻案

红线速查

红线细则在 discipline.md
全权委托:不请示、不问「要不要继续」、连锁任务做到底
先查脚本清单,禁止现写等价实现或手点界面;脚本坏了修脚本
花配额前先看档位,以脚本打印为准,不信文档默认值
需要登录态一律用户的浏览器,沙箱浏览器只能看公开 SERP
有 API/CLI 且本机有凭据能证明,一律走 API/CLI,禁止开浏览器点后台;只在 API 不覆盖或需一次性 OAuth 授权时开,且只做那一步
配额站(Semrush / Similarweb / Ahrefs)不传 --session;会话名不用 $$五、六
任何页面不得有占位链接 / 文案 / 图片十四
做任何功能、任何页面,UI 只准来自脚手架的 shadcn 组件库或同生态现成组件;缺的先装,不许手写基础控件十六
漏了不会变红的收尾动作(IndexNow 等)焊进 ship 命令
接入必须线上实测,不采信勾;批 A/批 B 接入看板逐行由 scripts/review.mjs 断言
真实令牌只在 Skill 的 .env,不进回复 / 日志 / git十一
check 轻量零配额;命中升级条件要明说「这已经不是 check,是 review」十三
面板 / 网页操作与文档对不上:先过五层分诊(重跑、浏览器与会话、额度配额、人眼截图、跨时段),确认是平台变了才改 Skill 原文档;环境问题只记项目 journal/十五
IndexNow 推送默认 diff(只推新增 URL),全量用 --all 显式触发十七
ID / token / 密钥等标识符必须从页面 DOM 或复制按钮获取,禁止从截图、记忆、转录中抄录十八

主线:维护 checklist,使用 checklist

每段都有一套 checklist。不过 check 不许进下一段;每轮迭代新做的东西,把相关 check 重新过一遍。这是硬门槛。

  • 闸门 checkreferences/checklists.md:每段一张表,判「这段能不能算完」。
  • 步骤 checklifecycle.md 各段「步骤 check」,判「这一步做对了没有」,每做完一步就核。
  • 状态记在项目侧 .rankup/checks.md:✅ + 证据在哪个文件哪一段 + 日期;做不了标 ⏸ 写清卡在哪;开新一轮把标「每轮」的打回 ⬜。
  • 判断由你做,不找脚本代劳scripts/review.mjs 只给文件层面的缺口,500 字节的 audit.md 能让脚本变绿,里面是不是全站逐 URL 只有你看得出来。
  • 判据在 checklists.md,操作在各自的 md,两处不得各存一份——同一件事写两遍,改了一处另一处就静默过期。
  • 缺 check 时先补进 checklists.md 再去做,顺序反了这一条只会存在于那次对话里。

命令

rankup check

用户说「现在该做什么」「一步步来」「我们开始执行这个项目的计划」时的唯一动作。编排在 playbooks/site-review.md 第二节。

  1. references/checklists.md 与项目 .rankup/checks.md;跑一次 scripts/review.mjs 拿文件层线索。
  2. 找到第一个没过闸的段,逐项去真实代码、线上响应、后台读数核对。
  3. 保持轻量:零配额、不派七组 agent。 命中升级判据(已上线但 audit.md 缺失、.rankup/ 不存在、动过线上 URL 且超过一轮没体检、用户问的其实是「站有什么问题」)时,明说「这已经不是 check,是 review」,然后直接转全站体检,不回来问。
  4. 直接照着做,不把清单念给用户;做完逐项在 checks.md 记 ✅ 与证据。

rankup init

适用于全新项目,也适用于做了很久但还没有 .rankup/ 的项目——后者是常态,不得因为缺记忆就重建技术栈。

  1. 摸清现状再写字:package.json、路由清单、部署配置、git log;已上线的再取线上 sitemap.xmlrobots.txt、首页响应。
  2. 外部系统一律实时查询(域名解析、Cloudflare、GSC、支付),不采信文档。
  3. project-memory.md.rankup/ 全套;取不到的写 待确认,不猜。integrations.md 用完整平台表初始化全部 ⬜(discipline.md 十)。
  4. 已运行项目补 baseline.mdaudit.mdroadmap.md 写阶段目标与放弃条件。
  5. 绿地项目脚手架跑通后立刻建私有远端仓并推送,.rankup/ 随仓库提交。
  6. 汇报:填了什么、哪些 待确认、哪些需要用户提供。凭据只登记名称与位置。已有 .rankup/ 时不覆盖,转为补齐并提示用 review

rankup review

review 不是「查 .rankup/ 缺哪个文件」,是对这个站本身做一次全面体检。编排在 playbooks/site-review.md 第一节:先摸前提,再一条消息并行派七组 sub agent(技术 SEO / 速度 / GEO / 关键词长尾 SERP / 哥飞二次意见 / 市场规模 / 接入与记忆),最后汇总回写。A 组(技术 SEO)含 AITDK 全站报告,Issues 与未满分项一律进必修清单,判据 checklists.md 段 4「闸门 4c」。.rankup/ 不存在、站没上线、拿不到 GSC 三个分支都写死在 playbook 里,不要停下来先 init。段 3 Day-1 清单与段 4 内页清单做到位时,review 应该只剩「补漏」;review 若发现 Day-1 项本该在脚手架当天做却缺失,先把它回流进这两份清单,再回去修站——否则同一个坑会在下一个项目原样重演。

G 组那条线:scripts/review.mjs --project-root . 出五块报告;再挖会话记录 scripts/sessions.mjs --project-root . --days 14 --new-only--dump 出浓缩稿,消化完才 --mark)。默认加 --new-only,水位线记在 .rankup/review-state.json,不加会把同样的对话重读一遍。浓缩稿里找四类东西:用户的纠正、验证过的结论、踩过的坑与根因、已推翻旧记录的事实(修订原条目,不并列)。 之后:三方对账 → 过全部闸门补缺口 → 接入清单线上实测 → 筛 experience.md → 剥离站点后仍成立的规则回流本 Skill → 补脚本 → 刷新登记表 → 一页结论。能当场修的直接修。

启动协议

  1. 读同目录 skill.json,跑 node "<rankup-skill-dir>/scripts/check-version.mjs" --project-root . --apply;网络失败保留当前版本,不得伪称已更新。
  2. .rankup/INDEX.md.rankup/skill-state.json;不存在按 project-memory.md 初始化,不重建技术栈。只读任务相关文件,不无差别加载日志目录。本轮要碰的每个词、方向、功能、渠道、域名先 grep -i 一遍 .rankup/rejected.md,命中的只有跳过并引用、或写明复活条件已满足两种处置。
  3. 三方对账门禁:回答「接下来做什么」或宣称任何进度之前,交叉核对 git log --oneline -25、真实路由清单、线上 sitemap.xml 全量 <loc>plan.md 的勾选、progress.md、autopilot 状态都是滞后指标;外部状态(Cloudflare、GSC、Stripe、索引、外链)以当前查询为准。不一致先回写 .rankup/ 再继续。
  4. references/checklists.md.rankup/checks.md 定段,不凭印象;需要可复用操作先查跨项目登记表。
  5. 做完更新 .rankup/ 事实、决策、计划;把本轮过掉的 check 逐条记进 checks.md,动过线上 URL 的把标「动了 URL」的打回 ⬜。
  6. 沉淀义务与是否调用本 Skill 无关:只要项目里有 .rankup/,任何任务完成后都要回写可复用结论,判据是「下次能否少走一遍」。

经验库:规划与迭代之前先翻一遍

references/experiences/ 是经验层,回答「该怎么判断、别人踩过什么坑」;方法层回答「怎么操作」。挖需求读 demand-discovery.md;规划排优先级读 zero-to-one.md;上线后决定改什么读 conversion.md;技术 SEO / 站群 / 多语言 / 索引读 webcafe-experiences.mdwebcafe-topics.md;往里加东西看 INDEX.md 收录规则。 三条硬约束:经验层不带任何项目信息;每条必须有出处与证据等级(【实测】/【经验】/【猜测】,猜测不得当结论执行);这些是从业者单点实践,采纳前先问「我们的前提一样吗」,小步验证后写回项目侧。

可复用操作必须落成脚本

任何需要第二次执行的操作,第一次跑通就固化成脚本,不允许下次重新摸索——每次重试都在烧上下文,且结果不可比。判定:「会再做一次」或「换个站换个词就要重跑」。 固化到 <project>/.rankup/scripts/<动词-对象>.mjs,参数化(property、日期、词、国家),在 .rankup/INDEX.md 登记用途、参数、登录态依赖、已验证日期。脚本失败时修脚本,不绕过;失败原因写进脚本头部。登录态、property ID、账号配置属于项目侧,不进本 Skill。

跨项目资产登记表

各项目的 .rankup/ 互不可见,登记表把可复用脚本索引到一处:node "<rankup-skill-dir>/scripts/registry.mjs" scan --roots <存放项目的目录> 整表重建,list 查看。 位置是 Skill 目录下的 registry.md,它必须写出项目名与绝对路径才有用,因此被 .gitignore 排除,并由 scripts/validate-rankup.mjs 断言绝不能被 git 追踪——.gitignore 只是约定,git add -f 就能绕过。扫描根目录来自 --rootsRANKUP_PROJECT_ROOTS~/.rankup/config.json,绝不写死。启动时查它;只索引不复制;某个脚本被第二个项目用上,考虑把做法回流本 Skill。

安装与版本

先装 openclinpx skills add yan-labs/yan-skills --skill opencli -g -y):OpenCLI 本体要装我们自己的构建,不是应用商店版(商店版默认前台抢标签页,失败不报错)。opencli doctor 报扩展版本过低时照它说的做。凡是碰用户已登录浏览器的动作,一律走它,不得用其他浏览器自动化工具(含 Claude 自带的 Claude in Chrome 一类)替代——理由与判据见 discipline.md 五。

Shortened here. Read the whole file on GitHub.

Signals

GitHub stars
186
Forks
82
Last commit
Sep 2026

ahel review

  • K1binfo
    installs-packages (in scripts/aitdk-opencli.sh)
  • K1binfo
    installs-packages (in scripts/archive/aitdk-report.mjs)

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Catalog kind
skill
Gateway key
rankup
Source
github.com/yan-labs/yan-skills