Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/gingiris/gingiris-skills/gr-blog-postnpx skills add Gingiris/gingiris-skills --skill gr-blog-postgit clone --depth 1 https://github.com/Gingiris/gingiris-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/gingiris/gingiris-skills/gr-blog-post)<a href="https://agentmods.dev/skills/gingiris/gingiris-skills/gr-blog-post"><img src="https://agentmods.dev/badge/skills/gingiris/gingiris-skills/gr-blog-post.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00110 | $0.02143 |
| Opus 5 | $0.00055 | $0.01071 |
| Sonnet 5 | $0.00022 | $0.00429 |
| Haiku 4.5 | $0.00011 | $0.00214 |
Grade A, and why
gr-blog-post scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 197 lines — stays where its author put it; the contents beside it link to each section on GitHub.
gr-blog-post — Jekyll 博客发布
产出的文章必须符合
Iris 文风 5 要素(详见 知识库/Skill知识包/iris_writing_style.md)
- 时间锚定开场 —— 不说"SEO 很重要",说"2026-04-10,凌晨 3 点,后台流量归零"
- 括号旁白 —— 正文一句,括号里挤私货("...—— 别问怎么知道的")
- em-dash 转折 —— 不用"但是",用
—— - Key Stats 表格 —— 文章开头或 H2 下第一屏放一个硬数据表,3-5 行
- GEO 直接答案段落 —— 文章顶部一段 30-50 字直接回答主问题,方便 AI 爬虫抽取
技术 frontmatter 模板
---
layout: post
title: "主关键词前置,副标题用冒号:不超过 60 字"
date: 2026-04-15 14:30:00 +0800
categories: [seo, growth]
tags: [...]
canonical_url: https://gingiris.github.io/growth-tools/blog/2026/04/15/slug/
hreflang_ja: /blog/2026/04/15/slug-ja/
hreflang_ko: /blog/2026/04/15/slug-ko/
description: "150-160 字 meta description,含主关键词"
faq:
- q: "直接问句"
a: "30-50 字硬答案"
---
发布流程
1. 选题
- 读
gr-seo-patrol输出,找"top 30 但没 top 10"的关键词 - 或读
gr-competitor,找对手新打法 - ❌ 不做重复主题(先
site:查站内是否已有)
2. 写初稿
- 时间锚定开场(当前日期 + 具体场景)
- 第一屏:GEO 直接答案段(30-50 字)+ Key Stats 表(硬数据)
- H2 结构:问题 → 框架 → 案例 → 陷阱 → 下一步
- 每个 H2 下 200-400 字,不超过 600 字
3. 内链
- 向前:链接 2-3 篇已发布的同主题文章(用主关键词作 anchor)
- 向后:站内 index / hub 页
- 权重传导:从流量最大的 3 篇文章加内链到新文
4. FAQ Schema
- 3-5 个问答
- 问句必须是用户真实搜索句(从 GSC / People also ask 抓)
- 答案硬、短、可引用
5. Canonical 策略
- 默认 self-canonical
- 如果是同主题系列的分篇 → canonical 指向 master
- ja/ko 翻译版 → 自身 canonical + hreflang 互指
6. 多语言同步
- 用
scripts/sync-i18n.py(roadmap)从英文自动产日韩草稿 - 人工过一遍(机翻硬伤 + 文化适配)
- 日韩版本独立 slug,不复用英文 slug
7. 发布
- GitHub Contents API PUT(不要
git push) - Commit message:
post: {slug} ({lang})
8. 发布后 24h
- 加入
gr-seo-patrol监控名单 - Google Search Console 手动提交
- 社交平台分发(推特 / LinkedIn / dev.to)
反模式
- ❌ 不要用 AI 味重的模板("In today's digital landscape...")—— 过不了
dbs-ai-check - ❌ 不要 H1 堆关键词
- ❌ 不要忘记 hreflang —— 已发布的旧文补翻译时要回改原文 frontmatter
- ❌ 不要同一关键词发 3 篇 —— cannibalization 立刻找上门
级联推荐
- 写完 →
gr-seo-patrol加监控 - 发现是系列稿 →
gr-blog-post继续产第 2 篇并设 canonical - 英文发完 24h → 手动触发日韩翻译
API 依赖
| Service | Env var |
|---|---|
| GitHub PAT | GITHUB_TOKEN |
| DeepSeek / Teamo(翻译) | DEEPSEEK_API_KEY / TEAMOROUTER_API_KEY |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 197 lines · 110 tokens per session scan A 025a52f354a9
gr-blog-post is a skill published in the GitHub repository Gingiris/gingiris-skills (23 stars, last pushed 3mo ago), licensed MIT. It adds 110 tokens to every session and 2,143 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
chinese-documentation
中文文档排版参考——中英文空格、全半角标点、术语保留、链接格式、中文文案排版指北约定。仅在用户显式 /chinese-documentation 时调用,不要根据上下文自动触发。.
azure-ai-translation-text-py
Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications. Triggers: "text translation", "translator", "translate text", "transliterate", "TextTranslationClient".
i18n-localization
Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support.
harden
Improve interface resilience through better error handling, i18n support, text overflow handling, and edge case management. Makes interfaces robust and production-ready. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.
seedance-vocab-ja
This skill should be used when the user asks for Japanese Seedance 2.0 prompt wording, Japanese cinematic vocabulary, or translation of camera, lighting, action, VFX, audio, and production terms into Japanese.
intlayer-preact
Integrates Intlayer internationalization with Preact applications. Use when the user asks to "setup Preact i18n", create a new translated component, use the "useIntlayer" hook in Preact, or configure providers.