wechat-article-publisher
Markdown またはHTML形式の記事を、WeChat公式アカウント(微信公众号)の下書きとしてAPIを通じて自動投稿するスキルです。コンテンツ作成後にそのままWeChat公式アカウントへの配信フローに組み込みたい場合に活用できます。
description の原文を見る
Publish Markdown/HTML articles to WeChat Official Account (微信公众号) drafts via API
SKILL.md 本文
WeChat Article Publisher
MarkdownまたはHTMLコンテンツをWeChat Official Accountのドラフトに公開します。APIを使用し、自動形式変換に対応しています。
前提条件
- WECHAT_API_KEY環境変数が設定されている(.envファイルから)
- Python 3.9以上
- wx.limyai.com上の認可されたWeChat Official Account
スクリプト
~/.claude/skills/wechat-article-publisher/scripts/にあります:
wechat_api.py
アカウントのリストと記事公開用のWeChat APIクライアント:
# 認可されたアカウントをリストする
python wechat_api.py list-accounts
# Markdownファイルから公開
python wechat_api.py publish --appid <wechat_appid> --markdown /path/to/article.md
# HTMLファイルから公開(形式を保持)
python wechat_api.py publish --appid <wechat_appid> --html /path/to/article.html
# カスタムオプションで公開
python wechat_api.py publish --appid <appid> --markdown /path/to/article.md --type newspic
parse_markdown.py
Markdownを解析し構造化データを抽出(オプション、高度な用途向け):
python parse_markdown.py <markdown_file> [--output json|html]
ワークフロー
戦略:「API優先公開」
ブラウザベースの公開と異なり、このスキルは直接APIコールを使用して信頼性の高い高速公開を実現します。
- 環境からWECHAT_API_KEYを読み込む
- 利用可能なWeChat Official Accountをリストする(ユーザーが指定していない場合)
- ファイル形式(MarkdownまたはHTML)を検出し解析
- 公開APIを呼び出してWeChat内にドラフトを作成
- ドラフト詳細とともに成功を報告
対応ファイル形式:
.mdファイル → Markdownとして解析、WeChat APIで変換.htmlファイル → HTMLとして送信、形式を保持
ステップバイステップガイド
ステップ1:APIキーを確認
操作を行う前に、APIキーが利用可能か確認します:
# .envファイルが存在し、WECHAT_API_KEYを含むか確認
cat .env | grep WECHAT_API_KEY
設定されていない場合は、ユーザーに次を実行するよう案内します:
.env.exampleを.envにコピーWECHAT_API_KEYの値を設定
ステップ2:利用可能なアカウントをリスト
認可されたWeChat Official Accountのリストを取得します:
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py list-accounts
出力例:
{
"success": true,
"data": {
"accounts": [
{
"name": "我的公众号",
"wechatAppid": "wx1234567890",
"username": "gh_abc123",
"type": "subscription",
"verified": true,
"status": "active"
}
],
"total": 1
}
}
重要:
- アカウントが1つのみの場合は自動的に使用
- 複数アカウントの場合はユーザーに選択させる
- 公開時のために
wechatAppidを記録
ステップ3:記事を公開
Markdownファイルの場合:
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
--appid <wechatAppid> \
--markdown /path/to/article.md
HTMLファイルの場合(形式を保持):
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
--appid <wechatAppid> \
--html /path/to/article.html
小绿书(図文モード)の場合:
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
--appid <wechatAppid> \
--markdown /path/to/article.md \
--type newspic
成功時の応答:
{
"success": true,
"data": {
"publicationId": "uuid-here",
"materialId": "uuid-here",
"mediaId": "wechat-media-id",
"status": "published",
"message": "文章已成功发布到公众号草稿箱"
}
}
ステップ4:結果を報告
公開成功後:
- ドラフト作成を確認
- ユーザーにWeChat管理画面で手動確認・公開することを案内
- 参照用の関連IDを提供
APIリファレンス
認証
すべてのAPIリクエストにはX-API-Keyヘッダが必要です:
X-API-Key: WECHAT_API_KEY
アカウントリストを取得
POST https://wx.limyai.com/api/openapi/wechat-accounts
記事を公開
POST https://wx.limyai.com/api/openapi/wechat-publish
パラメータ:
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| wechatAppid | string | あり | WeChat AppID |
| title | string | あり | 記事タイトル(最大64文字) |
| content | string | あり | 記事コンテンツ(Markdown/HTML) |
| summary | string | なし | 記事要約(最大120文字) |
| coverImage | string | なし | カバー画像URL |
| author | string | なし | 著者名 |
| contentFormat | string | なし | 'markdown'(デフォルト)または'html' |
| articleType | string | なし | 'news'(デフォルト)または'newspic' |
エラーコード
| コード | 説明 |
|---|---|
| API_KEY_MISSING | APIキーが提供されていない |
| API_KEY_INVALID | APIキーが無効 |
| ACCOUNT_NOT_FOUND | アカウントが見つからないか未認可 |
| ACCOUNT_TOKEN_EXPIRED | アカウント認可が期限切れ |
| INVALID_PARAMETER | 無効なパラメータ |
| WECHAT_API_ERROR | WeChat APIコール失敗 |
| INTERNAL_ERROR | サーバーエラー |
重要なルール
- 自動公開は絶対にしない - ドラフトにのみ保存し、ユーザーが手動で公開
- APIキーを最初に確認 - 設定されていない場合は早期に失敗
- 最初にアカウントをリスト - ユーザーが複数のアカウントを持つ可能性がある
- エラーを適切に処理 - わかりやすいエラーメッセージを表示
- 元のコンテンツを保持 - ユーザーのMarkdownを不要に修正しない
対応形式
Markdownファイル(.md)
- H1見出し(# )→ 記事タイトル
- H2/H3見出し(##, ###)→ セクション見出し
- 太字(text)
- イタリック(text)
- リンク
text - ブロッククォート(> )
- コードブロック(
...) - リスト(-または1.)
- 画像
→ WeChat自動アップロード
HTMLファイル(.html)
<title>または<h1>→ 記事タイトル- すべてのHTML形式を保持(スタイル、表など)
<img>タグ → 画像をWeChat自動アップロード- 最初の
<p>→ 要約として自動抽出 - インラインスタイルとリッチ形式に対応
HTMLタイトル抽出の優先順位:
<title>タグのコンテンツ- 最初の
<h1>タグのコンテンツ - 「Untitled」としてフォールバック
HTMLコンテンツ抽出:
<body>が存在する場合、bodyコンテンツを使用- それ以外の場合、
<html>、<head>、<!DOCTYPE>を削除して残りのコンテンツを使用
記事タイプ
news(普通文章)
- 標準WeChat記事形式
- 完全なMarkdown/HTML対応
- 画像付きリッチテキスト
newspic(小绿书/図文メッセージ)
- 画像中心の形式(Instagramのような投稿)
- コンテンツから最大20枚の画像を抽出
- テキストコンテンツは1000文字以下に制限
- 画像をWeChat自動アップロード
使用例フロー
Markdownファイル
ユーザー:「把 ~/articles/ai-tools.md 发布到微信公众号」
# ステップ1:APIキーを確認
cat .env | grep WECHAT_API_KEY
# ステップ2:アカウントをリスト
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py list-accounts
# ステップ3:公開(単一アカウント、appid wx1234567890と仮定)
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
--appid wx1234567890 \
--markdown ~/articles/ai-tools.md
# ステップ4:報告
# "文章已成功发布到公众号草稿箱!请登录微信公众平台预览并发布。"
HTMLファイル
ユーザー:「把这个HTML文章发布到公众号:~/articles/newsletter.html」
# ステップ1:APIキーを確認
cat .env | grep WECHAT_API_KEY
# ステップ2:アカウントをリスト
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py list-accounts
# ステップ3:HTMLを公開(形式を自動検出)
python ~/.claude/skills/wechat-article-publisher/scripts/wechat_api.py publish \
--appid wx1234567890 \
--html ~/articles/newsletter.html
# ステップ4:報告
# "文章已成功发布到公众号草稿箱!HTML格式已保留。请登录微信公众平台预览并发布。"
エラー処理
APIキーが見つからない
Error: WECHAT_API_KEY environment variable not set.
解決策:APIキーを含む.envファイルを設定するようユーザーに案内。
アカウントが見つからない
Error: ACCOUNT_NOT_FOUND - 公众号不存在或未授权
解決策:wx.limyai.comでアカウントを認可するようユーザーに案内。
トークンの期限切れ
Error: ACCOUNT_TOKEN_EXPIRED - 公众号授权已过期
解決策:wx.limyai.comで再認可するようユーザーに案内。
WeChat APIエラー
Error: WECHAT_API_ERROR - 微信接口调用失败
解決策:一時的な問題の可能性があります。再試行するか、WeChat服務ステータスを確認。
ベストプラクティス
なぜブラウザ自動化ではなくAPIを使用するのか?
- 信頼性:直接APIコールはブラウザ自動化より安定
- 速度:ブラウザ起動、ページ読み込み、UI操作がない
- シンプル:1つのコマンドで公開
- ポータビリティ:Pythonがあればどのシステムでも動作(macOS限定の依存関係なし)
コンテンツガイドライン
- 画像:可能な限り公開URLを使用;ローカル画像はアップロードされます
- タイトル:64文字以下に保つ
- 要約:提供されない場合は最初の段落から自動抽出
- カバー:指定されない場合、Markdownの最初の画像がカバーになります
ワークフロー効率
最小限のワークフロー(1コマンド):
- list-accounts → appidを取得 → 公開 → 完了
完全なワークフロー(確認付き):
1. .envをチェック → アカウントをリスト → ユーザーに確認
2. オプション付きで公開 → 結果を報告
トラブルシューティング
Q:WECHAT_API_KEYはどうやって取得するのか?
A:wx.limyai.comであなたのWeChat Official Accountを登録・認可してAPIキーを取得してください。
Q:複数のアカウントに公開できるか?
A:はい、list-accountsで認可されたすべてのアカウントを確認し、ターゲット--appidを指定します。
Q:WeChat内に画像が表示されない?
A:画像がアクセス可能なURLであることを確認してください。ローカル画像は自動アップロードされますが、パスが不正な場合は失敗する可能性があります。
Q:タイトルが長すぎる?
A:WeChat は タイトルを64文字に制限しています。スクリプトはH1の最初の64文字を使用します。
Q:newsとnewspicの違いは?
A:newsは標準記事形式;newspic(小绿书)は画像中心で限られたテキスト用です。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- iamzifei
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/iamzifei/wechat-article-publisher-skill / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。