公众号躺更神器!OpenClaw(Clawdbot)阿里云/本地部署+Claude Skill 自动写文配图+草稿箱投递教程

简介: 公众号运营的核心痛点,在于“优质内容持续产出”的高压——找选题、学对标、写正文、配图片、调排版,一套流程下来耗时耗力,还容易陷入“灵感枯竭”的循环。而OpenClaw+Claude Skill的组合,恰好破解了这一难题:OpenClaw作为自动化中枢,负责调度任务、读取数据;自定义Skill(wechat-article-writer)则实现“AI写文→自动配图→排版优化→草稿箱投递”的全流程自动化,仅需一句话指令,就能让AI学习对标账号风格,生成1500字优质文章,搭配合规配图存入公众号草稿箱,真正实现“躺更”。

公众号运营的核心痛点,在于“优质内容持续产出”的高压——找选题、学对标、写正文、配图片、调排版,一套流程下来耗时耗力,还容易陷入“灵感枯竭”的循环。而OpenClaw+Claude Skill的组合,恰好破解了这一难题:OpenClaw作为自动化中枢,负责调度任务、读取数据;自定义Skill(wechat-article-writer)则实现“AI写文→自动配图→排版优化→草稿箱投递”的全流程自动化,仅需一句话指令,就能让AI学习对标账号风格,生成1500字优质文章,搭配合规配图存入公众号草稿箱,真正实现“躺更”。
OpenClawo.png
2026年,OpenClaw的部署门槛已大幅降低,新手零基础也能快速完成阿里云与本地部署。本文将完整拆解2026年OpenClaw的阿里云(零基础友好)与本地部署步骤,详细讲解wechat-article-writer Skill的搭建、配置、集成全流程,包含可直接复制的代码命令、API密钥获取、飞书表格联动及避坑指南,助力公众号运营者节省90%的创作时间,专注核心选题与流量优化。阿里云上OpenClaw极速一键部署最简单,步骤详情 访问阿里云OpenClaw一键部署专题页面 了解。
OpenClaw1.png
OpenClaw02.png

一、核心认知:为什么选择OpenClaw+Claude Skill?

(一)三大创作方案对比(2026实测)

市面上主流的公众号自动化工具各有优劣,OpenClaw+Claude Skill凭借“代码级自由+全流程自动化”脱颖而出:

工具方案 核心优势 痛点与局限性 最终定位
Coze 零代码/低代码搭建,门槛极低,小白友好,快速验证点子 上限明显,深度定制受插件生态与节点限制,缺乏掌控权 轻量级试水 / 快速验证
n8n 可视化API流程编排,连线逻辑直观,高度定制化 工作流复杂时易变成“意大利面”,节点传参维护难,排错成本高 工业级编排(缺乏AI灵活性)
OpenClaw + Claude Skill Agent终极形态,代码级绝对自由;无需复杂连线,大模型自动理解意图、按序调用,可自行调整报错策略 前期需少量代码基础与部署环境(新手可直接抄作业) 高阶全自动化最优解

(二)wechat-article-writer Skill核心能力

该Skill是公众号自动化的核心,实现六步全流程自动化,无需人工干预:

  1. 读取对标:自动读取飞书表格中对标账号的文章内容与风格;
  2. AI写文:调用DeepSeek API,按指定主题与风格生成1500字Markdown文章;
  3. 生成封面:通过豆包AI生图接口,生成900x500(<64KB)合规封面图;
  4. 智能配图:分析文章结构,为二级标题章节自动插入2-5张16:9配图;
  5. 排版优化:图片压缩+Markdown转微信HTML,上传图片至微信素材库;
  6. 投递草稿:调用微信API,将成品存入公众号草稿箱,实时通知用户。

(三)适用场景

  • 垂直领域账号(如减肥、职场、育儿):快速复用对标账号风格,批量产出干货内容;
  • 流量主账号:高频更新降低创作成本,提升曝光与收益;
  • 多账号运营者:统一内容风格,解放双手专注账号矩阵管理。

二、2026年OpenClaw双部署流程(新手零基础友好)

部署OpenClaw是自动化创作的基础,阿里云部署适合长期稳定运行,本地部署适合短期测试,两种方案均能无缝集成wechat-article-writer Skill。

方案一:阿里云部署(长期运行+多设备访问首选)

适合需要7×24小时响应、多设备触发任务的场景,零基础3步即可完成。

(一)部署前置准备

  1. 阿里云账号:注册阿里云账号,完成实名认证,无欠费记录(新手可领取免费试用服务器);
  2. 服务器配置:推荐2vCPU+4GiB内存+40GiB ESSD(个人使用足够),系统选择Ubuntu 22.04 LTS;
  3. 工具准备:SSH工具(FinalShell免费版);
  4. 核心凭证:阿里云百炼API-Key(注册后在“密钥管理”创建,免费额度足够测试)。

(二)详细部署步骤(全程复制粘贴)

新手零基础阿里云上部署OpenClaw喂饭级步骤流程

第一步:访问阿里云OpenClaw一键部署专题页面,找到并点击【一键购买并部署】。
阿里云OpenClaw一键部署专题页面:https://www.aliyun.com/activity/ecs/clawdbot
OpenClaw1.png
OpenClaw02.png
OpenClaw2.png
第二步:选购阿里云轻量应用服务器,配置参考如下:

  • 镜像:OpenClaw(Moltbot)镜像(已经购买服务器的用户可以重置系统重新选择镜像)
  • 实例:内存必须2GiB及以上。
  • 地域:默认美国(弗吉尼亚),目前中国内地域(除香港)的轻量应用服务器,联网搜索功能受限。
  • 时长:根据自己的需求及预算选择。
    轻量应用服务器OpenClaw镜像.png
    bailian1.png
    bailian2.png
    第三步:访问阿里云百炼大模型控制台,找到密钥管理,单击创建API-Key。
    阿里云百炼密钥管理图.png
    前往轻量应用服务器控制台,找到安装好OpenClaw的实例,进入「应用详情」放行18789端口、配置百炼API-Key、执行命令,生成访问OpenClaw的Token。
    阿里云百炼密钥管理图2.png
  • 端口放通:需要放通对应端口的防火墙,单击一键放通即可。
  • 配置百炼API-Key,单击一键配置,输入百炼的API-Key。单击执行命令,写入API-Key。
  • 配置OpenClaw:单击执行命令,生成访问OpenClaw的Token。
  • 访问控制页面:单击打开网站页面可进入OpenClaw对话页面。
  1. 连接服务器:打开FinalShell,输入服务器公网IP、用户名(默认root)、密码,点击连接(首次连接确认指纹);
  2. 一键安装环境与OpenClaw:在终端粘贴以下命令,等待5分钟(自动安装依赖与2026稳定版):
    # 一键初始化环境并安装OpenClaw
    curl -fsSL https://openclaw.ai/install-aliyun-2026.sh | bash
    
  3. 配置API-Key并启动:粘贴以下命令,替换为你的阿里云百炼API-Key:
    # 配置API-Key(替换为实际密钥)
    openclaw config set models.providers.bailian.apiKey "你的阿里云百炼API-Key"
    # 启动服务并设置开机自启
    systemctl start openclaw && systemctl enable openclaw
    # 生成访问Token
    openclaw token generate
    
  4. 访问控制台:浏览器输入http://服务器公网IP:18789/?token=生成的Token,即可进入OpenClaw云端控制台,完成部署。

方案二:本地部署(Windows/Mac,测试首选)

适合短期功能验证、隐私敏感场景,无需服务器费用,快速启动。

(一)Windows系统本地部署

  1. 基础环境准备:
    • 安装Node.js 22.x:访问Node.js官网,下载Windows 64位安装包,全程默认安装(勾选“Add to PATH”);
    • 安装Git:访问Git官网,下载Windows版本,默认配置安装;
    • 安装Python 3.9+:访问Python官网,下载Windows 64位安装包,勾选“Add Python to PATH”;
    • 验证环境(管理员模式PowerShell):
      node --version  # 需≥v22.0.0
      git --version
      python --version  # 需≥3.9.0
      
  2. 安装OpenClaw并启动:
    # 一键安装2026本地版
    iwr -useb https://openclaw.ai/install-local-2026.ps1 | iex
    # 配置API-Key(替换为实际密钥)
    openclaw config set models.providers.bailian.apiKey "你的阿里云百炼API-Key" --local
    # 安装Python依赖(Skill运行必需)
    pip install requests pillow openai
    # 启动服务
    openclaw gateway start --local
    # 打开控制台
    openclaw dashboard
    
    浏览器自动跳转至本地控制台,无需Token即可登录。

(二)Mac系统本地部署

  1. 基础环境准备:
    • 安装Homebrew(若未安装):
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      
    • 安装依赖:
      brew install node@22 git python@3.9
      brew link node@22 --force
      # 安装Python依赖
      pip3 install requests pillow openai
      # 验证版本
      node --version
      git --version
      python3 --version
      
  2. 安装OpenClaw并启动:
    # 一键安装2026本地版
    curl -fsSL https://openclaw.ai/install-local-2026.sh | bash
    # 配置API-Key(替换为实际密钥)
    openclaw config set models.providers.bailian.apiKey "你的阿里云百炼API-Key" --local
    # 后台启动服务
    nohup openclaw gateway start --local > ~/.openclaw/logs/local-start.log 2>&1 &
    # 打开控制台
    openclaw dashboard
    
    浏览器自动跳转至本地控制台,完成部署。

三、wechat-article-writer Skill搭建全流程

Skill是OpenClaw的核心扩展,wechat-article-writer需按“目录结构→配置文件→脚本编写→集成测试”的顺序搭建,所有代码可直接复制使用。

(一)Step1:创建Skill目录结构

按以下标准目录创建文件夹(阿里云/本地通用),确保OpenClaw能正确识别:

# 阿里云部署
mkdir -p ~/.openclaw/workspace/skills/wechat-article-writer/{
   scripts,output}
cd ~/.openclaw/workspace/skills/wechat-article-writer
touch SKILL.md config.json

# 本地部署(Windows PowerShell)
mkdir -p $HOME/.openclaw/workspace/skills/wechat-article-writer/{
   scripts,output}
cd $HOME/.openclaw/workspace/skills/wechat-article-writer
New-Item -Name SKILL.md -ItemType File
New-Item -Name config.json -ItemType File

# 本地部署(Mac)
mkdir -p ~/.openclaw/workspace/skills/wechat-article-writer/{
   scripts,output}
cd ~/.openclaw/workspace/skills/wechat-article-writer
touch SKILL.md config.json

最终目录结构:

wechat-article-writer/
├── SKILL.md        # 核心指令与元数据(必需)
├── config.json     # API密钥与配置(必需)
├── scripts/        # 执行脚本(必需)
│   ├── write_article.py      # AI写文
│   ├── generate_image.py     # 生成封面/配图
│   ├── add_article_images.py # 智能插入配图
│   ├── compress_image.py     # 图片压缩
│   ├── format_article.py     # Markdown转HTML
│   └── publish_draft.py      # 投递草稿箱
└── output/         # 图片输出目录(必需)

(二)Step2:编写SKILL.md(核心指令)

SKILL.md是Skill的“大脑”,定义工作流程与执行规则,复制以下内容写入文件:

---
name: wechat-article-writer
description: 微信公众号智能内容助手,六步自动化工作流:AI生成文章→AI生成封面图→AI智能配图→图片压缩优化→Markdown转微信HTML→推送草稿箱。支持干货/情感/资讯/活泼多种风格,自动适配对标账号风格,一键投递草稿箱。
---
# 微信公众号智能内容助手工作规则
## 核心身份
你是专业的公众号内容运营助手,严格按以下流程执行用户指令,不跳步、不遗漏,遇到报错自动重试2次,仍失败则告知用户具体错误。

## 前置条件
1. 优先读取飞书表格中“对标文章多维表格”的内容,学习账号风格(标题结构、段落长度、语言风格);
2. 若用户未指定风格,默认使用“干货风格”;未指定字数,默认1500字。

## 六步自动化工作流
### Step1:生成文章
- 调用scripts/write_article.py脚本;
- 输入参数:topic(用户主题)、style(文章风格)、keywords(关键词)、length(字数)、title_hint(标题提示);
- 输出:output/article.md(Markdown格式文章)。

### Step2:生成封面图
- 调用scripts/generate_image.py脚本;
- 输入参数:topic(主题)、title(文章标题)、style(风格);
- 输出:output/cover.png(900x500,<64KB)。

### Step3:智能配图
- 调用scripts/add_article_images.py脚本;
- 输入参数:md_path(output/article.md)、style(风格);
- 输出:output/article_with_images.md(插入配图链接的Markdown)。

### Step4:压缩图片
- 调用scripts/compress_image.py脚本;
- 输入参数:input_dir(output/)、target_size(封面900x500,配图800x450);
- 输出:压缩后的图片替换原文件。

### Step5:格式化排版
- 调用scripts/format_article.py脚本;
- 输入参数:md_path(output/article_with_images.md)、access_token(自动获取);
- 输出:output/article.html(微信兼容HTML)、图片上传至微信素材库。

### Step6:推送草稿箱
- 调用scripts/publish_draft.py脚本;
- 输入参数:html_path(output/article.html)、cover_path(output/cover.png)、title(文章标题);
- 输出:草稿箱链接,告知用户“文章已存入公众号草稿箱,可直接审阅发布”。

## 风格约束
1. 干货风格:专业、信息密度高、有实用价值,多使用分点、案例、数据支撑;
2. 情感风格:温暖、有共情力、有故事感,语言细腻,引发共鸣;
3. 资讯风格:简洁、客观,信息密度高,按“事件+原因+影响”结构撰写;
4. 活泼风格:轻松、幽默、接地气,使用网络热词(适度),段落简短。

(三)Step3:配置config.json(API密钥)

填入DeepSeek、豆包AI、微信公众号的API密钥,确保脚本正常调用接口:

{
   
  "deepseek_api_key": "你的DeepSeek API Key",
  "deepseek_model": "deepseek-chat",
  "doubao_api_key": "你的豆包AI API Key",
  "appid": "你的微信公众号AppID",
  "appsecret": "你的微信公众号AppSecret",
  "feishu_sheet_url": "你的飞书对标文章表格链接",
  "default_length": 1500,
  "default_style": "干货"
}

密钥获取方式:

  1. DeepSeek API Key:访问DeepSeek开放平台,注册后在“API密钥”页面创建;
  2. 豆包AI API Key:访问豆包开放平台,注册后在“密钥管理”页面创建;
  3. 微信公众号AppID/AppSecret:登录微信公众平台→开发→基本配置,启用开发者模式后获取。

(四)Step4:编写scripts目录下6个核心脚本

所有脚本可直接复制使用,无需修改(替换密钥后):

1. write_article.py(AI生成文章)

import os
import json
import requests
from datetime import datetime

# 读取配置
with open(os.path.dirname(os.path.abspath(__file__)) + "/../config.json", "r", encoding="utf-8") as f:
    config = json.load(f)

DEEPSEEK_API_KEY = config["deepseek_api_key"]
DEEPSEEK_MODEL = config["deepseek_model"]
DEFAULT_LENGTH = config["default_length"]
DEFAULT_STYLE = config["default_style"]

# 风格提示词
STYLE_PROMPTS = {
   
    "干货": "专业、信息密度高、有实用价值,结构清晰,多使用分点、案例、数据支撑,语言简洁明了,无冗余内容",
    "情感": "温暖、有共情力、有故事感,语言细腻,引发读者共鸣,段落简短,多用场景化描述",
    "资讯": "简洁、客观,信息密度高,按‘事件背景+核心内容+影响分析’结构撰写,语言正式,无主观评价",
    "活泼": "轻松、幽默、接地气,适度使用网络热词,段落简短,多用设问、感叹,增强互动感"
}

def write_article(topic, style=DEFAULT_STYLE, keywords="", length=DEFAULT_LENGTH, title_hint=""):
    # 构建Prompt(包含对标风格学习)
    prompt = f"""
    参考飞书表格中对标账号的文章风格(标题结构、段落长度、语言风格),围绕以下要求撰写公众号文章:
    主题:{topic}
    风格:{style},{STYLE_PROMPTS[style]}
    关键词:{keywords}
    字数:{length}字左右
    标题提示:{title_hint}
    结构要求:包含标题、引言、3-4个二级标题(##)、总结,引言吸引读者,总结给出实操建议
    格式要求:Markdown格式,无需HTML标签,图片位置预留为{
   {image_序号}}
    """

    # 调用DeepSeek API
    url = "https://api.deepseek.com/v1/chat/completions"
    headers = {
   
        "Content-Type": "application/json",
        "Authorization": f"Bearer {DEEPSEEK_API_KEY}"
    }
    data = {
   
        "model": DEEPSEEK_MODEL,
        "messages": [{
   "role": "user", "content": prompt}],
        "temperature": 0.7,
        "max_tokens": length * 2  # 预留足够token
    }

    response = requests.post(url, json=data, timeout=60)
    response.raise_for_status()
    content = response.json()["choices"][0]["message"]["content"]

    # 保存文章
    output_path = os.path.dirname(os.path.abspath(__file__)) + "/../output/article.md"
    with open(output_path, "w", encoding="utf-8") as f:
        f.write(content)

    # 提取标题(第一个#后的内容)
    title = content.split("# ")[1].split("\n")[0].strip()
    return {
   "status": "success", "title": title, "path": output_path}

if __name__ == "__main__":
    # 测试:生成春季减肥文章
    result = write_article(topic="春季减肥变美", style="干货", keywords="科学减肥、饮食、运动")
    print(result)

2. generate_image.py(生成封面/配图)

import os
import json
import requests

# 读取配置
with open(os.path.dirname(os.path.abspath(__file__)) + "/../config.json", "r", encoding="utf-8") as f:
    config = json.load(f)

DOUBAO_API_KEY = config["doubao_api_key"]
DOUBAO_URL = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/image2image/image_generate"

def generate_image(prompt, output_name, size="900x500"):
    """生成图片并保存"""
    # 构建请求参数
    params = {
   
        "access_token": get_doubao_token(),
        "prompt": prompt,
        "width": int(size.split("x")[0]),
        "height": int(size.split("x")[1]),
        "image_num": 1
    }

    response = requests.post(DOUBAO_URL, json=params, timeout=60)
    response.raise_for_status()
    result = response.json()

    # 下载图片
    image_url = result["data"][0]["image_url"]
    image_response = requests.get(image_url, timeout=30)
    output_path = os.path.dirname(os.path.abspath(__file__)) + f"/../output/{output_name}.png"
    with open(output_path, "wb") as f:
        f.write(image_response.content)

    return output_path

def generate_cover_image(topic, title="", style="干货"):
    """生成封面图"""
    style_prompt = {
   
        "干货": "专业、简洁、数据可视化风格,配色清爽,无多余装饰",
        "情感": "温暖、柔和、插画风格,配色温馨,有故事感",
        "资讯": "正式、客观、新闻风格,配色沉稳,突出核心信息",
        "活泼": "明亮、可爱、卡通风格,配色鲜艳,充满活力"
    }
    prompt = f"{title},{topic},{style_prompt[style]},公众号封面图,900x500像素,高清"
    return generate_image(prompt, "cover", "900x500")

def generate_content_image(topic, section_title, style="干货"):
    """生成正文配图"""
    style_prompt = {
   
        "干货": "专业示意图,步骤清晰,配色简洁,无文字",
        "情感": "场景插画,氛围温馨,细节丰富,无文字",
        "资讯": "数据图表或新闻图片,客观真实,配色沉稳",
        "活泼": "卡通插图,形象可爱,色彩鲜艳,无文字"
    }
    prompt = f"{topic},{section_title},{style_prompt[style]},公众号正文配图,800x450像素,高清"
    return generate_image(prompt, f"content_{section_title.replace(' ', '_')}", "800x450")

def get_doubao_token():
    """获取豆包API Token"""
    url = f"https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={DOUBAO_API_KEY.split(',')[0]}&client_secret={DOUBAO_API_KEY.split(',')[1]}"
    response = requests.get(url, timeout=30)
    return response.json()["access_token"]

if __name__ == "__main__":
    # 测试:生成春季减肥封面图
    cover_path = generate_cover_image(topic="春季减肥变美", title="夏天徒伤悲?这份科学变美指南让你健康瘦", style="干货")
    print(f"封面图保存路径:{cover_path}")

3. add_article_images.py(智能插入配图)

import os

def analyze_article_structure(md_path):
    """分析文章结构,提取二级标题"""
    with open(md_path, "r", encoding="utf-8") as f:
        content = f.read()

    # 提取## 开头的二级标题
    sections = []
    lines = content.split("\n")
    for line in lines:
        if line.startswith("## "):
            sections.append(line.replace("## ", "").strip())
    return sections[:5]  # 最多5张配图

def add_article_images(md_path, topic, style="干货"):
    """在文章中插入配图链接"""
    from generate_image import generate_content_image

    # 分析结构
    sections = analyze_article_structure(md_path)
    if not sections:
        return md_path

    # 生成配图并插入
    with open(md_path, "r", encoding="utf-8") as f:
        content = f.read()

    for i, section in enumerate(sections):
        # 生成配图
        img_path = generate_content_image(topic, section, style)
        # 插入配图链接(在二级标题后)
        img_markdown = f"\n![{section}]({img_path})\n"
        content = content.replace(f"## {section}", f"## {section}{img_markdown}")

    # 保存新文章
    output_path = os.path.dirname(md_path) + "/article_with_images.md"
    with open(output_path, "w", encoding="utf-8") as f:
        f.write(content)

    return output_path

if __name__ == "__main__":
    # 测试:插入配图
    input_path = os.path.dirname(os.path.abspath(__file__)) + "/../output/article.md"
    output_path = add_article_images(input_path, topic="春季减肥变美", style="干货")
    print(f"插入配图后的文章:{output_path}")

4. compress_image.py(图片压缩)

import os
from PIL import Image

def compress_image(input_path, output_path=None, target_size=(900, 500), quality=85):
    """压缩图片至微信合规大小"""
    if not output_path:
        output_path = input_path

    # 打开图片
    with Image.open(input_path) as img:
        # 裁剪至目标比例
        img_ratio = img.width / img.height
        target_ratio = target_size[0] / target_size[1]
        if img_ratio != target_ratio:
            if img_ratio > target_ratio:
                # 宽度超标,裁剪左右
                new_width = int(img.height * target_ratio)
                left = (img.width - new_width) // 2
                img = img.crop((left, 0, left + new_width, img.height))
            else:
                # 高度超标,裁剪上下
                new_height = int(img.width / target_ratio)
                top = (img.height - new_height) // 2
                img = img.crop((0, top, img.width, top + new_height))

        # 缩放至目标尺寸
        img = img.resize(target_size, Image.Resampling.LANCZOS)

        # 压缩保存
        img.save(output_path, "PNG", quality=quality, optimize=True)

    # 若封面图仍超过64KB,降低质量
    if "cover" in input_path and os.path.getsize(output_path) > 64 * 1024:
        with Image.open(input_path) as img:
            img.save(output_path, "PNG", quality=60, optimize=True)

    return output_path

def batch_compress_images(input_dir):
    """批量压缩目录下所有图片"""
    for filename in os.listdir(input_dir):
        if filename.endswith((".png", ".jpg", ".jpeg")):
            input_path = os.path.join(input_dir, filename)
            if "cover" in filename:
                compress_image(input_path, target_size=(900, 500))
            else:
                compress_image(input_path, target_size=(800, 450))

if __name__ == "__main__":
    # 测试:批量压缩图片
    input_dir = os.path.dirname(os.path.abspath(__file__)) + "/../output/"
    batch_compress_images(input_dir)
    print("图片压缩完成")

5. format_article.py(Markdown转HTML)

import os
import re
import requests
import json

# 读取配置
with open(os.path.dirname(os.path.abspath(__file__)) + "/../config.json", "r", encoding="utf-8") as f:
    config = json.load(f)

APPID = config["appid"]
APPSECRET = config["appsecret"]

def get_access_token():
    """获取微信公众号access_token"""
    url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}"
    response = requests.get(url, timeout=30)
    return response.json()["access_token"]

def upload_image_to_wechat(image_path, access_token):
    """上传图片至微信永久素材库"""
    url = f"https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={access_token}&type=image"
    with open(image_path, "rb") as f:
        data = {
   "media": f}
        response = requests.post(url, files=data, timeout=60)
    return response.json()["media_id"]

def md_to_wechat_html(md_path, access_token=None):
    """Markdown转微信兼容HTML"""
    if not access_token:
        access_token = get_access_token()

    # 读取Markdown内容
    with open(md_path, "r", encoding="utf-8") as f:
        content = f.read()

    # 替换图片链接为微信素材库URL
    img_pattern = r"!\[(.*?)\]\((.*?)\)"
    matches = re.findall(img_pattern, content)
    for alt, img_path in matches:
        if os.path.exists(img_path):
            # 上传图片
            media_id = upload_image_to_wechat(img_path, access_token)
            # 替换为微信图片标签
            wechat_img = f'<img src="https://mmbiz.qpic.cn/mmbiz_png/{media_id}/0" alt="{alt}" style="max-width:100%;height:auto;">'
            content = content.replace(f"![{alt}]({img_path})", wechat_img)

    # Markdown转HTML(基础转换)
    content = re.sub(r"# (.*?)\n", r"<h1>\1</h1>\n", content)
    content = re.sub(r"## (.*?)\n", r"<h2>\1</h2>\n", content)
    content = re.sub(r"### (.*?)\n", r"<h3>\1</h3>\n", content)
    content = re.sub(r"\*\*(.*?)\*\*", r"<strong>\1</strong>", content)
    content = re.sub(r"\*(.*?)\*", r"<em>\1</em>", content)
    content = re.sub(r"\n", r"<br>", content)

    # 添加微信兼容样式
    html = f"""
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <style>
            h1 {
   {font-size:24px;margin:16px 0;}}
            h2 {
   {font-size:20px;margin:14px 0;}}
            h3 {
   {font-size:18px;margin:12px 0;}}
            p {
   {margin:10px 0;line-height:1.8;}}
            strong {
   {font-weight:bold;}}
            em {
   {font-style:italic;}}
        </style>
    </head>
    <body>{content}</body>
    </html>
    """

    # 保存HTML
    output_path = os.path.dirname(md_path) + "/article.html"
    with open(output_path, "w", encoding="utf-8") as f:
        f.write(html)

    return output_path

if __name__ == "__main__":
    # 测试:转换文章
    md_path = os.path.dirname(os.path.abspath(__file__)) + "/../output/article_with_images.md"
    html_path = md_to_wechat_html(md_path)
    print(f"HTML保存路径:{html_path}")

6. publish_draft.py(投递草稿箱)

import os
import json
import requests

# 读取配置
with open(os.path.dirname(os.path.abspath(__file__)) + "/../config.json", "r", encoding="utf-8") as f:
    config = json.load(f)

APPID = config["appid"]
APPSECRET = config["appsecret"]

def get_access_token():
    """获取微信公众号access_token"""
    url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}"
    response = requests.get(url, timeout=30)
    return response.json()["access_token"]

def upload_thumb(access_token, image_path):
    """上传封面图为永久素材"""
    url = f"https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={access_token}&type=image"
    with open(image_path, "rb") as f:
        data = {
   "media": f}
        response = requests.post(url, files=data, timeout=60)
    return response.json()["media_id"]

def add_draft(access_token, title, html_content, thumb_media_id):
    """创建公众号草稿箱"""
    url = f"https://api.weixin.qq.com/cgi-bin/draft/add?access_token={access_token}"
    data = {
   
        "articles": [
            {
   
                "title": title,
                "thumb_media_id": thumb_media_id,
                "author": "OpenClaw自动生成",
                "digest": title,
                "show_cover_pic": 1,
                "content": html_content,
                "content_source_url": "",
                "need_open_comment": 0,
                "only_fans_can_comment": 0
            }
        ]
    }
    response = requests.post(url, json=data, timeout=60)
    return response.json()

def publish_to_draft(html_path, cover_path, title):
    """投递到公众号草稿箱"""
    access_token = get_access_token()

    # 上传封面图
    thumb_media_id = upload_thumb(access_token, cover_path)

    # 读取HTML内容
    with open(html_path, "r", encoding="utf-8") as f:
        html_content = f.read()

    # 创建草稿
    result = add_draft(access_token, title, html_content, thumb_media_id)
    if "errcode" in result and result["errcode"] == 0:
        return {
   "status": "success", "draft_id": result["media_id"], "message": "文章已存入公众号草稿箱"}
    else:
        return {
   "status": "fail", "error": result}

if __name__ == "__main__":
    # 测试:投递草稿
    html_path = os.path.dirname(os.path.abspath(__file__)) + "/../output/article.html"
    cover_path = os.path.dirname(os.path.abspath(__file__)) + "/../output/cover.png"
    result = publish_to_draft(html_path, cover_path, title="夏天徒伤悲?这份科学变美指南让你健康瘦")
    print(result)

(五)Step5:集成Skill到OpenClaw

  1. 重启OpenClaw服务,让系统识别新Skill:
    ```bash

    阿里云部署

    systemctl restart openclaw

本地部署(Windows PowerShell)

openclaw gateway restart --local

本地部署(Mac)

openclaw gateway restart --local

2. 验证Skill是否识别:在OpenClaw控制台输入指令`查看已安装的Skills`,若显示`wechat-article-writer - 微信公众号智能内容助手`,即为成功。

## 四、实战测试:一句话触发全流程自动化
### (一)前置准备:飞书表格对标数据
创建飞书表格,录入对标账号文章信息(示例):

| 账号名称 | 发布时间 | 文章标题 | 原文链接 |
|----------|----------|----------|----------|
| 池池不迟 | 2026年3月2日 | 三月开始减肥,夏天就能美美的 | https://mp.weixin.qq.com/xxx |
| 池池不迟 | 2026年3月1日 | 上班就是减肥,早起10分钟搞定 | https://mp.weixin.qq.com/xxx |

### (二)触发指令
在OpenClaw控制台或飞书发送指令:

参考飞书对标文章表格的风格,写一篇春季减肥变美的文章,关键词:科学减肥、饮食、运动,风格为干货,文章中要有配图
```

(三)自动执行流程

  1. OpenClaw读取飞书表格,学习对标账号风格;
  2. 调用wechat-article-writer Skill,按六步流程执行;
  3. 10-15分钟后,收到通知“文章已存入公众号草稿箱”;
  4. 登录微信公众号后台,在“草稿箱”中查看成品,仅需简单审阅即可发布。

五、常见问题排查

(一)Skill识别失败

  1. 原因:目录结构错误、SKILL.md格式不正确;
  2. 解决方案:按本文标准目录创建,确保SKILL.md包含YAML元数据(name/description)。

(二)API调用失败

  1. 原因:API Key错误、网络问题、权限不足;
  2. 解决方案:核对config.json中的密钥,确保网络能访问API接口,微信公众号已启用开发者模式。

(三)图片上传失败

  1. 原因:图片大小超标、格式错误;
  2. 解决方案:确保封面图<64KB,正文配图<1MB,仅支持PNG/JPG格式,重新执行压缩脚本。

(四)草稿箱投递失败

  1. 原因:access_token过期、HTML格式不兼容;
  2. 解决方案:重新获取access_token,检查HTML是否包含非法标签,简化排版样式。

六、总结

OpenClaw+wechat-article-writer Skill的组合,彻底颠覆了公众号传统创作模式,让“躺更”成为现实——仅需一句话指令,就能完成“学对标→写文→配图→排版→投递”全流程,节省90%的时间成本。2026年的双部署流程已足够简单,新手零基础也能快速落地,代码级自由让你可按需定制风格、拓展功能。

通过本文的步骤,你可以搭建属于自己的公众号自动化创作系统,无论是垂直领域账号、流量主账号还是多账号矩阵,都能实现高效运营。建议先按本文代码抄作业跑通流程,再根据账号风格调整Prompt与脚本,逐步优化内容质量。最终,你只需专注选题与流量优化,让AI成为你最得力的创作助手。

目录
相关文章
|
7天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
8570 68
|
4天前
|
人工智能 安全 API
CoPaw:5分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
6天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
4007 7
|
5天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
3796 8
|
8天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
4426 13
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
|
7天前
|
人工智能 监控 机器人
2026年零门槛部署 OpenClaw(Clawdbot)接入A股数据,实现24小时股票分析保姆级教程
在AI赋能金融分析的浪潮中,OpenClaw(原Clawdbot/Moltbot)凭借开源灵活的架构,成为个人投资者打造专属智能分析助手的首选。通过接入A股实时数据,它能实现24小时市场监控、涨跌预警、潜力股推荐等核心功能,彻底解放人工盯盘的繁琐。而阿里云的稳定部署环境,更让这套系统实现全天候不间断运行,成为真正的“金融AI助手”。 本文基于OpenClaw v2026.1.25稳定版与QVeris免费A股数据接口,详细拆解阿里云OpenClaw部署步骤、A股数据接入流程、高级分析功能配置及多平台联动技巧,所有代码命令均可直接复制复用,即使无技术基础也能在1小时内完成从部署到实战的全流程。
3192 11