发布于 约 1 分钟读完 · 296 字

一键下载 wechaty-blog-pr zip · 2 KB · 1 个文件
下载后怎么用?
  1. 解压,得到一个 wechaty-blog-pr/ 文件夹(里面是 SKILL.md)。
  2. 整个文件夹放进你用的 Agent 的技能目录:
    • Claude Code:~/.claude/skills/
    • Codex:~/.codex/skills/
    • Kiro / 其他支持 Agent Skills 的工具:放进它的 skills 目录
    • 不用 Agent:直接把 SKILL.md 全文贴给任意 AI 当工作手册,也能用
  3. 新开一个对话,用描述里的触发词说话即可(如「帮我复盘这次比赛」)。

命令行一步到位(macOS / Linux / Git Bash):

curl -L https://tiaozhuxiansheng.com/skills/wechaty-blog-pr.zip -o wechaty-blog-pr.zip && unzip -o wechaty-blog-pr.zip -d ~/.claude/skills/
本文目录 13 节
  1. When to Use
  2. Important Correction
  3. Workflow
  4. 1. Verify or Create Fork
  5. 2. Clone and Branch
  6. 3. Add Blog Post
  7. 4. Add Assets (Optional)
  8. 5. Add or Update Contributor Profile
  9. 6. Commit and Push
  10. 7. Create Pull Request
  11. 8. Sign CLA
  12. Common Pitfalls
  13. After Merge

Wechaty 博客 PR 提交

When to Use

  • User has written a Wechaty-related technical blog and wants to submit it to the Wechaty Contributor Program.
  • Goal is to obtain a free Wechaty Contributor Token (e.g., PadLocal puppet token) by publishing a blog post.

Important Correction

The target repository is https://github.com/wechaty/jekyll, not wechaty/wechaty.js.org. The old name wechaty.js.org now redirects to wechaty/jekyll. Always fork and PR against wechaty/jekyll.

Workflow

1. Verify or Create Fork

Check if the user already has a fork:

gh repo view <username>/jekyll --json name,parent

If not, fork it:

gh repo fork wechaty/jekyll --clone=false --default-branch-only

2. Clone and Branch

git clone https://github.com/<username>/jekyll.git
cd jekyll
git remote add upstream https://github.com/wechaty/jekyll.git
git fetch upstream
git checkout -b <branch-name> upstream/main

Branch name convention: blog-<short-topic>.

3. Add Blog Post

Place the Markdown file in jekyll/_posts/ with filename:

YYYY-MM-DD-<lowercase-hyphenated-title>.md

Example:

cp /path/to/blog-post.md jekyll/_posts/2026-08-10-wechaty-llm-wechat-group-feedback-collector.md

Front matter requirements:

---
title: "Post Title"
author: <GitHub username>
date: YYYY-MM-DD
categories: tutorial
tags:
  - wechaty
  - <other-tags>
image: /assets/YYYY/MM-<slug>/<image-file>
---

4. Add Assets (Optional)

Place images in:

jekyll/assets/YYYY/MM-<slug>/
  • SVG is accepted by the site; PNG/WebP are also fine.
  • If using scripts/fit-image.sh, ImageMagick must be installed.
  • Keep images under 1MB.

5. Add or Update Contributor Profile

Create jekyll/_contributors/<GitHub-username>.md:

---
name: <display-name>
site: https://github.com/<username>
avatar: https://avatars.githubusercontent.com/u/<user-id>?v=4
bio: <short bio>
github: <username>
---

<short bio or contact info>

The GitHub user ID can be retrieved via:

gh api users/<username> --jq '.avatar_url'

6. Commit and Push

git add jekyll/_posts/ jekyll/_contributors/ jekyll/assets/YYYY/MM-<slug>/
git commit -m "Add blog: <Post Title>"
git push origin <branch-name>

7. Create Pull Request

gh pr create --repo wechaty/jekyll \
  --base main \
  --head <username>:<branch-name> \
  --title "Add blog: <Post Title>" \
  --body "<brief description>"

8. Sign CLA

After creating the PR, the CLAassistant bot will comment with a link. The user must sign the Contributor License Agreement before the PR can be merged.

Common Pitfalls

  1. Wrong repo: wechaty/wechaty.js.org is outdated; use wechaty/jekyll.
  2. Default branch: Use main, not master.
  3. Git ref bug on Windows: If git fetch upstream reports success but upstream/main does not exist, manually create the ref directory and file, or create the branch from the commit hash returned by git ls-remote upstream main.
  4. Filename case: Blog post filenames must be lowercase English letters, numbers, and hyphens only.
  5. SVG conversion: The site accepts SVG directly. Do not block the workflow trying to convert SVG to PNG if conversion tools are not readily available.

After Merge

Wechaty maintainers will issue a Contributor Token (typically valid for up to one year). The user can then add it to their bot’s .env file and start the bot.