agentCLAWHUBUnverified

Wechat Oa

微信公众号草稿箱管理工具集。触发词(满足任一即触发):看看草稿箱/查看草稿/草稿列表/公众号草稿/搜草稿/搜索草稿/按关键词找草稿/按标题搜/创建草稿/新建草稿/发文章到公众号/推送文章/更新草稿/删除草稿/批量删除草稿/生成封面图/上传图片到公众号/上传图片到素材库/已发布文章列表/公众号素材列表/素材管理/删... Skill: Wechat Oa Owner: andy8663 Summary: 微信公众号草稿箱管理工具集。触发词(满足任一即触发):看看草稿箱/查看草稿/草稿列表/公众号草稿/搜草稿/搜索草稿/按关键词找草稿/按标题搜/创建草稿/新建草稿/发文章到公众号/推送文章/更新草稿/删除草稿/批量删除草稿/生成封面图/上传图片到公众号/上传图片到素材库/已发布文章列表/公众号素材列表/素材管理/删... Tags: latest:3.0.3 Version history: v3.0.3 | 2026-07-12T14:25:39.133Z | user Auto update from GitHub v3.0.2 | 2026-07-12T14:11:45.348Z | user Auto update from GitHub v3.0.1 | 2026-07-10T13:10:34.706Z | user Auto updat

OpenClaw

Rank

62

Safety

84

Downloads

1.9k

Updated

Oct 9, 2026

Version

3.0.3

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.9K downloads reported by the source. Last updated 10/9/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 9, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 9, 2026
Adoption signal
1.9K downloadsadoption · observed Oct 9, 2026
Latest release
3.0.3release · observed Jul 12, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17fj72prx0w0ds4tshsabagh984e440:wechat-oa
  1. Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-andy8663-wechat-oa/snapshot"

Documentation

CLAWHUB

145,768 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
slug: wechat-oa
displayName: 微信公众号草稿箱管理工具
summary: 微信公众号草稿箱管理工具集,支持创建/更新/删除草稿、上传素材、生成封面图,基于官方API。
license: MIT
name: wechat-oa
description: WeChat Official Account draft management toolkit. Trigger words: 看看草稿箱/查看草稿/草稿列表/公众号草稿/创建草稿/新建草稿/发文章到公众号/推送文章/更新草稿/删除草稿/生成封面图/上传图片. Official API.
description_zh: 微信公众号草稿箱管理工具集。触发词(满足任一即触发):看看草稿箱/查看草稿/草稿列表/公众号草稿/创建草稿/新建草稿/发文章到公众号/推送文章/更新草稿/删除草稿/生成封面图/上传图片到公众号/上传图片到素材库/公众号素材列表/素材管理/删除素材/摘要生成/生成文章摘要。官方API。
version: "3.0.3"
author: Woody
email: [email protected]
wechat_mp: 技术定义未来
homepage: https://github.com/andy8663/wechat-oa
metadata:
  openclaw:
    emoji: "📝"
    category: "publishing"
    requires:
      bins: ["python3"]
    voice_commands:
      - "查看草稿箱"
      - "看看公众号草稿"
      - "创建一篇公众号文章"
      - "推送文章到公众号"
      - "生成封面图"
      - "上传图片到素材库"
      - "生成文章摘要"
---

# wechat-oa

微信公众号草稿箱管理工具集。基于官方微信 API。

WeChat Official Account draft management toolkit. Built on official WeChat APIs.

---

## ⚠️ 使用前必读 / MUST READ BEFORE USE

**创建或更新公众号文章前,AI 必须先阅读 `design.md` 排版规范。**

Before creating or updating any WeChat article, AI MUST read `design.md` layout specification first.

**涵盖内容 / Covers:**
- 容器宽度(文章 677px / 图文卡片 375px)
- 字体规范(clamp() 响应式字号)
- 配色规范(≤5 主体色,对比度 ≥4.5:1)
- 布局规范(Flex/Grid only,禁止 absolute/float)
- 标题规范(禁止重复主标题、header 标签、左边框装饰)
- 内容结构(扁平结构,有/无背景色的 padding 规则不同)
- CSS/HTML/JS 限制(公众号渲染器兼容性白名单)

📖 **完整规范见 `design.md`**

---

## 🚀 快速开始 / Quick Start

### 1. 安装 / Install

```bash
pip install wechat-oa
```

### 2. 配置凭证 / Configure Credentials

```bash
cp config.example.json config.json
# 编辑 config.json,填入 APP_ID 和 APP_SECRET
# Edit config.json, fill in APP_ID and APP_SECRET
```

### 3. 试试看 / Try It Out

```bash
# 查看草稿列表
wechat-oa list

# 创建新草稿
wechat-oa create article.md --digest "这是文章摘要"
```

---

## 📦 安装与配置 / Installation & Configuration

### 获取 AppID 和 AppSecret / Get AppID & AppSecret

1. 登录 [微信公众平台](https://mp.weixin.qq.com)
2. 进入 **设置与开发 → 基本设置**
3. 复制 **公众号 AppID** 和 **公众号 AppSecret**(如未设置需先启用)

### IP 白名单配置 / IP Whitelist Configuration

调用微信 API 前,必须将服务器 IP 加入白名单:

| 推送模式 | 需要加入白名单的 IP | 说明 |
|---------|------------------|------|
| `direct` | 本机出口 IP | 直连微信 API,配本机 IP |
| `hybrid` | 本机出口 IP | 优先直连,失败自动切中转 |
| `relay` | **服务器 IP** `120.79.2.44` | 通过中转服务器调用微信 API |

**配置步骤:**
1. 登录微信公众平台
2. 进入 **设置与开发 → 安全中心 → IP 白名单 → 点击「配置」**
3. 填入对应模式的 IP(多个 IP 用回车分隔)
4. 保存

> ⚠️ **不添加 IP 白名单会导致 API 调用失败!**

💡 **不方便配本机 IP 白名单?** 使用 `hybrid` 或 `relay` 模式,只需将服务器 IP `120.79.2.44` 加入白名单即可。

### 配置文件 / Config File

将 `config.example.json` 复制为 `config.json`,填入你的凭证:

> ⚠️ **注意**:`config.json` 必须使用标准 JSON 格式,**不要保留 `//` 注释**,否则会导致解析错误。

```json
{
  "default_account": "main",
  "current_account": "main",
  "PUSH_MODE": "hybrid",
  "WECHAT_OA_SERVER": "https://synergyinfo.tech",
  "WECHAT_OA_SERVER_KEY": "",
  "ENV": "prod",
  "accounts": {
    "main": {
      "name": "主公众号",
      "author": "你的名字",
      "voice_name": ["主号", "主公众号"],
      "APP_ID": "wx0000000000000000",
      "APP_SECRET": "00000000000000000000

README.md

# wechat-oa

**微信公众号草稿箱管理工具** · 基于官方微信 API,面向 AI Agent 的 Skill

A WeChat Official Account draft management toolkit built on the official WeChat API. Designed as a Skill for AI Agents.

---

## 功能 Features

- 📋 查看草稿列表 / List drafts
- ✏️ 创建新草稿(自动生成封面图)/ Create new drafts (auto cover generation)
- 🔄 更新已有草稿 / Update existing drafts
- 🗑️ 删除草稿 / Delete drafts
- 🖼️ 独立生成封面图预览 / Generate cover image preview
- 📦 素材库管理(上传/列表/删除/统计)/ Material library management
- 🔄 三种推送模式:直连 / 中转 / 混合 / Three push modes: direct / relay / hybrid

---

## 配套公众号 Companion Account

本工具由公众号 **「技术定义未来」** 配套开发。

- 公众号:技术定义未来
- 定位:AI 工具效率提升 + AI 商业化场景探索

---

## 快速开始 Getting Started

### 1. 安装 Install

```bash
pip install wechat-oa
```

### 2. 获取 AppID 和 AppSecret Get AppID & AppSecret

1. 登录 [微信公众平台](https://mp.weixin.qq.com)
2. 进入 **设置与开发 → 基本设置**
3. 复制 **AppID** 和 **AppSecret**(如未设置需先启用)

### 3. 配置 IP 白名单 Configure IP Whitelist

> ⚠️ **这一步非常重要!不配置 IP 白名单,直连模式所有 API 调用都会失败。**

微信官方 API 要求调用方 IP 必须在白名单中。根据你选择的推送模式(见下方),配置方式不同:

**直连模式 (direct) / 混合模式 (hybrid) 需要配置本机 IP:**

```bash
# 步骤 1:查看本机出口 IP
curl ifconfig.me

# 输出示例:120.79.2.44
```

```
步骤 2:登录微信公众平台
  → 设置与开发 → 安全中心 → IP 白名单 → 点击「配置」

步骤 3:将上一步获取的 IP 填入白名单
  → 多个 IP 用回车分隔
  → 保存
```

**中转模式 (relay) 需要配置服务器 IP:**

如果你使用中转模式,需要将 **中转服务器的公网 IP** 加入白名单(而不是你本机的 IP)。

```bash
# 查看中转服务器 IP(在中转服务器上执行)
curl ifconfig.me
```

> 💡 **不方便配 IP 白名单?** 使用 `hybrid` 或 `relay` 模式即可跳过本机 IP 配置。
> `hybrid` 模式会先尝试直连,IP 白名单失败后自动切换中转。

### 4. 配置凭证 Configure Credentials

```bash
cp config.example.json config.json
# 编辑 config.json,填入你的凭证
```

`config.json` 完整字段说明:

| 字段 | 必填 | 说明 |
|------|------|------|
| `APP_ID` | ✅ | 微信公众号 AppID |
| `APP_SECRET` | ✅ | 微信公众号 AppSecret |
| `author` | ✅ | 默认作者名 |
| `PUSH_MODE` | ❌ | 推送模式:`direct`(默认) / `relay` / `hybrid` |
| `WECHAT_OA_SERVER` | relay/hybrid 必填 | 中转服务器地址,如 `http://120.79.2.44` |
| `WECHAT_OA_SERVER_KEY` | relay/hybrid 必填 | 中转服务器 API Key(服务端分配) |
| `ENV` | ❌ | 环境:`prod`(默认)/ `dev`,影响中转服务器 API 路径 |

完整示例:

```json
{
  "APP_ID": "wx0000000000000000",
  "APP_SECRET": "00000000000000000000000000000000",
  "author": "你的名字",
  "PUSH_MODE": "hybrid",
  "WECHAT_OA_SERVER": "http://120.79.2.44",
  "WECHAT_OA_SERVER_KEY": "your-server-key-here",
  "ENV": "prod"
}
```

> ⚠️ `config.json` 包含凭证,**不要提交到 GitHub**!已在 `.gitignore` 中忽略。

---

## 推送模式详解 Push Modes

`config.json` 中 `PUSH_MODE` 支持三种模式,根据你的网络环境选择:

### 模式对比

| 模式 | 说明 | 需配 IP 白名单 | 适用场景 |
|------|------|:-:|----------|
| **direct** | 直连微信官方 API | ✅ 本机 IP | 服务器 IP 固定且可加入白名单 |
| **relay** | 通过公共中转服务器推送 | ❌ | 本机 IP 不固定,或无法配白名单 |
| **hybrid** | 优先 direct,失败自动切换 relay | 自动 | **推荐** — 兼顾速度与兼容性 |

```
direct 模式:
  本机 ──→ 微信官方 API
  (本机 IP 必须在白名单中)

relay 模式:
  本机 ──→ 中转服务器 ──→ 微信官方 API
  (中转服务器 IP 必须在白名单中)

hybrid 模式:
  本机 ──→ 直连微信 API(尝试)
    │
    └─ 失败(IP白名单) ──→ 中转服务器 ──→ 微信官方 API(自动切换)
```

### 各模式配置

#### direct(直连模式)

```json
{
  "PUSH_MODE": "direct"
}
```

- 无需额外配置
- 需要将 **本机出口 IP** 加入微信公众号的白名单
- 速度最快,最稳定

#### relay(中转模式)

```json
{
  "PUSH_MODE":

_meta.json

{
  "ownerId": "kn740js6sek7j1p87s4d75w3q584e5sa",
  "slug": "wechat-oa",
  "version": "3.0.3",
  "publishedAt": 1783866339133
}

references/wechat_api.md

# 微信公众号 API 参考

## 认证

所有接口都需要 `access_token`,有效期 **7200秒(约2小时)**,脚本自动缓存并刷新。

```
GET https://api.weixin.qq.com/cgi-bin/token
  ?grant_type=client_credential
  &appid={appid}
  &secret={appsecret}
```

返回:
```json
{
  "access_token": "xxx",
  "expires_in": 7200
}
```

---

## 上传封面图(永久素材)

```
POST https://api.weixin.qq.com/cgi-bin/material/add_material
  ?access_token={token}&type=image
Content-Type: multipart/form-data
```

参数:`media` = 图片文件(建议 900x383,JPEG/PNG,< 2MB)

返回:
```json
{
  "media_id": "xxx",
  "url": "https://mmbiz.qpic.cn/..."
}
```

> ⚠️ 需微信认证后才有永久素材权限。临时素材(有效期3天)无需认证,但草稿接口不支持临时 thumb_media_id。

---

## 创建草稿

```
POST https://api.weixin.qq.com/cgi-bin/draft/add?access_token={token}
Content-Type: application/json; charset=utf-8
```

请求体:
```json
{
  "articles": [
    {
      "title": "文章标题(不超过32个字)",
      "author": "作者名(不超过16个字)",
      "digest": "摘要(不超过128个字)",
      "content": "<!DOCTYPE html><html>...</html>",
      "thumb_media_id": "封面图 media_id",
      "content_source_url": "",
      "need_open_comment": 0,
      "only_fans_can_comment": 0
    }
  ]
}
```

返回:
```json
{ "media_id": "草稿media_id", "errcode": 0 }
```

常见错误:
- `45004` — digest 超过 128 个字(size out of limit)
- `40007` — 无效的 `thumb_media_id`(必须先上传封面图)
- `41006` — 缺少 `thumb_media_id`
- `40001` — access_token 无效或已过期

---

## 查询草稿

```
POST https://api.weixin.qq.com/cgi-bin/draft/batchget?access_token={token}
Content-Type: application/json
```

```json
{ "offset": 0, "count": 10, "no_content": 1 }
```

`no_content=1`:不返回正文内容(节省流量)

---

## 删除草稿

```
POST https://api.weixin.qq.com/cgi-bin/draft/delete?access_token={token}
Content-Type: application/json
```

```json
{ "media_id": "草稿media_id" }
```

---

## 权限要求

| 接口 | 权限 |
|------|------|
| 获取 access_token | 无特殊要求 |
| 上传永久素材 | 需微信认证 |
| 创建草稿 | 需微信认证 |
| 查询/删除草稿 | 需微信认证 |

---

## 正文图片处理

草稿接口的 `content` 字段中的图片处理:

1. 上传图片到微信素材库:`POST /cgi-bin/media/upload?type=image`
2. 获取返回的 `url`
3. 在 HTML 中使用:`<img src="https://mmbiz.qpic.cn/..." />`

微信编辑器会自动处理图片 CDN 加速。

CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [3.0.0] - 2026-07-05

### Changed
- **架构重构**:项目从单文件 2600+ 行代码重构为模块化包结构 `wechat_oa/`
- **转换逻辑外包**:MD→微信HTML 使用 `md2wxhtml` 库,HTML→微信HTML 使用 `premailer + bleach` 库
- **Token 管理增强**:新增 `TokenManager` 类,支持 access_token 智能缓存,减少 API 调用
- **路由模式统一**:新增 `@hybrid_route` 装饰器,消除 ~10 处重复的 direct/relay/hybrid 路由逻辑
- **命令行框架升级**:从自建命令解析改为 `click` 框架
- **摘要生成优化**:支持 Agent 驱动生成摘要(`--digest` 参数)+ 规则回退机制
- **版本号跃升到 3.0.0**:标记重大架构重构完成

### Added
- **新包结构**:`wechat_oa/core/`、`wechat_oa/convert/`、`wechat_oa/api/`、`wechat_oa/features/`、`wechat_oa/cli/`
- **`pyproject.toml`**:规范的依赖管理和包安装支持
- **测试套件**:`tests/` 目录包含 8 个单元测试,覆盖配置、转换、功能模块
- **`TokenManager`**:access_token 获取、缓存、自动刷新
- **字符单位计算**:`count_wechat_units()` 正确处理中文/英文/Emoji 混合计数
- **摘要验证**:`validate_digest()` 和 `truncate_digest()` 确保符合微信 API 限制

### Removed
- **去 AI 味功能**:`quaiwei_server.py` 及相关触发词
- **正文配图生成**:`generate_infographic.py`(非核心功能,硬编码 Windows 路径)
- **旧版主文件**:`wechat_push.py`、`relay_client.py`
- **旧版测试文件**:`test_author_truncate.py`、`test_encoding_fix.py`、`test_new_author_truncate.py`
- **内置 CSS**:`wechat_style.css`(转换逻辑外包后不再需要)
- **scripts/ 目录**:早期原型脚本,功能已覆盖

### Updated
- **SKILL.md**:清理触发词,添加详细的摘要生成规范,更新命令示例
- **config.example.json**:删除 `CLAUDE_API_KEY`、`ALIPAY_AI_PAY_SKILL_ID` 字段

## [2.0.0] - 2026-06-29

### Changed
- **版本号控制改为手动**:移除 workflow 中的 `--bump` 参数,版本号完全由 SKILL.md 控制
- **版本号跃升到 2.0.0**:标记 relay 模式核心功能修复完成

### Fixed
- **relay 模式 CSS 内联丢失**:`_draft_create_relay()` 和 `_draft_update_relay()` 现在正确传递 `<style>` 标签,`relay_client.py` 新增 `_inline_css()` 函数
- **relay 模式更新草稿失败(40007 invalid media_id)**:每次 update 强制生成新封面,`thumb_media_id` 正确传递
- **relay_client.py `update_draft` 函数签名**:新增 `thumb_media_id` 参数,支持直接使用已有封面 ID

---

## [1.5.1] - 2026-06-28

### Fixed
- **digest 长度修正**:120 → 128 字(与微信官方文档一致),按"字"混合计数(中文=1字,英文=0.5字)
- **author 长度修正**:新增 16 字上限截断(中文=1字,英文=0.5字混合计数)
- **title 长度修正**:新增 32 字上限截断(中文=1字,英文=0.5字混合计数)
- **封图生成失败不再静默跳过**:直接报错并提示解决方法,修复字体路径跨平台支持(Windows/macOS/Linux)
- **服务端 create_draft 增加 thumb_b64 空值校验**:清晰报错而非微信 API 神秘错误码

## [1.5.0] - 2026-06-27

### Added
- **HTTP 402 AI 付协议支持**:客户端支持标准 HTTP 402 AI 付协议(push_article → alipay-bot → finish_push)
- **Hybrid 混合模式**:direct 优先,IP 白名单失败自动切换 relay
- **Relay/Hybrid 模式支持**:为 7 个功能添加 relay/hybrid 模式支持
- **relay_client 增强**:添加 `_put` 函数,支持 PUT 方法

### Changed
- **统一命名风格**:`RELAY_SERVER` → `WECHAT_OA_SERVER` 统一命名
- **update_draft 改用 PUT 方法**:符合微信 API 规范
- **list_materials 移除 keyword 参数**:简化接口

### Fixed
- **digest 长度修复**:64 bytes 限制处理
- **draft_find 返回格式统一**:标准化返回数据结构

## [1.4.0] - 2026-04-15

### Added
- **正文配图自动生成**:`generate_infographic.py` 支持生成流程图、对比图、时间线、文字卡片、统计图
- **relay push 模式**:支持通过 relay 服务器推送文章
- 新增 `infographic` 命令到 SKILL.md

### Changed
- **自动去除外层容器卡片样式**:避免正文被大
Github ReposUpdated 7h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/andy8663/skills/wechat-oa",
      "sourceUrl": "https://clawhub.ai/andy8663/skills/wechat-oa",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T23:13:35.786Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-andy8663-wechat-oa/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-andy8663-wechat-oa/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-09T23:13:35.786Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.9K downloads",
      "href": "https://clawhub.ai/andy8663/wechat-oa",
      "sourceUrl": "https://clawhub.ai/andy8663/wechat-oa",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T23:13:35.786Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "3.0.3",
      "href": "https://clawhub.ai/andy8663/wechat-oa",
      "sourceUrl": "https://clawhub.ai/andy8663/wechat-oa",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-07-12T14:25:39.133Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-andy8663-wechat-oa/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-andy8663-wechat-oa/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 3.0.3",
      "description": "Auto update from GitHub",
      "href": "https://clawhub.ai/andy8663/wechat-oa",
      "sourceUrl": "https://clawhub.ai/andy8663/wechat-oa",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-07-12T14:25:39.133Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 10, 2026.

Sponsored

Ads related to Wechat Oa and adjacent AI workflows.