post-sync — Markdownから微信公众号へ自動同期するCLIツール
概要
Post Sync は、Markdown ベースで記事を管理しているコンテンツ作成者向けの CLI ツールです。ローカルの Markdown ファイルを走査して、本文中の画像(ローカルパスや外部 URL)を自動で微信公众号の素材ライブラリへアップロードし、記事内の画像リンクを微信公众号で使える永続リンクへ置換します。さらに、Markdown ファイルと同名の .png を自動で封面(カバー画像)として検出・アップロードし、記事を草稿箱へ保存(create)したり、既存草稿の公開(publish)を行えます。差分更新はファイルハッシュで判定するため、変更がないファイルは再処理されず無駄な API 呼び出しを避けられます。設定は環境変数を用いる想定で、ローカル開発や CI からの実行に適しています。
リポジトリの統計情報
- スター数: 5
- フォーク数: 2
- ウォッチャー数: 5
- コミット数: 30
- ファイル数: 11
- メインの言語: TypeScript
主な特徴
- Markdown をネイティブに解析して微信公众号向けフォーマットに変換
- 画像を自動アップロードし、URL を微信公众号の永久リンクへ置換
- 同名の PNG を自動的に封面として検出・管理
- ファイルハッシュによる増分(差分)処理で無駄な再アップロードを回避
技術的なポイント
Post Sync は TypeScript で実装された Node.js CLI アプリケーションで、設計上は「入力(Markdown ファイル群)→解析→リソース(画像)処理→微信公众号 API とのやり取り→出力(草稿・公開)」というパイプラインを明確に分離しています。Markdown の解析部分は AST ベースまたはトークンベースのパーサを用いて画像ノードを抽出し、ローカルや外部の画像参照を検出します。検出した画像は一度ローカルにダウンロード(外部 URL 時)またはそのまま読み込み、微信公众号の素材 API へアップロードします。アップロード後に返却される永久 URL(または media_id)で記事内リンクを置換することで、投稿後に画像切れが起きない形に変換します。
差分検出はファイル内容のハッシュ(例:SHA-1/MD5)を保存し、前回実行時のハッシュと比較して更新があるファイルだけを処理する仕組みを持っています。これにより API 呼び出し回数と帯域を節約し、速度面でも優位になります。封面検出はファイル名ルール(Markdown と同名の .png)に従い、存在すれば優先的にアップロードして記事メタデータへ紐付けます。
微信公众号側とのやり取りはアクセストークンの取得・管理、エラーハンドリング(レートリミット、ネットワークエラー、API エラーのリトライ)、素材の冪等性(同一画像の重複アップロードを避けるためのキャッシュやハッシュ比較)を考慮した実装が期待されます。CLI は複数コマンド(create, publish など)を提供し、環境変数で設定を受け取る設計(.env.example を参照)になっているため、CI/CD パイプラインやローカル自動化スクリプトに組み込みやすくなっています。
TypeScript を採用することで型安全性が確保され、API レスポンスやファイル処理の型定義により実行時バグを減らせます。また、非同期処理(Promise)と並列アップロードの制御によりスループットの最適化が可能です。ロギングとトランザクション的な操作(アップロード済み素材の記録、投稿 ID の追跡)を残すことで、途中失敗時のリカバリや再試行も容易になります。
プロジェクトの構成
主要なファイルとディレクトリ:
- .env.example: file
- .gitignore: file
- README.md: file
- _docs: dir
- package.json: file
- src/: dir(TypeScript ソースコード)
- tsconfig.json: file
- .github/: dir(ワークフロー等があれば)
- LICENSE: file
- yarn.lock / package-lock.json: file(どちらか) …他 6 ファイル
※ 実行は .env に WeChat のクレデンシャルや設定を入れて行う想定です。ドキュメントや _docs フォルダにコマンド使用例や設定例がまとめられています。
まとめ
Markdown から微信公众号への公開を自動化する実用的な CLI。差分検出と画像自動管理で運用コストを下げるツールです(導入は環境変数設定が必要)。
リポジトリ情報:
- 名前: post-sync
- 説明: 説明なし
- スター数: 5
- 言語: TypeScript
- URL: https://github.com/asnowwolf/post-sync
- オーナー: asnowwolf
- アバター: https://avatars.githubusercontent.com/u/1446119?v=4
READMEの抜粋:
Post Sync
Post Sync 是一个强大的命令行工具 (CLI),旨在帮助内容创作者将本地的 Markdown 文件自动发布到微信公众号。它能够智能处理 Markdown 中的图片资源,自动生成封面,并支持增量更新,极大地简化了公众号文章的发布流程。
✨ 功能特性
- Markdown 原生支持: 解析 Markdown 内容并转换为微信公众号兼容的格式。
- 自动图片处理:
- 自动扫描 Markdown 中的图片链接(本地路径或网络 URL)。
- 自动上传图片到微信公众号素材库。
- 自动替换文章中的图片链接为微信永久链接。
- 智能封面管理: 自动检测与 Markdown 文件同名的
.png图片作为文章封面并上传。 - 增量发布: 基于文件哈希 (Hash) 检测内容变化,仅处理有更新的文件,避免重复上传。
- 草稿箱管理:
create命令将文章上传至公众号草稿箱。 - 一键发布:
publish命令将已上传的草稿正式发布。 - 无需代理配置:…