@lexiaowen/md2wechat-new 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,810 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [2.2.0] - 2026-05-11
11
+
12
+ ### Added
13
+ - **Brand Profile(品牌档案)**: 新增 `brand init` 和 `brand show` 命令,支持在 `~/.config/md2wechat-new/brand.md` 存储品牌档案
14
+ - `brand init`:幂等初始化,创建带注释的 Markdown 模板文件;目录不存在时自动创建
15
+ - `brand show`:以 JSON envelope 返回当前品牌档案原始文本(`data.content`)和文件路径(`data.path`)
16
+ - 支持 `BRAND_INITIALIZED` / `BRAND_SHOWN` / `BRAND_NOT_FOUND` / `BRAND_READ_FAILED` 四个状态码
17
+ - Brand Profile 由 Agent 读取原始文本,CLI 完全不解析此文件(工具职责分离)
18
+ - **格式选择 Markdown 而非 YAML**:LLM 理解自然语言优于结构化字段;Markdown 可写反例、具体示例,信息密度更高
19
+ - **Markdown Expression Diagnosis(排版诊断层)**: `skills/md2wechat/SKILL.md` 新增三步诊断框架
20
+ - Step 1 意图识别:目标读者、conversion goal、memorability anchor
21
+ - Step 2 内容映射:四目标框架(attention / readability / memorability / conversion)
22
+ - Step 3 模块选择:结合 Brand Profile limits 和 layout.opening 从 43 个模块选择最优组合
23
+ - **Brand Profile 协议**: `SKILL.md` 新增完整 Agent 读取协议
24
+ - 优先级链:CLI flag → brand.md → config.yaml → Layout Policy 推荐 → 硬编码默认
25
+ - 降级规则:文件不存在/字段缺失时各字段的回退行为
26
+ - Sanity Caps:max_modules(43) / max_cta(2) / max_quotes(10) / max_hero(1),超出自动截断并 warn
27
+ - style_ref:支持指向单个 .md 文件或目录(遍历目录下所有文件)
28
+ - 3 问引导流程:BRAND_NOT_FOUND 时 Agent 主动引导用户配置品牌档案
29
+ - **`docs/AGENT-GUIDE.md`**: AI Agent 操作手册,12 大章节 685 行,覆盖
30
+ - 能力发现(5 条 discovery 命令)
31
+ - Brand Profile 操作(check / init / 读取 / 降级)
32
+ - Markdown 排版诊断(三步法 + 四目标框架)
33
+ - 文章转换、发布流程、高级排版模块操作
34
+ - 异常处理与降级(4 种常见故障场景)
35
+ - 决策优先级链、完整场景示例(5 个)、快速参考表
36
+
37
+ ### Changed
38
+ - `skills/md2wechat/SKILL.md`:追加两大章节(Markdown Expression Diagnosis + Brand Profile 协议),从 199 行扩展至 ~400 行
39
+ - `platforms/openclaw/md2wechat/SKILL.md`:与 Claude Code 版本完全同步(同步新增章节,199 → ~400 行)
40
+ - `docs/CONFIG.md`:新增 Brand Profile 完整章节(Schema / 字段说明表 / 降级行为 / 配置对比表)
41
+
42
+ ### Technical Details
43
+ - **New Files**: `cmd/md2wechat-new/brand.go`, `cmd/md2wechat-new/brand_test.go`, `docs/AGENT-GUIDE.md`, `docs/BRAND-PROFILE.md`
44
+ - **Modified Files**: `cmd/md2wechat-new/main.go`, `docs/CONFIG.md`, `skills/md2wechat/SKILL.md`, `platforms/openclaw/md2wechat/SKILL.md`, `docs/AGENT-GUIDE.md`
45
+ - **New code constants**: `BRAND_INITIALIZED`, `BRAND_INIT_FAILED`, `BRAND_SHOWN`, `BRAND_NOT_FOUND`, `BRAND_READ_FAILED`
46
+ - **Tests**: 8 contract tests in `brand_test.go`(init×4 + show×4),全部通过 `t.Setenv(HOME)` + `t.TempDir()` 隔离
47
+
48
+ ### Migration Guide
49
+ 无需迁移。Brand Profile 为可选配置,Agent 专用,不影响任何现有 CLI 工作流。
50
+
51
+ ### Changed
52
+ - **License**: Upgraded from MIT to Source Available License (BUSL 1.1 base + custom Additional Use Grant)
53
+ - Personal use, learning, evaluation, non-profit, and contributions remain free without authorization
54
+ - Commercial use (SaaS, client delivery, rebranding, white-labeling, AI training data) requires a written commercial license
55
+ - Change Date: 2030-01-01 — project automatically relicenses to Apache 2.0 on that date
56
+ - Historical versions released under MIT are unaffected; this license applies to all new versions from this commit onward
57
+ - Contact for commercial licensing: skrphper@gmail.com / https://jieni.ai / https://x.com/seekjourney
58
+
59
+ ## [2.1.0] - 2026-04-27
60
+
61
+ ### Added
62
+ - **`md2wechat layout` command tree**: 4 new CLI subcommands for AI-agent-friendly discovery of 43 advanced WeChat layout modules (:::block syntax)
63
+ - `layout list [--category] [--serves] [--content-type] [--industry] [--tag] --json` — filtered module discovery
64
+ - `layout show <name> --json` — full spec with fields, when_to_use, example, metadata
65
+ - `layout render <name> --var KEY=VALUE --json` — generate :::block syntax from structured inputs
66
+ - `layout validate [--file | --stdin] --json` — validate :::block usage, unknown modules warn not error
67
+ - **43 built-in layout modules** across 7 categories (opening, judgment, infographic, evidence, brand, conversion, sprint4)
68
+ - **4-level module override**: builtin → ~/.config/md2wechat-new/layout/ → ./layout/ → $MD2WECHAT_LAYOUT_DIR
69
+ - **`internal/layoutcatalog` package**: schema, loader, renderer, validator with 20+ unit tests
70
+ - **Integration test fixtures**: 3 article shapes (opinion-piece, data-report, mixed-with-unknown)
71
+ - **E2E test suite**: gated by MD2WECHAT_E2E=1, validates each module's example against /api/convert
72
+ - **`docs/LAYOUT.md`**: 保姆级高级排版模块教程,覆盖全部 43 个模块的字段说明、使用场景、示例和常见错误
73
+ - **`--intensity authentic` for `humanize`**: new standalone intensity level that bypasses the 24-pattern AI-trace detection pipeline and instead applies six-dimension writing-quality rules (用词 / 句式 / 语气 / 内容表达 / 结构 / 整体原则). The goal is writing that reads like a skilled human, not merely text with AI markers removed. Aliases: `authentic` / `natural` / `真实` / `自然`.
74
+ - **`docs/HUMANIZE.md`**: 保姆级 humanize 命令教程,覆盖四种强度选择逻辑、`--show-changes` 输出格式、Agent/JSON 用法、管道输入、与 `write` 集成,以及 `authentic` vs `aggressive` 的本质区别
75
+
76
+ ### Fixed
77
+ - **9 YAML module field doc errors** (`sprint4` category): corrected JSON key names in YAML field documentation so Agents no longer generate wrong keys at render time
78
+ - `quote-card`: `quote`/`content` → `text`
79
+ - `tweet`: `content`→`text`, `author`→`name`, `date`→`timestamp`
80
+ - `definition`: added `term`/`def`/`termLabel` fields, anti_pattern clarifies `def` not `definition`
81
+ - `stat-row`, `question`, `resource-list`, `comparison-table`, `changelog`: replaced misleading pipe-format rows with correct JSON object field docs
82
+
83
+ ### Changed
84
+ - **README.md**: restructured from 1941 → 388 lines as a commercial landing page. Removed 3 Mermaid diagrams, 5 repeated install sections, 200-line AI quality scoring system, and ModelScope flowchart. New structure: Hero → API unlock banner → comparison table → quickstart → command table → 高级排版模块 → Agent discovery → AI vs API table → Coding Agent platforms → FAQ → community → Star History.
85
+ - **SKILL.md (both Claude Code and OpenClaw)**: added API-mode-only blockquote for layout modules; removed `https://www.md2wechat.cn` URL from public skill files (security); added gentle AI→API nudge rule; added `authentic` intensity example and four-level intensity reference table for `humanize`
86
+ - **`docs/DISCOVERY.md`**: added `prompts show authentic --kind humanizer` example
87
+ - **AGENTS.md / .github/copilot-instructions.md**: added layout API-only constraint notes (internal dev docs, URL retained)
88
+ - **Docs version references**: bumped `v2.0.7` → `v2.1.0` across `QUICKSTART.md`, `USAGE.md`, `FAQ.md`, `INSTALL.md`
89
+
90
+ ### Technical Details
91
+ - **New Package**: `internal/layoutcatalog` (schema.go, loader.go, renderer.go, validator.go)
92
+ - **New Files**: `internal/assets/builtin/layout/**/*.yaml` (43 module definitions), `docs/LAYOUT.md`, `docs/HUMANIZE.md`
93
+ - **New Prompt**: `internal/assets/builtin/prompts/humanizer/authentic.yaml` — standalone template rendered with only `{{CONTENT}}`, bypassing `base.yaml`
94
+ - **New Commands**: `cmd/md2wechat-new/layout.go`, `cmd/md2wechat-new/layout_test.go`, `cmd/md2wechat-new/layout_e2e_test.go`
95
+ - **New Test Data**: `internal/layoutcatalog/testdata/integration/`
96
+ - **Error Codes**: LAYOUT_MODULE_NOT_FOUND, LAYOUT_INVALID_FILTER, LAYOUT_MISSING_REQUIRED_FIELD, LAYOUT_INVALID_FIELD_VALUE, LAYOUT_VALIDATE_HAS_ERRORS, LAYOUT_VALIDATED
97
+
98
+ ### Migration Guide
99
+ No migration required. Layout commands are purely additive. Existing workflows and config files are unchanged.
100
+
101
+ ## [2.0.7] - 2026-03-30
102
+
103
+ ### Added
104
+ - Added `volcengine` / `volc` as a built-in image provider for Volcengine Ark, with support for `doubao-seedream-5-0-260128` and `doubao-seedream-5-0-lite-260128`.
105
+ - Added provider-level `supported_models` discovery to `providers list --json`, `providers show --json`, and `capabilities --json`, so agents and scripts can inspect image model catalogs before choosing `--model`.
106
+
107
+ ### Changed
108
+ - Switched `config init` and the bundled example config to a `volcengine` image setup by default, including the Ark base URL, default Seedream model, and `2K` size tier.
109
+ - Made image defaults provider-aware, so Volcengine now falls back to `2K` when `api.image_size` is omitted instead of inheriting an OpenAI-shaped square size.
110
+ - Consolidated image-provider model metadata into the shared provider registry and re-audited high-signal docs and both skill entry points to keep provider, model, and discovery guidance aligned.
111
+ - Removed the `skills/md2wechat/references/` directory and folded the remaining guidance back into the main `SKILL.md` entry point.
112
+
113
+ ### Fixed
114
+ - Fixed Volcengine `ModelNotOpen` guidance to point users to the Doubao model activation path instead of a vague Ark-console hint.
115
+ - Fixed JSON-mode CLI tests to stream captured stdout/stderr safely, preventing large discovery payloads from deadlocking the test process.
116
+
117
+ ## [2.0.6] - 2026-03-28
118
+
119
+ ### Added
120
+ - Added an npm distribution package at `@lexiaowenn/md2wechat-new` so users can install the CLI through `npm install -g` without compiling Go locally.
121
+ - Added `scripts/install.js` and `scripts/run.js` as a thin npm wrapper layer that downloads the version-matched GitHub Release binary and verifies `checksums.txt`.
122
+ - Added `--cover-media-id` for `convert --draft` and `inspect --draft`, so article drafts can reuse an existing WeChat permanent cover asset without re-uploading a local file.
123
+
124
+ ### Changed
125
+ - Updated the release workflow so npm packaging is smoked against the same release artifact on Linux and Windows before publish, then published to npm only after the GitHub Release assets are live.
126
+ - Extended local and CI quality gates to validate npm package contents and keep `package.json`, `VERSION`, and marketplace metadata aligned.
127
+ - Updated install documentation to include the npm path while keeping Homebrew, fixed-version installers, and Go install as first-class alternatives.
128
+ - Tightened both skill entry points so `小绿书` / `图文笔记` / `newspic` requests route to `create_image_post` instead of being treated as standard article drafts.
129
+ - Narrowed the npm support contract to the actual published release matrix: macOS `amd64/arm64`, Linux `amd64/arm64`, and Windows `amd64`.
130
+
131
+ ### Fixed
132
+ - Fixed Windows npm smoke and local-bundle installs by treating Windows drive-letter paths in `MD2WECHAT_RELEASE_BASE_URL` as local filesystem paths instead of unsupported URL schemes.
133
+ - Fixed agent-facing draft guidance so README, usage docs, and both `SKILL.md` entry points consistently describe `--cover` and `--cover-media-id` as the valid draft-cover contract.
134
+ - Closed documentation drift around image-provider setup by removing stale `GOOGLE_API_KEY` guidance and keeping Gemini/Google instructions aligned on `IMAGE_API_KEY`.
135
+
136
+ ## [2.0.5] - 2026-03-26
137
+
138
+ ### Added
139
+ - Added `inspect` as a release-grade confirmation command that resolves final article metadata, readiness, and publish risks before conversion or draft creation.
140
+ - Added `preview` as a lightweight standalone HTML preview flow that writes a local preview artifact without upload or draft side effects.
141
+ - Added a typed `internal/inspect` confirmation layer so metadata sources, readiness, and checks are computed once and reused by CLI and preview flows.
142
+
143
+ ### Changed
144
+ - Updated `capabilities --json` to advertise `inspect` and `preview` as first-class commands.
145
+ - Kept the preview implementation Go-only with embedded template rendering instead of introducing a separate frontend stack or editable workbench.
146
+ - Clarified that API mode can produce exact preview HTML when conversion succeeds, while AI mode degrades honestly to a confirmation page instead of pretending to show final layout.
147
+ - Reframed installer next steps and the main README around a confirm-first flow: `inspect` -> `preview` -> `convert` / `--draft`.
148
+
149
+ ### Fixed
150
+ - Closed documentation drift around release version anchors by updating install and high-signal entry-point docs to `2.0.5`.
151
+ - Closed agent drift by updating both skill entry points to describe the new confirm-first flow and AI preview degradation behavior consistently.
152
+ - Tightened `scripts/release-check.sh` so version anchors, marketplace metadata, confirm-first docs, and both skill entry points are verified together before release work is considered done.
153
+ - Fixed JSON-mode CLI behavior so `inspect --json`, `preview --json`, and related machine-readable commands no longer mix config banners into stdout.
154
+ - Fixed `convert --preview` to emit pure HTML on stdout instead of wrapped terminal markers, making redirect-to-file and agent use more reliable.
155
+ - Fixed WeChat draft error guidance so `45004` now points users and agents to digest/description limits instead of encouraging body-content guesswork.
156
+ - Re-audited README, USAGE, DISCOVERY, FAQ, and both skill entry points to keep metadata-vs-body semantics, preview behavior, and image replacement rules aligned.
157
+
158
+ ## [2.0.4] - 2026-03-25
159
+
160
+ ### Added
161
+ - **CLI flags for article metadata**: Added `--title`, `--author`, and `--digest` flags to `convert` command for explicit metadata override
162
+ - **Metadata validation**: Added length validation for title (32 chars), author (16 chars), and digest (128 chars) with clear error messages
163
+ - **Frontmatter stripping**: `convert` now properly strips frontmatter from markdown body before passing to converter, preventing metadata from appearing in generated HTML
164
+ - **ArticleDocument structure**: Introduced `ArticleDocument` to separate metadata extraction from body parsing, improving testability
165
+
166
+ ### Changed
167
+ - **background_type default**: Changed default `background_type` from `default` to `none` for cleaner output
168
+ - **Metadata priority**: Clarified metadata resolution order: CLI flags → frontmatter → first markdown heading → fallback
169
+ - **Test coverage**: Added comprehensive tests for metadata override, frontmatter stripping, and validation
170
+
171
+ ### Fixed
172
+ - Fixed metadata extraction to properly handle `digest`, `summary`, and `description` frontmatter fields with correct priority
173
+ - Fixed first-line title fallback logic to avoid treating non-heading body text as title
174
+ - Fixed outdated documentation about background_type default value
175
+
176
+ ### Technical Details
177
+ - **New Files**: None (structure changes only)
178
+ - **Modified Files**:
179
+ - `cmd/md2wechat-new/convert.go` - Added CLI flags, validation, and document parsing
180
+ - `cmd/md2wechat-new/convert_test.go` - Added 4 new test cases
181
+ - `internal/converter/metadata.go` - Added `ArticleDocument` and `ParseArticleDocument`
182
+ - `internal/converter/converter.go` - Added `normalizeRequest` to handle metadata merging
183
+ - `internal/converter/ai.go` - Updated to use stripped body and resolved metadata
184
+ - `internal/config/config.go` - Changed default background_type to "none"
185
+ - Documentation updates across README, docs/, and SKILL.md files
186
+
187
+ ### Migration Guide
188
+ No breaking changes. The new CLI flags are optional. If you relied on the previous `background_type: "default"` behavior, explicitly pass `--background-type default` or set it in your config file.
189
+
190
+ ## [2.0.3] - 2026-03-21
191
+
192
+ ### Added
193
+ - Added Homebrew-friendly multi-platform release archives for `darwin/linux` and `amd64/arm64`, so the project now publishes tarballs that formula-based installs can consume directly.
194
+ - Added automatic tap update support in the release workflow, including generated `Formula/md2wechat-new.rb` output and a release-time push path to `geekjourneyx/homebrew-tap`.
195
+
196
+ ### Changed
197
+ - Upgraded the OpenClaw skill metadata to `metadata.clawdbot` with explicit `brew` and `go install` entries, and rewrote the skill body around discovery-first usage instead of installer instructions.
198
+ - Promoted `brew install lexiaowenn/tap/md2wechat-new` as a first-class installation path in user-facing docs while keeping the fixed-version release installer path for checksum-verified installs.
199
+ - Standardized version injection around `main.Version` so local builds, release builds, formula tests, and `version --json` verification all resolve the same symbol.
200
+
201
+ ### Fixed
202
+ - Fixed Homebrew tap CI so it installs `lexiaowenn/tap/md2wechat-new` through the tap workflow managed by `setup-homebrew`, avoiding local formula rejection, remote mismatch handling, and post-job cleanup failures.
203
+ - Re-audited README, INSTALL, QUICKSTART, FAQ, OPENCLAW, plugin marketplace metadata, and both skill entry points to keep release references aligned at `2.0.3`.
204
+
205
+ ## [2.0.2] - 2026-03-21
206
+
207
+ ### Added
208
+ - Added a dedicated `install-openclaw.ps1` so Windows OpenClaw installation now has a fixed-version installer that provisions both the skill shell and the CLI instead of relying on the generic CLI-only PowerShell installer.
209
+ - Added more agent-friendly installer output for shell and PowerShell flows, including immediate next-step verification commands, PATH repair hints, and explicit `config init` / `capabilities` guidance.
210
+
211
+ ### Changed
212
+ - Reworked both Coding Agent and OpenClaw paths so the skill layer is now knowledge-and-workflow only; both paths assume an already-installed `md2wechat` CLI on a formal user-level install path rather than wrapper-managed runtime bootstrapping.
213
+ - Standardized the recommended installation path around fixed-version installers and direct copy-paste commands for agents, without requiring `MD2WECHAT_RELEASE_BASE_URL` exports or recommending `go install` as an end-user path.
214
+ - Simplified OpenClaw installation so the shell installer provisions the skill shell to `~/.openclaw/skills/md2wechat/` and installs the CLI to the user-level executable path instead of an OpenClaw-private runtime directory.
215
+ - Refreshed README, FAQ, INSTALL, QUICKSTART, and OPENCLAW onboarding so “send this to your agent” scripts consistently export PATH before validating `md2wechat`, reducing first-run failures in fresh shells.
216
+ - Updated release automation and release checks to match the new OpenClaw contract: no OpenClaw wrapper script, new `install-openclaw.ps1`, and smoke verification against an installed CLI on the environment path.
217
+
218
+ ### Removed
219
+ - Removed `skills/md2wechat/scripts/run.sh`; the coding-agent skill no longer acts as a runtime provisioner or wrapper and now documents direct `md2wechat` usage only.
220
+ - Removed `platforms/openclaw/md2wechat/scripts/run.sh`; the OpenClaw skill no longer ships a runtime wrapper and instead assumes the CLI has been installed by the fixed-version installer.
221
+ - Removed `platforms/openclaw/md2wechat/references/runtime.md`; OpenClaw runtime expectations were folded back into `platforms/openclaw/md2wechat/SKILL.md`.
222
+
223
+ ### Fixed
224
+ - Removed coding-agent runtime auto-download during normal execution; the Coding Agent path now rejects missing or mismatched CLIs instead of fetching a remote binary from GitHub Releases at execution time.
225
+ - Fixed OpenClaw packaging drift on Windows by pointing skill install metadata to the dedicated OpenClaw PowerShell installer instead of the generic CLI installer.
226
+ - Fixed high-signal onboarding drift where README / FAQ / OPENCLAW scripts could validate `md2wechat` before repairing `PATH`, which caused avoidable failures in fresh shells.
227
+ - Tightened installer output and OpenClaw guidance so CLI paths, expected skill directory layout, and fixed-version installation flow are described consistently across docs and release metadata.
228
+ - Re-audited README, FAQ, INSTALL, QUICKSTART, OPENCLAW, both `SKILL.md` files, installer comments, and release metadata to keep version anchors aligned at `2.0.2`.
229
+
230
+ ## [2.0.1] - 2026-03-20
231
+
232
+ ### Fixed
233
+ - Fixed the release workflow so PowerShell installer smoke now runs on `windows-latest` instead of Ubuntu, and PowerShell version smoke parses CLI JSON output correctly.
234
+ - Fixed the release workflow binary smoke so release version injection is validated against the actual bundled artifact path.
235
+ - Tightened OpenClaw installation guidance to reflect current ClawHub behavior: `clawhub install md2wechat` installs the skill shell only and does not guarantee runtime provisioning.
236
+ - Added OpenClaw runtime version checks so the OpenClaw wrapper rejects mismatched runtimes instead of silently executing them.
237
+ - Added coding-agent runtime version checks so `skills/md2wechat/scripts/run.sh` only accepts PATH-discovered runtimes when the version matches the current skill version.
238
+ - Improved coding-agent runtime fallback behavior so GitHub Releases download failures no longer produce misleading missing-temp-file errors.
239
+
240
+ ## [2.0.0] - 2026-03-20
241
+
242
+ ### Added
243
+ - Added a typed publish pipeline with shared article, asset, and action models across `convert`, image generation, draft creation, and image-post flows.
244
+ - Added built-in prompt catalog and discovery commands: `capabilities`, `providers`, `themes`, and `prompts`.
245
+ - Added built-in image prompt presets with explicit use-case metadata, including cover, infographic, banner, ticket, sketchnote, Apple-keynote, and Victorian engraving variants.
246
+ - Added higher-level image generation commands `generate_cover` and `generate_infographic`, plus `generate_image --preset` support.
247
+ - Added per-command image model override via `--model` for image generation commands.
248
+ - Added dedicated onboarding and operator docs, including configuration, discovery, WeChat credential/IP whitelist, smoke verification, and image provider guides.
249
+
250
+ ### Changed
251
+ - Reworked the CLI around a stable machine-readable contract with consistent `success/code/message/schema_version/status/data/error` JSON envelopes.
252
+ - Split skill packaging into a coding-agent path (`skills/md2wechat/`) and an OpenClaw path (`platforms/openclaw/md2wechat/`), with platform-specific installation and runtime guidance.
253
+ - Promoted built-in embedded assets for default themes, writer styles, and prompt resources so the CLI no longer depends on repo-relative files to function.
254
+ - Hardened release engineering with a single `VERSION` source, `release-check`, CI/release gates, checksum-verified assets, and installer smoke tests.
255
+ - Standardized discovery-first documentation so README, docs, and both skills point users and agents to CLI capabilities instead of hand-maintained lists.
256
+ - Updated default image provider models to match current provider guidance, including `gpt-image-1.5` for OpenAI and newer Gemini defaults.
257
+
258
+ ### Fixed
259
+ - Fixed frontmatter title fallback so Markdown titles are resolved correctly when frontmatter omits `title`, including CRLF input handling.
260
+ - Fixed remote download and image handling boundaries, including stronger SSRF protection and consistent remote/local image resolution.
261
+ - Fixed `convert --json --output` so requested HTML artifacts are written before returning JSON success payloads.
262
+ - Fixed `create_image_post --from-markdown` so resolved local and remote image paths work correctly outside the article directory.
263
+ - Fixed version-pinned installer behavior so release installers no longer silently drift to newer assets.
264
+ - Fixed Gemini image sizing so aspect ratio and image size are forwarded to the official API config, and documented provider-specific size behavior such as ModelScope's `WIDTHxHEIGHT` requirement.
265
+
266
+ ## [1.11.1] - 2026-03-19
267
+
268
+ ### Changed
269
+ - Tightened the Markdown-to-WeChat pipeline around shared metadata parsing, image placeholder回填, and remote image download boundaries.
270
+ - Expanded command-level and module-level tests across `cmd/md2wechat-new`, `internal/converter`, `internal/draft`, `internal/humanizer`, `internal/wechat`, and `internal/writer`.
271
+ - Promoted checksum-verified, version-pinned release assets and installer scripts as the primary install path.
272
+ - Moved the OpenClaw installer to the same version-pinned release + checksum flow as the main CLI installer.
273
+ - Added build-once, smoke-same-artifact, release-same-artifact flow to the release workflow.
274
+ - Hardened installation and execution docs so fixed-version release assets are the primary install path.
275
+ - Added repository execution guidance in `docs/AGENTS.md` for development, validation, and release discipline.
276
+
277
+ ## [1.11.0] - 2026-03-12
278
+
279
+ ### Fixed
280
+ - **IsAIRequest 函数修复**: 修复了 `IsAIRequest` 始终返回 `false` 的 bug
281
+ - 原代码使用魔法数字 `14` 进行字符串切片比较,但前缀 `"AI_MODE_REQUEST:"` 实际长度为 16,导致比较永远不匹配
282
+ - `ExtractAIRequest` 同样因切片偏移错误 (`[14:]`) 会在结果中保留 `"T:"` 残留前缀
283
+ - 改用 `strings.HasPrefix` / `strings.TrimPrefix`,与 `generator.go` 中的现有模式保持一致
284
+
285
+ ### Changed
286
+ - **aiModePrefix 常量**: 引入包级常量 `aiModePrefix = "AI_MODE_REQUEST:"` 消除魔法数字,所有引用统一使用该常量
287
+
288
+ ### Technical Details
289
+ - **Modified Files**: `internal/converter/ai.go`
290
+
291
+ ### Migration Guide
292
+ No migration required.
293
+
294
+ ## [1.10.0] - 2025-02-10
295
+
296
+ ### Added
297
+ - **Image Post (小绿书/Newspic)**: Create WeChat image-only posts with up to 20 images
298
+ - New `create_image_post` command for 小绿书 creation
299
+ - Support comma-separated image paths: `--images photo1.jpg,photo2.jpg`
300
+ - Extract images from Markdown files: `--from-markdown article.md`
301
+ - Comment settings: `--open-comment`, `--fans-only`
302
+ - Preview mode: `--dry-run` for testing without upload
303
+ - Stdin support for description content
304
+ - **WeChat API Documentation**: Updated `references/wechat-api.md` with complete draft/add API documentation
305
+ - Added `article_type` field (`news`/`newspic`)
306
+ - Added comment settings fields
307
+ - Added image_info structure for newspic
308
+ - Added cover cropping fields
309
+ - **v2 API Themes (38 total)**: Massive theme expansion with new series system
310
+ - **Minimal Series (8)**: minimal-gold, minimal-green, minimal-blue, minimal-orange, minimal-red, minimal-navy, minimal-gray, minimal-sky
311
+ - **Focus Series (8)**: focus-gold, focus-green, focus-blue, focus-orange, focus-red, focus-navy, focus-gray, focus-sky
312
+ - **Elegant Series (8)**: elegant-gold, elegant-green, elegant-blue, elegant-orange, elegant-red, elegant-navy, elegant-gray, elegant-sky
313
+ - **Bold Series (8)**: bold-gold, bold-green, bold-blue, bold-orange, bold-red, bold-navy, bold-gray, bold-sky
314
+ - Theme version tracking: v1.0 (6 basic) vs v2.0 (32 new)
315
+ - Theme preview gallery: https://md2wechat-new.app/theme-gallery
316
+ - **Background Type Control**: New `--background-type` parameter for API mode
317
+ - Options: `default` (default background), `grid` (grid texture), `none` (transparent)
318
+ - Configuration file support: `api.background_type`
319
+ - Environment variable: `DEFAULT_BACKGROUND_TYPE`
320
+ - **Google Gemini Image Provider**: Native Google SDK integration
321
+ - Official `google.golang.org/genai` SDK
322
+ - Direct API calls without third-party wrappers
323
+ - Supports official Gemini image models: gemini-3-pro-image-preview, gemini-2.0-flash-exp-image-generation
324
+ - Full aspect ratio support with official size mappings
325
+ - **OpenRouter Image Provider**: Multi-model provider access
326
+ - Support for various AI models through OpenRouter API
327
+ - OpenRouter format with image_size and aspect_ratio parameters
328
+ - Configuration: `image_provider: openrouter`
329
+
330
+ ### Changed
331
+ - **Article Structure**: Extended with newspic support fields (backward compatible with `omitempty`)
332
+ - `article_type`: news (default) or newspic
333
+ - `need_open_comment`: comment settings
334
+ - `only_fans_can_comment`: fan-only comment settings
335
+ - `image_info`: image list for newspic
336
+ - **API Base URL Configuration**: New `md2wechat_base_url` parameter
337
+ - Support for v2 API endpoint: https://md2wechat-new.app (internal testing)
338
+ - Configuration file: `api.md2wechat_base_url`
339
+ - Environment variable: `MD2WECHAT_BASE_URL`
340
+ - **Theme File Structure**: Reorganized with version tracking
341
+ - v1.0 themes: 6 basic themes (default, bytedance, apple, sports, chinese, cyber)
342
+ - v2.0 themes: 32 new series themes (minimal/focus/elegant/bold series)
343
+ - New `themes/api.yaml`: Complete theme catalog for reference
344
+
345
+ ### Technical Details
346
+ - **New Files**:
347
+ - `cmd/md2wechat-new/create_image_post.go` - CLI command implementation
348
+ - `internal/image/gemini.go` - Google Gemini provider with official SDK
349
+ - `internal/image/gemini_test.go` - Gemini provider tests
350
+ - `internal/image/openrouter.go` - OpenRouter provider implementation
351
+ - `internal/image/openrouter_test.go` - OpenRouter provider tests
352
+ - `themes/api.yaml` - Complete v2 theme catalog
353
+ - `themes/elegant-gold.yaml`, `themes/focus-green.yaml`, `themes/minimal-blue.yaml`, `themes/bold-red.yaml` - Series examples
354
+ - **Modified Files**:
355
+ - `internal/draft/service.go` - Added `CreateImagePost`, `GetImagePostPreview`, `extractImagesFromMarkdown`
356
+ - `internal/wechat/service.go` - Added `CreateNewspicDraft` for direct API call
357
+ - `cmd/md2wechat-new/main.go` - Registered `createImagePostCmd`
358
+ - `cmd/md2wechat-new/convert.go` - Added background_type flag, updated help text
359
+ - `internal/config/config.go` - Added DefaultBackgroundType, MD2WechatBaseURL fields
360
+ - `internal/converter/api.go` - Added BackgroundType to APIRequest, added base URL support
361
+ - `internal/converter/converter.go` - Added BackgroundType to ConvertRequest
362
+ - `internal/image/provider.go` - Added gemini, openrouter providers
363
+ - `skills/md2wechat/references/themes.md` - Updated with v2 themes and background type
364
+ - `themes/*.yaml` - Reorganized with version markers (v1.0 vs v2.0)
365
+ - `docs/CONFIG.md` - Added md2wechat_base_url, background_type documentation
366
+ - `docs/IMAGE_PROVISIONERS.md` - Added Gemini and OpenRouter provider guides
367
+ - `README.md` - Updated with v2 API themes, background type, upgraded API announcement
368
+
369
+ ### Migration Guide
370
+ No migration required. All new features are additive:
371
+ - `create_image_post` is a new command
372
+ - New v2.0 themes are opt-in via `--theme` parameter
373
+ - `background_type` changed to default to "none" (was "default" in v2.0.3)
374
+ - Image providers are configurable, no breaking changes
375
+
376
+ ### Technical Details
377
+ - **New Files**:
378
+ - `cmd/md2wechat-new/create_image_post.go` - CLI command implementation
379
+ - **Modified Files**:
380
+ - `internal/draft/service.go` - Added `CreateImagePost`, `GetImagePostPreview`, `extractImagesFromMarkdown`
381
+ - `internal/wechat/service.go` - Added `CreateNewspicDraft` for direct API call (SDK doesn't support newspic)
382
+ - `cmd/md2wechat-new/main.go` - Registered `createImagePostCmd`
383
+ - `skills/md2wechat/SKILL.md` - Added image post documentation
384
+ - `skills/md2wechat/references/wechat-api.md` - Complete draft API documentation
385
+
386
+ ### Migration Guide
387
+ No migration required. The `create_image_post` command is a new feature and doesn't affect existing functionality.
388
+
389
+ ---
390
+
391
+ ## [1.8.0] - 2025-02-05
392
+
393
+ ### Added
394
+ - **OpenClaw Platform Support**: Full compatibility with OpenClaw AI Agent platform
395
+ - ClawHub installation: `clawhub install md2wechat`
396
+ - One-click install script: `scripts/install-openclaw.sh`
397
+ - OpenClaw configuration guide: `docs/OPENCLAW.md`
398
+ - SKILL.md metadata for OpenClaw compatibility
399
+ - **OpenClaw Badge**: Added to README.md header
400
+
401
+ ### Changed
402
+ - **Directory Structure Simplification**:
403
+ - Renamed `skill/` to `skills/` (unified naming)
404
+ - Removed redundant `plugins/` directory
405
+ - Removed `plugin.json` (keeping only `marketplace.json`)
406
+ - Removed `manifest.json` (version hardcoded in `run.sh`)
407
+ - **Binary Provisioner Refactoring** (`run.sh`):
408
+ - Reduced from 375 lines to 154 lines (-59%)
409
+ - Changed cache directory from `~/.cache/claude/` to `~/.cache/md2wechat-new/`
410
+ - Simplified version management (plain text file instead of JSON)
411
+ - Removed invalid jsDelivr mirror (binaries are in GitHub Releases, not in repo)
412
+ - Improved error messages with cleaner formatting
413
+ - **Documentation Updates**:
414
+ - Updated README.md with OpenClaw support section
415
+ - Fixed project structure diagram
416
+ - Added OpenClaw vs Claude Code comparison table
417
+
418
+ ### Removed
419
+ - `plugins/` directory (redundant copy of skills)
420
+ - `.claude-plugin/plugin.json` (replaced by marketplace.json)
421
+ - `skill/md2wechat-new/manifest.json` (version now in run.sh)
422
+ - `scripts/sync.sh` (no longer needed without plugins/)
423
+
424
+ ### Technical Details
425
+ - **New Files**:
426
+ - `docs/OPENCLAW.md` - OpenClaw installation guide
427
+ - `scripts/install-openclaw.sh` - OpenClaw installer script
428
+ - **Modified Files**:
429
+ - `.claude-plugin/marketplace.json` - source changed to `"."`
430
+ - `skills/md2wechat/SKILL.md` - added `metadata.openclaw` for compatibility
431
+ - `skills/md2wechat/scripts/run.sh` - complete refactoring
432
+
433
+ ### Migration Guide
434
+ No migration required for existing Claude Code users. The skill continues to work the same way.
435
+
436
+ For OpenClaw users:
437
+ 1. Install via ClawHub: `clawhub install md2wechat`
438
+ 2. Configure in `~/.openclaw/openclaw.json`
439
+ 3. See `docs/OPENCLAW.md` for detailed instructions
440
+
441
+ ---
442
+
443
+ ## [1.7.0] - 2025-01-25
444
+
445
+ ### Added
446
+ - **ModelScope Image Provider**: Native integration with Alibaba ModelScope image generation service
447
+ - Async API support with task-based polling mechanism (task_id + status check)
448
+ - Configurable polling interval (default 5s) and max polling time (default 120s)
449
+ - Model: `Tongyi-MAI/Z-Image-Turbo` with support for custom image sizes
450
+ - Free tier available for testing
451
+ - **Write Command Stdin Support**: Pipe input support for non-interactive usage
452
+ - `echo "content" | md2wechat write --style dan-koe`
453
+ - Heredoc support for multi-line content input
454
+ - **Image Size Parameter**: ModelScope provider supports separate `width` and `height` parameters
455
+ - Default size: 1024x1024
456
+ - Configurable via `IMAGE_SIZE` or `image_size` in config
457
+ - **Documentation Updates**:
458
+ - ModelScope configuration guide in README.md
459
+ - New FAQ entries for content size limit, ModelScope setup, and stdin usage
460
+ - Updated `docs/IMAGE_PROVISIONERS.md` with ModelScope documentation
461
+
462
+ ### Changed
463
+ - `internal/image/provider.go`: Added ModelScope (`modelscope`, `ms`) provider to factory
464
+ - `internal/image/provider.go`: Updated error hints to include ModelScope in supported providers list
465
+ - `cmd/md2wechat-new/write.go`: Added `readStdin()` function for pipe/redirection detection
466
+ - `cmd/md2wechat-new/write.go`: Added `io` import for stdin reading functionality
467
+ - `internal/wechat/service.go`: Fixed `maskMediaID()` to handle empty strings safely
468
+ - `skills/md2wechat/SKILL.md`: Added stdin/heredoc usage examples
469
+ - `skills/md2wechat/references/writing-guide.md`: Added non-interactive input methods section
470
+
471
+ ### Technical Details
472
+ - **New Files**:
473
+ - `internal/image/modelscope.go` - ModelScope provider implementation (372 lines)
474
+ - `ModelScopeProvider` struct with async polling support
475
+ - `parseSize()` function for WIDTHxHEIGHT format parsing
476
+ - `createTask()` for async job creation
477
+ - `pollTaskStatus()` for status polling with timeout
478
+ - `getTaskStatus()` for task status retrieval
479
+ - `handleErrorResponse()` for comprehensive error handling
480
+ - `internal/image/modelscope_test.go` - Unit tests (9 test cases, all passing)
481
+
482
+ ### Configuration
483
+ ```yaml
484
+ # ModelScope Configuration Example
485
+ api:
486
+ image_provider: modelscope
487
+ image_key: ms-your-token-here
488
+ image_base_url: https://api-inference.modelscope.cn
489
+ image_model: Tongyi-MAI/Z-Image-Turbo
490
+ image_size: 1024x1024
491
+ ```
492
+
493
+ ### Migration Guide
494
+ No migration required. ModelScope is a new optional image provider. To use it:
495
+
496
+ 1. Get API Key from [modelscope.cn](https://modelscope.cn/my/myaccesstoken)
497
+ 2. Set `IMAGE_PROVIDER=modelscope`
498
+ 3. Set `IMAGE_API_KEY=ms-your-token-here`
499
+ 4. Run: `md2wechat generate_image "A golden cat"`
500
+
501
+ ---
502
+
503
+ ## [1.6.0] - 2025-01-19
504
+
505
+ ### Added
506
+ - **AI Writing Trace Removal (Humanizer)**: Remove AI-generated text patterns to make content sound more natural
507
+ - New `humanize` command for standalone AI trace removal
508
+ - Support for 24 AI writing pattern types based on humanizer-zh method
509
+ - Three intensity levels: `gentle`, `medium` (default), `aggressive`
510
+ - Quality scoring system with 5 dimensions (directness, rhythm, trust, authenticity, conciseness)
511
+ - Style priority principle: preserves writing style characteristics when combined with creator styles
512
+ - **Write + Humanize Integration**: Combine writing style generation with AI trace removal
513
+ - New `--humanize` flag for `write` command
514
+ - New `--humanize-intensity` flag to control processing intensity
515
+ - `--show-changes` flag to view modification details and quality scores
516
+ - `-o, --output` flag for `humanize` command to save results to file
517
+ - **Pattern Detection Categories**:
518
+ - Content patterns: overemphasis, promotional language, vague attribution
519
+ - Language patterns: AI vocabulary, negative parallelism, three-part formula
520
+ - Style patterns: dash overuse, bold abuse, emoji decoration
521
+ - Filler avoidance: padding phrases, over-qualification, generic conclusions
522
+ - Collaboration traces: conversational filler, knowledge cutoff disclaimers
523
+ - **Documentation**:
524
+ - New `references/humanizer.md` with complete AI trace removal guide
525
+ - Updated SKILL.md with humanizer natural language examples
526
+ - Updated manifest.json version to 1.6.0
527
+
528
+ ### Changed
529
+ - `cmd/md2wechat-new/main.go`: Added `humanizeCmd` to root command registration
530
+ - `cmd/md2wechat-new/humanize.go`: Implemented complete humanize command with flags
531
+ - `cmd/md2wechat-new/write.go`: Added humanizer integration flags and output handling
532
+
533
+ ### Technical Details
534
+ - **New Files**:
535
+ - `internal/humanizer/` - AI writing trace removal module
536
+ - `result.go` - Core data structures (HumanizeRequest, HumanizeResult, Score, Change)
537
+ - `prompt.go` - Humanizer-zh prompt builder with 24 pattern types
538
+ - `humanizer.go` - Core processing logic and response parsing
539
+ - `cmd/md2wechat-new/humanize.go` - Humanize command implementation
540
+ - `skills/md2wechat/references/humanizer.md` - Humanizer documentation
541
+
542
+ ### Breaking Changes
543
+ - None
544
+
545
+ ### Migration Guide
546
+ No migration required. The humanize command is a new feature and doesn't affect existing functionality.
547
+
548
+ ---
549
+
550
+ ## [1.5.0] - 2025-01-17
551
+
552
+ ### Added
553
+ - **Writer Style Assistant**: AI-powered writing assistance with customizable creator styles
554
+ - New `write` command for assisted article generation
555
+ - Support for multiple input types: idea, fragment, outline, title
556
+ - Automatic cover prompt generation matching writing style
557
+ - **Dan Koe Style**: First built-in creator writing style
558
+ - Profound, sharp, grounded tone for personal growth and opinion pieces
559
+ - Complete writing framework with hooks, structures, and quote extraction
560
+ - Victorian Woodcut/Etching style cover generation
561
+ - **Custom Style System**: YAML-based style definitions in `writers/` directory
562
+ - Easy to add custom creator styles
563
+ - Configurable writing prompts and cover styles
564
+ - **Image Size Control**: New `--size` parameter for `generate_image` command
565
+ - Support for 16:9 ratio (2560x1440) for WeChat cover images
566
+ - Multiple preset sizes: 2048x2048, 1920x1920, 2560x1440, 1440x2560, etc.
567
+ - **Documentation**:
568
+ - New `writers/README.md` with custom style guide
569
+ - New `docs/WRITING_FAQ.md` for writing beginners
570
+ - New `references/writing-guide.md` with complete write command reference
571
+ - Updated `references/image-syntax.md` with size parameter documentation
572
+ - Enhanced README.md with write command workflows and diagrams
573
+ - Enhanced SKILL.md with writing assistance natural language examples
574
+
575
+ ### Changed
576
+ - README: Added API service notice at top with md2wechat.cn contact information
577
+ - README: Updated author section with donation information and QR codes
578
+ - README: Added writer style comparison table and workflow diagrams
579
+ - SKILL.md: Improved LLM instruction following with explicit trigger conditions
580
+ - Sync script: Added `writing-guide.md` to file synchronization list
581
+
582
+ ### Technical Details
583
+ - **New Files**:
584
+ - `internal/writer/` - Writer style assistant module
585
+ - `types.go` - Core data structures
586
+ - `style.go` - Style management system
587
+ - `generator.go` - Article generation logic
588
+ - `assistant.go` - High-level assistant API
589
+ - `cover_generator.go` - Cover prompt generation
590
+ - `cmd/md2wechat-new/write.go` - Write command implementation
591
+ - `writers/dan-koe.yaml` - Dan Koe style configuration
592
+ - `writers/README.md` - Custom style guide
593
+ - `docs/WRITING_FAQ.md` - Writing functionality FAQ
594
+ - `skills/md2wechat/references/writing-guide.md` - Writing command reference
595
+
596
+ ### Breaking Changes
597
+ - None
598
+
599
+ ### Migration Guide
600
+ No migration required. The write command is a new feature and doesn't affect existing functionality.
601
+
602
+ ---
603
+
604
+ ## [1.4.0] - 2025-01-14
605
+
606
+ ### Added
607
+ - **Provider Pattern**: Extensible image generation service architecture
608
+ - **TuZi Integration**: Support for TuZi (tu-zi.com) image generation service
609
+ - Models: `doubao-seedream-4-5-251128` (default), `gemini-3-pro-image-preview`
610
+ - Sizes: 2048x2048 (default), 1920x1920, 2560x1440, 1440x2560, 3072x2048, 2048x3072, 3840x2160, 2160x3840
611
+ - **Natural Language Image Generation**: Generate images via conversational interface
612
+ - Method 1: Insert into article at specific position
613
+ - Method 2: Standalone image generation
614
+ - Method 3: Manual Markdown syntax `![alt](__generate:prompt__)`
615
+ - **Configuration Fields**: `image_provider`, `image_api_base`, `image_model`, `image_size`
616
+ - **Documentation**: New `docs/IMAGE_PROVISIONERS.md` with complete provider configuration guide
617
+ - **Sync Script**: `scripts/sync.sh` to keep `skill/` and `plugins/` directories synchronized
618
+ - **Makefile Target**: `make sync` for easy directory synchronization
619
+
620
+ ### Changed
621
+ - README: Enhanced platform-specific download instructions (Mac Intel vs Apple Silicon)
622
+ - README: Added AI image generation section with natural language examples
623
+ - `scripts/install.sh`: Added Linux ARM64 detection and support
624
+ - Default TuZi image size: `1024x1024` → `2048x2048` (TuZi requires minimum 3.7M pixels)
625
+
626
+ ### Fixed
627
+ - URL download with query parameters: Fixed file name too long error when downloading generated images
628
+ - Platform detection in install script for ARM64 systems
629
+ - API base URL documentation: Updated to correct `https://api.tu-zi.com/v1`
630
+
631
+ ### Technical Details
632
+ - **New Files**:
633
+ - `internal/image/provider.go` - Provider interface and factory
634
+ - `internal/image/openai.go` - OpenAI DALL-E provider
635
+ - `internal/image/tuzi.go` - TuZi image generation provider
636
+ - `docs/IMAGE_PROVISIONERS.md` - Provider configuration guide
637
+ - `scripts/sync.sh` - Directory synchronization script
638
+
639
+ ---
640
+
641
+ ## [1.3.1] - 2025-01-12
642
+
643
+ ### Added
644
+ - Auto-download binary from GitHub releases on first run
645
+ - User-friendly error messages with actionable guidance
646
+ - System dependencies declaration in `manifest.json`
647
+ - XDG-compliant cache directory (`~/.cache/claude/`) for binary storage
648
+ - Fallback to local `bin/` directory for development/offline usage
649
+ - Automatic version checking and update prompt when binary is outdated
650
+
651
+ ### Changed
652
+ - Binary naming format now uses hyphens (`md2wechat-linux-amd64`) to match GitHub releases
653
+ - Error messages now show human-readable platform names (e.g., "macOS (Apple Silicon)")
654
+ - Download progress displays concise status information
655
+
656
+ ### Fixed
657
+ - Binary name mismatch between workflow and run.sh that caused download failures
658
+
659
+ ---
660
+
661
+ ## [1.3.0] - 2025-01-11
662
+
663
+ ### Added
664
+ - Plugin Marketplace support with `.claude-plugin/marketplace.json`
665
+ - One-command Claude Code installation via `/plugin marketplace add`
666
+ - Prominent Claude Code installation section at top of README
667
+ - Claude Code badge for quick identification
668
+ - Detailed binary installation instructions with location guidance
669
+ - Installation steps for Windows, Mac, and Linux users
670
+
671
+ ### Changed
672
+ - Updated docs/QUICKSTART.md with Claude Code section at the beginning
673
+ - Enhanced docs/USAGE.md with Claude Code integration guide
674
+ - Improved download table with installation locations
675
+ - Added collapsible installation steps for each platform
676
+
677
+ ### Installation
678
+ ```bash
679
+ # Claude Code users (simplest)
680
+ /plugin marketplace add lexiaowenn/md2wechat-new
681
+ /plugin install md2wechat@lexiaowenn-md2wechat-new
682
+ ```
683
+
684
+ ---
685
+
686
+ ## [1.2.0] - 2025-01-11
687
+
688
+ ### Added
689
+ - Claude Code Skill support with `.claude-plugin/plugin.json`
690
+ - Claude Code Skill in `skills/md2wechat/` directory for distribution
691
+ - New API themes: `bytedance`, `apple`, `sports`, `chinese`, `cyber`
692
+ - Comprehensive troubleshooting guide in SKILL.md
693
+ - API theme selection section in README.md
694
+ - CHANGELOG.md with version history and upgrade guide
695
+
696
+ ### Changed
697
+ - Updated themes.md with complete API and AI theme documentation
698
+ - Enhanced HTML guide with AI theme specific requirements
699
+ - Improved SKILL.md with detailed error handling and FAQ
700
+ - Updated command help text to reflect all available themes
701
+ - Enhanced FAQ.md with IP whitelist configuration guide
702
+
703
+ ### Removed
704
+ - `leo` theme (deprecated)
705
+
706
+ ---
707
+
708
+ ## [1.1.0] - 2025-01-11
709
+
710
+ ### Added
711
+ - YAML-based theme system for AI mode
712
+ - AI themes: `autumn-warm`, `spring-fresh`, `ocean-calm`
713
+ - Custom theme support with `custom.yaml`
714
+ - Theme configuration with color schemes and style info
715
+ - Reference documentation for themes, HTML guide, image syntax, and WeChat API
716
+
717
+ ### Changed
718
+ - Refactored theme system to use YAML files instead of hardcoded prompts
719
+ - Updated SKILL.md with new AI theme workflow
720
+ - Enhanced themes.md with detailed style specifications
721
+
722
+ ---
723
+
724
+ ## [1.0.1] - 2025-01-11
725
+
726
+ ### Fixed
727
+ - Mermaid diagrams rendering for GitHub documentation
728
+
729
+ ---
730
+
731
+ ## [1.0.0] - 2025-01-11
732
+
733
+ ### Added
734
+ - Initial release of md2wechat
735
+ - API mode conversion using md2wechat.cn API
736
+ - AI mode conversion with Claude AI
737
+ - WeChat draft upload functionality
738
+ - Image upload to WeChat material library
739
+ - Configuration management with YAML support
740
+ - Command-line interface with cobra
741
+ - Multi-platform binary support (Windows, macOS, Linux)
742
+ - Comprehensive documentation (README, FAQ, USAGE)
743
+ - Test draft command for HTML validation
744
+
745
+ ### Features
746
+ - Convert Markdown to WeChat Official Account formatted HTML
747
+ - Support for local images, online images, and AI-generated images
748
+ - Automatic image compression and optimization
749
+ - Draft creation with cover image support
750
+ - Environment variable and config file support
751
+ - Claude Code Skill integration
752
+
753
+ ---
754
+
755
+ ## Version History Summary
756
+
757
+ | Version | Date | Description |
758
+ |---------|------|-------------|
759
+ | [1.9.0] | 2025-02-06 | Image Post (小绿书/newspic) support |
760
+ | [1.8.0] | 2025-02-05 | OpenClaw support, directory simplification, run.sh refactoring |
761
+ | [1.7.0] | 2025-01-25 | ModelScope image provider, write command stdin support |
762
+ | [1.6.0] | 2025-01-19 | AI writing trace removal (Humanizer), write + humanize integration |
763
+ | [1.5.0] | 2025-01-17 | Writer style assistant, Dan Koe style, image size control |
764
+ | [1.4.0] | 2025-01-14 | TuZi image provider, natural language image generation |
765
+ | [1.3.1] | 2025-01-12 | Auto binary download, user-friendly errors, system dependencies |
766
+ | [1.3.0] | 2025-01-11 | Plugin Marketplace support, enhanced installation docs |
767
+ | [1.2.0] | 2025-01-11 | Claude Code plugin support, new API themes |
768
+ | [1.1.0] | 2025-01-11 | YAML theme system, AI themes (autumn-warm, spring-fresh, ocean-calm) |
769
+ | [1.0.1] | 2025-01-11 | Fixed Mermaid diagrams for GitHub rendering |
770
+ | [1.0.0] | 2025-01-11 | Initial release with full md2wechat functionality |
771
+
772
+ ---
773
+
774
+ ## Upgrade Guide
775
+
776
+ ### From v1.1.0 to Unreleased
777
+
778
+ **New API Themes Available:**
779
+ ```bash
780
+ # New themes available
781
+ md2wechat convert article.md --theme bytedance
782
+ md2wechat convert article.md --theme apple
783
+ md2wechat convert article.md --theme sports
784
+ md2wechat convert article.md --theme chinese
785
+ md2wechat convert article.md --theme cyber
786
+ ```
787
+
788
+ **Claude Code Skill Integration:**
789
+ ```bash
790
+ # Install as Claude Code Skill
791
+ cp -r skills/md2wechat ~/.claude/skills/
792
+ ```
793
+
794
+ ### From v1.0.0 to v1.1.0
795
+
796
+ **Theme System Migration:**
797
+ - Old theme names have been updated
798
+ - AI themes now use YAML configuration files
799
+ - Update your commands to use new theme names:
800
+ - `autumn-warm` instead of `elegant`
801
+ - `spring-fresh` instead of `minimal`
802
+ - `ocean-calm` instead of `tech`
803
+
804
+ ---
805
+
806
+ ## Links
807
+
808
+ - [GitHub Repository](https://github.com/lexiaowenn/md2wechat-new)
809
+ - [Documentation](README.md)
810
+ - [Issues](https://github.com/lexiaowenn/md2wechat-new/issues)