Community写作与编辑github.com

ankitg12/agent-skills

编写并发布一篇博文到个人 Jekyll + GitHub Pages 博客 — 当用户说“记录这个”、“写一篇博文”、“推送到博客”或“/blog”时使用。

agent-skills 是什么?

该技能让AI助手能够自动撰写博文并通过Jekyll + GitHub Pages发布到用户的个人博客。它定义了一套完整的工作流程:从创建Jekyll格式的markdown文件(包含正确的frontmatter)、遵循特定的写作风格(以问题开头、避免废话、使用代码块和表格等),到验证所有外部链接的有效性(确保每个URL返回200状态码),再到将文章提交到master分支并自动部署。技能还包含发布后验证步骤,以防止Jekyll因未来日期问题而静默丢弃文章。此外,该技能强制执行一项严格的规则:不得在博文中包含任何雇主信息(如内部工具、项目名称、客户信息等),只允许讨论技术、工具和模式。它适用于任何运行Jekyll并托管在GitHub Pages上的博客,通过保持博客索引文件来维护发布记录和系列文章追踪。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ankitg12/agent-skills/tree/HEAD/blog-it

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

博客 — Jekyll + GitHub Pages

仓库: ~/repos/github.com/<你>/<你>.github.io 引擎: Jekyll + GitHub Pages,主题:minima 分支: master → 推送时自动部署 索引: 维护一个博客索引笔记文件(例如 ~/notes/blog.md)— 每篇文章后更新

注意 — 不需要本地 Jekyll 构建。GitHub 在服务器端构建。


⚠️ 硬性规则:不得包含雇主信息

切勿在任何文章中包含:

  • 雇主的内部工具、系统、代号或基础设施
  • 内部项目名称、团队名称、组织架构或路线图详情
  • 客户名称、合作伙伴名称或合同细节
  • 内部工单、维基页面或会议内容
  • 薪资、人员编制、预算或业务指标

只写 技术、工具和模式 — 而不是你在哪里工作或你的雇主发布了什么。如有疑问,在发布前询问用户。


工作流程

1. 撰写文章

_posts/YYYY-MM-DD-slug-here.md

Frontmatter:

---
layout: post
title: "你的标题"
date: YYYY-MM-DD
categories: ai agents productivity   # 空格分隔
series: "AI 编程助手生产力"   # 如果不属于系列则省略
---

2. 风格

  • 以问题开头,而非解决方案
  • 一个具体的开场句 — 不要写“在这篇文章中我将...”
  • 任何可运行的内容使用代码块
  • 比较使用表格
  • 以 ## 来源 部分结尾,链接仓库/参考资料
  • 没有 LLM 废话 — 像 README 一样写
  • 将 @word 转义为 \@word,以避免未来生成 PDF 时出现 typst 引用错误

在博客中挑选一篇已发布的广受好评的文章作为语气和密度的参考。

3. 发布前验证每个链接(不要跳过)

凭记忆引用 URL 会产生 404 错误。首先检查每个链接的 HTTP 状态:

for u in "https://example.com/a" "https://example.com/b"; do
  echo "$(curl -sS -L -o /dev/null -w '%{http_code}' "$u")"  "$u"
done

在提交之前,每个链接 必须 返回 200(或指向有效目标的 301/302)。这比发布死链接然后在用户发现后修复要便宜得多。

4. 提交并推送

cd ~/repos/github.com/<你>/<你>.github.io
git add _posts/YYYY-MM-DD-slug.md
git commit -m "post: <标题>"
git push   # GitHub Pages 自动在约 60 秒内部署

5. 更新索引

在博客索引笔记文件的 ## 文章 表格中添加一行(最新在前),如果文章属于某个系列,则将其附加到 ## 活动系列 行中:

| YYYY-MM-DD | 标题 | `category/path/YYYY/MM/DD/slug.html` |

URL 遵循 Jekyll 的 permalink 模式,该模式源自 categories + date + slug。

6. 验证文章是否真正上线(不要跳过)

Pages 构建成功并不意味着文章已上线 — Jekyll 会静默丢弃未来日期的文章。在构建完成后,使用 curl 访问真实 URL:

base="https://<你>.github.io"; slug="/CATEGORY/PATH/YYYY/MM/DD/slug.html"
curl -sS -L -o /dev/null -w "%{http_code}\n" "$base$slug"   # 必须是 200
curl -sS -L "$base/" | grep -o 'slug[^"]*html' | head -1     # 必须出现在首页

如果返回 404 但构建成功,则几乎可以肯定是下面的未来日期陷阱。


已发布文章的更新保护

  • 保留原始叙述,并附加一个明确标记的更新,除非用户明确要求重写。
  • 仅对新添加或修改的 URL 进行 HTTP 检查;除非请求链接审计,否则不要重复检查未更改的已发布链接。
  • 推送后,验证真实的已发布 URL 返回 HTTP 200。

提示

  • 在博客索引笔记文件中保留一个 ## TODO 部分用于草稿想法;在从头开始之前先检查它
  • 如果文章延续或反驳了之前的文章,使用 {% post_url YYYY-MM-DD-slug %} 链接它
  • 黎明前发布 + 未来日期陷阱: Jekyll 将没有时间的 date: YYYY-MM-DD 解释为 网站时区的午夜,并 静默丢弃未来日期的文章。在 _config.yml 有明确的 timezone: 行之前,当地时间为 04:00 写的文章被读取为 UTC 午夜 ≈ 未来约 1 小时 → 被丢弃直到 UTC 赶上。在 _config.yml 中设置 timezone:,并且不要删除它。如果黎明前的文章在构建成功后仍然返回 404,请在 frontmatter 中添加明确的时间(date: YYYY-MM-DD 04:00:00 +0530)。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能