Skip to content
cccskills
FreePublished on GitHub

gr-seo-patrol

每日 SEO/GEO 巡逻(2026-06-24 标准)。

覆盖:SERP 关键词排名追踪(DataForSEO / volume 300-1000 / KD 5-35)、 Google 索引数统计、llms.txt 可达性、GA4 tag 部署检测及 AI 来源 channel 配置、 PH canonical 合并修复、社媒关键词雪崩救援(title 含 best/free/top/guide+年份、内链注入 ≤2-3/段、 主动 cite 竞品外链)。

当用户说"跑 SEO 日报"、"检查排名"、"某关键词掉了"、"修 canonical"、"加内链"时调用。

The English summary is being prepared. Showing the original description.

See how to install

Files included (18)

  • SKILL.md12.8 KB
  • gr-seo-patrol/scripts/canonical-fix.py2.5 KB
  • gr-seo-patrol/scripts/check-page.py28.8 KB
  • gr-seo-patrol/scripts/check-schema.py14.2 KB
  • gr-seo-patrol/scripts/check-site.py13.1 KB
  • gr-seo-patrol/scripts/check-social.py13.8 KB
  • gr-seo-patrol/scripts/daily-report.py4.0 KB
  • gr-seo-patrol/scripts/README.md1.2 KB
  • gr-seo-patrol/scripts/rescue-post.py4.0 KB
  • gr-seo-patrol/SKILL.md12.8 KB
  • scripts/canonical-fix.py2.5 KB
  • scripts/check-page.py28.8 KB
  • scripts/check-schema.py14.2 KB
  • scripts/check-site.py13.1 KB
  • scripts/check-social.py13.8 KB
  • scripts/daily-report.py4.0 KB
  • scripts/README.md1.2 KB
  • scripts/rescue-post.py4.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

gr-seo-patrol — SEO/GEO 日常巡逻

什么时候用

场景动作
"跑今日 SEO 日报"执行完整巡逻(scripts/daily-report.py)
"某关键词排名掉了"单词诊断(Claude 直接执行下方诊断流程)
"修 canonical"批量合并(scripts/canonical-fix.py)
"救一下这篇文章"社媒救援(scripts/rescue-post.py)—— title 前置 + 3 个高权重内链
"检查 GA4 部署"扫 HTML 里的 G-XXXXX tag
"查 llms.txt"HTTP 200 + 字节数

核心流程

1. 日报模式

输入:无(全自动) 或 指定关键词清单 输出:

  • 关键词排名 diff 表(今日 vs 昨日基线)
  • Google 索引数
  • llms.txt 状态
  • GA4 覆盖状态
  • 🚨 异常提示(跌出 top 100、整体刷新)

2. 单词诊断

输入:1 个关键词 过程:

  1. 跑 4-5 个 long-tail 变体 SERP
  2. 检查目标 URL 是否 HTTP 200
  3. 用 site: 查询确认是否索引
  4. 对比 3 天前的数据(如果有历史)
  5. 2026-06-24 新增检查:
    • 确认关键词在 volume 300–1,000 / KD 5–35 区间(若不在,标注为低优先级)
    • 检查该页面 title 是否含 best/free/top/guide+年份(CTR 公式)
    • 检查该页面内链密度是否超 2-3/段
    • 确认页面有 BreadcrumbList schema
    • 确认 last-updated 日期已展示(freshness 信号) 输出:雪崩 / 个别 / SERP 刷新 / 死链 四选一,附 2026 合规评分

3. Canonical 批量修复

输入:同主题的 N 篇文章 + 1 个 master URL 过程:替换每篇 frontmatter 里的 canonical_url: → master,GitHub API PUT 安全护栏:

  • 只改 _posts/ 下的 .md
  • 每篇 commit 独立(方便回滚)
  • 跳过 ja/ko(hreflang 替代,保持 self-canonical)

4. 社媒救援

输入:1 个雪崩 URL 动作:

  • a. 重写 title:主关键词前置,长度 ≤ 60 字,必须含 best/free/top/guide+年份(2026-06-24 CTR 公式)
  • b. 重写 meta description:关键词 rephrase(如 "figma alternative" → "the alternative to Figma")
  • c. 从 top-3 高权重文章注入内链(带 anchor text = 目标关键词),每段 ≤ 2-3 个内链上限
  • d. 主动添加 1-2 个竞品 blog 外链(提信用分 → 提 ranking)
  • e. 检查并添加/更新【最后更新日期】(freshness 信号)
  • f. 确认 BreadcrumbList schema 已配置
  • g. 记录修改前后到日志

API 依赖

ServiceEnv var用途
DataForSEODATAFORSEO_B64SERP 查询
GitHub PATGITHUB_TOKEN读写 _posts/

完整 key 模板见 docs/api-keys-template.md。


SERP 查询模板

import urllib.request, json
def serp(kw, loc=2840, lang="en", depth=100):
    key = os.environ["DATAFORSEO_B64"]
    payload = json.dumps([{"keyword": kw, "location_code": loc,
                           "language_code": lang, "device": "desktop",
                           "depth": depth}]).encode()
    req = urllib.request.Request(
        "https://api.dataforseo.com/v3/serp/google/organic/live/advanced",
        data=payload,
        headers={"Authorization": f"Basic {key}",
                 "Content-Type": "application/json"})
    with urllib.request.urlopen(req, timeout=40) as r:
        return json.loads(r.read())

常用 location_code:

  • 2840 US / 2826 UK / 2392 JP / 2410 KR / 2156 CN(无效,中国不返回)

执行脚本

实际可执行的脚本在 scripts/ 下:

  • daily-report.py — 完整日报
  • canonical-fix.py — canonical 批量合并
  • rescue-post.py — 社媒文章救援
  • diag-keyword.py — 单关键词诊断(roadmap,暂用下方「单词诊断」流程替代)

每个脚本独立可跑。调用时优先用 Bash 工具,不要重写脚本。


输出规范

  1. 先给表格,再给结论
  2. 差异用箭头:#6 ↑ / #19 ↓↓
  3. 超过 3 项异常 → 单独开"🚨 异常"一节
  4. 所有排名必须带 location_code,不要假设

级联推荐

  • 发现 cannibalization(同一关键词多篇排名接近) → gr-blog-post 做 canonical 整合
  • 发现 N 个关键词同日跌出 top 100 → 先等 24h,不要硬改内容
  • 发现新关键词机会(长尾 top 30) → gr-blog-post 扩写

反模式

  • ❌ 不要用 grep / find 扫 _posts/,改用 GitHub Contents API
  • ❌ 不要在生产环境直接 git push —— 用 Contents API 的 PUT
  • ❌ 不要一次 serp 50 个关键词 —— 批量过大易触发 rate limit,按 6-10 个一批
  • ❌ canonical 改到 master 后不要立刻 force Google 重新索引 —— 等 3-7 天自然爬取

Monthly Full-Site Audit Workflow

Validated 2026-05-07 on 58 pages: caught 43 SERP-truncating titles + 36 schema warns + 27 stop-word slugs in a single 30-min pass. Single layout-level fix (commit 24a0410e) resolved 20 of 43 title issues.

Run once per month before phase2-monthly-checkpoint. Output: HTML report + machine-readable findings.json archived to ~/Downloads/seo-audit/audit-{YYYY-MM-DD}.json.

Stage 1 — Discovery (5 min)

import urllib.request, re
sm = urllib.request.urlopen("https://gingiris.tools/sitemap.xml").read().decode()
urls = [u for u in re.findall(r"<loc>([^<]+)</loc>", sm) if "/blog/" in u]
# typically 50-70 URLs

Stage 2 — Parallel Audit (20 min for 60 pages, 4 threads)

Use the adopted seo-audit-skill scripts in scripts/:

# For each URL — run 2 scripts in parallel
python3 scripts/check-page.py URL --timeout 20    # title, H1, meta, canonical, slug, alt, keyword placement
python3 scripts/check-schema.py URL --timeout 20  # JSON-LD validation

Or batch with Python's concurrent.futures.ThreadPoolExecutor(max_workers=4). Don't go higher than 4 — GitHub Pages CDN throttles aggressive parallel hits.

Each script outputs structured JSON envelope:

{"field": {"status": "pass|warn|fail|info", "detail": "...", "llm_review_required": false}}

Stage 3 — Aggregate Findings

Bucket by category:

  • Title length > 70 chars (SERP truncation risk)
  • H1 length > 70 chars (mobile readability)
  • Meta description < 80 or > 170 chars
  • Schema warns by @type (BlogPosting, Article, Organization)
  • Canonical issues (mismatch with final URL)
  • Slug issues (stop words, uppercase, missing keyword)
  • Image alt text missing on content images

Save aggregated counts + per-issue URL lists to findings.json.

Stage 4 — Layered Fix Strategy (HIGH ROI ORDER)

1️⃣ Layout-level fixes first (1 commit, fixes 20+ pages):

  • Schema bugs in _layouts/default.html
  • Site-name suffix in <title> tag
  • Missing dateModified from last_modified_at frontmatter
  • Organization / Publisher / contactPoint completeness

2️⃣ Config-level fixes (1 commit, fixes site-wide):

  • _config.yml — logo URL (must be absolute), twitter, social, author structure

3️⃣ Per-article batch fixes (1 commit per file, parallelizable):

  • Trim long titles while preserving keyword (target ≤ 70 chars, ideal 50-60)
  • Trim long H1s (target ≤ 70 chars)
  • Expand short meta descriptions (target 120-160 chars)
  • Add missing Citable Statistics blocks for top GSC-impression pages

4️⃣ Skip these (low ROI):

  • Slug stop words (changing breaks 301)
  • Old articles with <50 imp/month (low traffic = low fix priority)

Stage 5 — Verify (after Jekyll rebuild ~60-90s)

Re-run check-schema.py on a sample page. Confirm status: pass for at least: Article · BlogPosting · Organization · FAQPage

Stage 6 — Archive

Commit findings.json to ~/Downloads/seo-audit/audit-{YYYY-MM-DD}.json for trend tracking. Add 2-5 atoms documenting any new lessons learned.


HARD RULE (anti-hallucination guardrail)

Adopted from JeffLi1993/seo-audit-skill — strict whitelist pattern.

⛔ Output ONLY the checks defined in the audit script's JSON envelope.

  • Do NOT add "bonus" checks not in the script output
  • Do NOT contradict the script's status field unless you have additional observable evidence
  • Do NOT invent metrics like "EEAT score 89" — third-party scoring tools are unofficial (per Google's 2026 guidance)
  • Do NOT include checks marked llm_review_required: false in your judgment commentary — the script's status is final
  • If llm_review_required: true, make explicit judgment, document reasoning, then update status

The script envelope is the single source of truth. Treat it as a strict whitelist.


Companion skill

For single-page audits (not full-site), the same scripts power JeffLi1993/seo-audit-skill which produces a polished HTML audit report. Install as a complementary skill if you want client-presentable per-page audits.


Platform Description

EN: Daily SEO/GEO patrol skill (2026-06-24 standards). Tracks SERP keyword rankings (DataForSEO, filters volume 300–1,000 / KD 5–35), checks Google index count, llms.txt accessibility, GA4 tag deployment + AI traffic channel grouping. Rescues underperforming posts by applying title formula (best/free/top/guide+year), keyword rephrase in meta description, internal link density enforcement (≤2–3 per paragraph), competitor blog external link injection, BreadcrumbList schema check, and freshness date update. Fixes canonical issues.

ZH: 每日 SEO/GEO 巡逻 skill(2026-06-24 标准)。追踪 SERP 排名(DataForSEO,volume 300–1,000 / KD 5–35 筛选),检查 Google 索引数、llms.txt 可达性、GA4 部署 + AI 流量频道分组。救援雪崩文章:title 含 best/free/top/guide+年份、meta description 关键词 rephrase、内链密度 ≤2–3/段、主动 cite 竞品外链、BreadcrumbList schema、freshness 日期更新、canonical 修复。

JA: デイリーSEO/GEOパトロールskill(2026-06-24基準)。SERPランキング追跡(DataForSEO、volume 300–1,000/KD 5–35フィルター)、Googleインデックス数、llms.txt確認、GA4タグ+AIトラフィックチャンネル設定。スノーアバランシュ記事の救援:タイトルにbest/free/top/guide+年、meta descriptionキーワードrephrase、内部リンク密度≤2–3/段落、競合ブログ外部リンク挿入、BreadcrumbListスキーマ、freshness日付更新、canonical修正。

KO: 일일 SEO/GEO 순찰 skill(2026-06-24 기준). SERP 순위 추적(DataForSEO, volume 300–1,000/KD 5–35 필터), Google 인덱스 수, llms.txt 접근성, GA4 태그 + AI 트래픽 채널 그룹 확인. 부진 게시물 복구: 제목 best/free/top/guide+연도 적용, meta description 키워드 rephrase, 내부 링크 밀도 ≤2–3/단락, 경쟁사 블로그 외부링크 삽입, BreadcrumbList 스키마, freshness 날짜 업데이트, canonical 수정.

<!-- gingiris-community-cta:start -->

加入出海社群与购买资料包 · Community & Resources

  • 加入出海社群: 微信添加 staywildgrow,留言「加入社群」即可。

  • 购买资料包: 微信添加 staywildgrow,咨询购买 Gingiris 出海资料包,价格 599 元人民币。

  • Join the global growth community: Add staywildgrow on WeChat and send “加入社群” (join the community).

  • Get the resource pack: Add staywildgrow on WeChat to purchase the Gingiris global growth resource pack for CNY 599.

社群与资料包为可选入口,不影响本开源 Skill 的安装和使用。

The community and paid resource pack are optional; neither is required to install or use this open-source skill.

<!-- gingiris-community-cta:end -->

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

AI Agent Workflow & Skill Architecture Guide — turn expert work into measurable, reusable agent systems. Covers workflow discovery, skill decomposition, harness design, evaluation, human escalation, observability, cost control, and multi-agent orchestration. Includes a measured marketing-delivery case: 15 people × 3–4 weeks reduced to one strategist + AI in 5 days. By Gingiris.

The English summary is being prepared. Showing the original description.

Gingiris-1031/gingiris-skills86Updated Oct 15, 2026

Launch your AI product to global attention — the playbook behind Manus, Devin, and AFFiNE's breakout launches. Covers AI-specific GTM strategy, hype cycle management, waitlist tactics, and multi-market rollout for maximum day-one impact.

The English summary is being prepared. Showing the original description.

Gingiris-1031/gingiris-skills86Updated Oct 15, 2026

First AI Product Launch — Zero to Live in 30 Days. Step-by-step guide for shipping your first AI product from idea validation to paying customers. Includes day-by-day timeline and real examples. By @WeiYipei.

The English summary is being prepared. Showing the original description.

Gingiris-1031/gingiris-skills86Updated Oct 15, 2026

Beginner-friendly App Store Optimization guide covering keyword research, screenshot design, rating management, and A/B testing for iOS and Android. By @WeiYipei — practical ASO for indie developers and small teams.

The English summary is being prepared. Showing the original description.

Gingiris-1031/gingiris-skills86Updated Oct 15, 2026

Complete B2B marketing pipeline combining LinkedIn content, cold email sequences, and webinar funnels. Designed for SaaS founders doing $0–$1M ARR who need predictable lead generation. By @WeiYipei.

The English summary is being prepared. Showing the original description.

Gingiris-1031/gingiris-skills86Updated Oct 15, 2026

You launched an ambassador program. 3 applications. One ghosted after week 2. Should you lower the bar? Offer more perks? Spam influencers? This gives you the community & ambassador operations SOP with volunteer, paid tutorial creator and code-contributor tracks — from pre-launch checklist to recruitment to tiered management to retention to governance. Built from Notion (20M users, real ambassador interviews), AFFiNE (60K stars), Asana, and ClickUp programs. By @WeiYipei. 🇨🇳 你搞了个大使计划。来了3个申请。一个第二周就消失了。该降门槛?加福利?群发KOL?这份SOP给你从启动前置条件到招募到留存到治理的完整社区/大使运营方法论。基于 Notion(2000万用户,大使真实访谈)、AFFiNE(60K stars)、Asana、ClickUp 实战案例。 🇯🇵 アンバサダープログラムを立ち上げた。応募3件。1人は2週間で消えた。基準を下げる?特典を増やす?このSOPは、事前チェックリストから採用、段階管理、リテンション、ガバナンスまでの完全なコミュニティ&アンバサダー運営フレームワークを提供します。Notion(2000万ユーザー)、AFFiNE(60K stars)の実例から構築。 🇰🇷 앰배서더 프로그램을 시작했습니다. 지원 3건. 하나는 2주 만에 사라졌습니다. 기준을 낮출까요? 이 SOP는 사전 체크리스트부터 모집, 단계별 관리, 리텐션, 거버넌스까지 완전한 커뮤니티 & 앰배서더 운영 프레임워크를 제공합니다. Notion(2000만 사용자), AFFiNE(60K stars) 실전 사례에서 구축. Triggers: "ambassador program" | "community building" | "community management" | "DevRel" | "developer relations" | "community growth" | "大使计划" | "社区运营" | "社区搭建" | "コミュニティ運営" | "アンバサダー" | "커뮤니티 운영" | "앰배서더" | "open source community" | "user retention"

The English summary is being prepared. Showing the original description.

Gingiris-1031/gingiris-skills86Updated Oct 15, 2026

See all skills by Gingiris-1031

Report a problem with this skill