🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

阿淼发公众号

by @tmxccc

Editor-first WeChat Official Account publishing skill. Posts content to WeChat Official Account (微信公众号) via API or browser, while prioritizing humanized writ...

Versionv3.0.1
Downloads525
TERMINAL
clawhub install amiao-post-to-wechat

📖 About This Skill


name: amiao-post-to-wechat description: Editor-first WeChat Official Account publishing skill. Posts content to WeChat Official Account (微信公众号) via API or browser, while prioritizing humanized writing, WeChat-native formatting, compatibility, and efficient publishing. Supports article posting (文章) with HTML, markdown, or plain text input, and image-text posting (贴图/图文) with multiple images. Use when user mentions 发布公众号, 微信公众号, post to wechat, 公众号文章, 图文, 贴图, markdown 发公众号, 写完发一下, 帮我发到公众号, or similar. version: 3.0.0 skill_schema: 1.0 metadata: openclaw: homepage: https://clawhub.ai/skills/amiao-post-to-wechat requires: anyBins: - bun - npx changelog: - version: 3.0.0 changes: - FSM-based workflow replacing linear checklist - 7-dimension quality scoring system (0-100) with per-publish logging - Auto-tune suggestions after every 10 publish cycles - Error levels 1-4 with automatic retry - Turbo mode for pre-polished content - Parallel side-computation in editorial pass - Industry terminology protection via config - Domain-specific AI-tone signal suppression - Access token cache with auto-refresh - Image source resolution with graceful fallback - version: 2.1.0 changes: - Domain AI-tone signals and protected terms - Pre-publish confirmation step - Image source resolution order - CTA type guidance - Slug rules for Chinese titles

WeChat Official Account Publishing Skill v3.0.0

Language

Always match the user's language. Chinese input → respond in Chinese. English input → respond in English.

Core Principle

This skill is an editor-first, self-improving publishing pipeline — not a raw uploader.

Priority order: 1. Humanized writing quality 2. WeChat compatibility 3. Visual readability 4. Publishing speed

Never sacrifice compatibility for fancy formatting. Never sacrifice readability for automation.


Quick Reference

| Mode | When | Key flag | |------|------|----------| | Standard | Default | — | | Turbo | Content already polished | --turbo or turbo: true in frontmatter | | Raw | Skip all editorial pass | --raw | | Image-text | Short post with images | auto-detected |

Supported tones: 专业评论 · 行业快评 · 知识科普 · 观点专栏 · 深度分析 · 快讯播报

Reference files (load when needed):

  • references/fsm.md — Full FSM state table
  • references/quality-scoring.md — Scoring rubric details
  • references/editorial-rules.md — Humanization + formatting rules
  • references/config-reference.md — All EXTEND.md keys + full example
  • references/scripts.md — Script CLI reference
  • references/troubleshooting.md — Error levels + fix guide

  • FSM Workflow (Summary)

    Load references/fsm.md for the complete state transition table.

    State sequence:

    idle
      → loading_config
        → resolving_account
          → classifying_input
            → [turbo?] editorial_pass_light / editorial_pass_full
              → metadata_validation
                → packaging_check
                  → pre_publish_confirm (if enabled)
                    → publishing
                      → reporting → idle
    

    Key transition rules:

  • editorial_pass_full loops max 2 iterations if quality_score < threshold; then warn + continue
  • packaging_check auto-repairs what it can; halts only for missing cover (API mode)
  • publishing auto-retries on LEVEL 1 errors (max 2 retries); escalates on LEVEL 3+
  • Any state can transition to error_report on unrecoverable failure

  • Error Levels

    | Level | Type | Behavior | |-------|------|----------| | 1 | Transient (token expiry, network blip) | Auto-retry silently (max 2, wait 3–10s) | | 2 | Auto-repairable (missing summary, cover fallback, over-length) | Repair + flag in confirmation | | 3 | Requires user action (credentials missing, empty content) | Halt + exact setup guide | | 4 | Unrecoverable API error | Log + show error code + link to mp.weixin.qq.com |

    See references/troubleshooting.md for full repair paths.


    Quality Scoring (Pre-publish)

    Score is computed before pre_publish_confirm. Load references/quality-scoring.md for rubric.

    | Dimension | Max | Signal | |-----------|-----|--------| | opening_hook | 20 | First paragraph creates pull or tension | | heading_quality | 15 | Reader-question style, not generic labels | | paragraph_rhythm | 15 | Varied length, no mechanical same-beat paragraphs | | ai_tone_density | 20 | Inverse: fewer blocked phrases = higher score | | term_preservation | 10 | All protected_terms intact | | ending_quality | 10 | Human close + CTA present | | length_fit | 10 | Within default_article_length, not padded | | Total | 100 | |

    Thresholds:

  • ≥ 70 → proceed normally
  • 60–69 → proceed with warning in confirmation
  • < 60 → another editorial pass (max 2 total)
  • < 50 → halt even in Turbo mode
  • Show score + brief per-dimension note in pre_publish_confirm.


    Turbo Mode

    Activated by --turbo flag or turbo: true in frontmatter.

    Skips: deep humanization pass, pre-publish confirmation (auto-proceed), quality score display (only blocks if < 50)

    Still runs: metadata resolution, packaging check (auto-repair), cover resolution, token cache check, publish, log

    Use when content is already manually polished, or when batch-publishing multiple articles.


    Editorial Pass (Standard)

    Load references/editorial-rules.md for full humanization rules, AI-tone signal list, and formatting downgrade table.

    Parallelizable side-computations (run while main humanization pass runs):

  • Slug generation (from title)
  • Tail keyword generation (from article topic)
  • Profile block inference (from account config)
  • Image count assessment (from article length)
  • Humanization strength:

  • light: minimal cleanup, preserve style
  • medium: default; improve rhythm, headings, opening, ending
  • strong: substantial rewrite while preserving meaning
  • Industry terminology protection: Never simplify or paraphrase protected_terms. These are load-bearing words for the target audience.


    Image Handling

    Count guidance by length: | Article length | Preferred images | |---------------|-----------------| | < 800 chars | 2 | | 800–1500 chars | 2–3 | | 1500–2000 chars | 3 (optionally 4) | | > 2000 chars | compress content first, then reassess |

    Source resolution order: 1. Inline images already in markdown / HTML 2. imgs/ directory beside article file 3. User-supplied via --images 4. If insufficient: warn in confirmation, do not block publish


    Metadata & Packaging

    Metadata resolution (each field):

  • Title: CLI → frontmatter/H1 → strongest H2 → first meaningful sentence → auto-generate
  • Summary: CLI → frontmatter → first paragraph trimmed → auto-generate
  • Author: CLI → frontmatter → account default → global default
  • Packaging checklist (auto-repair if missing, unless --raw):

  • [ ] Length within default_article_length
  • [ ] 2–4 images (warn if under; do not block)
  • [ ] Long-tail keyword block (3–8 phrases, topic-specific)
  • [ ] Public-account profile block
  • Cover image resolution (API mode only): 1. --cover → frontmatter cover fields → imgs/cover.png → first inline image → halt if still missing


    Access Token Cache

    Cache location (in priority order): amiao/.wechat-token-cache~/amiao/.wechat-token-cache

    Behavior: read cache → verify expiry → refresh if expired/invalid → update cache. Failure to refresh = LEVEL 1 retry, then LEVEL 3 if persistent.


    Publish Log + Auto-tune

    Every successful publish appends one record to amiao/.publish-log.yaml:

    - date: 
      account: 
      article_title: 
      quality_score: <0-100>
      humanize_level: <light|medium|strong>
      tone: <tone>
      article_length: <chars>
      image_count: <n>
      publish_method: <api|browser>
      media_id: <id>
      issues_found: [<list of flags>]
      cta_type: <type>
      tail_keywords: [<list>]
    </code></pre></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Auto-tune</strong> (triggered after every 10th publish cycle):
    <li style="color:#94a3b8;margin:3px 0">Avg quality_score < 72 → suggest reviewing humanization defaults</li>
    <li style="color:#94a3b8;margin:3px 0">Tail keywords repeat too uniformly → suggest refreshing <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">default_tail_keywords</code></li>
    <li style="color:#94a3b8;margin:3px 0">Article length consistently under/over → suggest adjusting <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">default_article_length</code></li>
    <li style="color:#94a3b8;margin:3px 0">One tone consistently scores higher → suggest making it <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">default_tone</code></li></p><p style="margin:8px 0">Report suggestions at end of 10th cycle. Never auto-apply; always surface to user.</p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Pre-publish Confirmation Summary</h3></p><p style="margin:8px 0">Show when <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">confirm_before_publish: true</code> (default), or when packaging was repaired, or when image count is below target.</p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">───────────────────────────────────────
    发布前确认 / Pre-publish Summary
    ───────────────────────────────────────
    账号 Account   : [name]
    方式 Method    : [api / browser]
    主题 Theme     : [theme] [color]
    编辑 Editorial : [humanize level] · [tone]</p><p style="margin:8px 0">标题 Title     : [title]
    摘要 Summary   : [summary]
    字数 Length    : ~[N] 字
    图片 Images    : [N] 张 [⚠ below target if applicable]
    质量评分 Score : [N]/100  ([brief note if < 70])</p><p style="margin:8px 0">封面 Cover     : [resolved / ⚠ missing]
    长尾词 Keywords: ✓ present / ⚠ missing
    账号介绍 Profile: ✓ present / ⚠ missing</p><p style="margin:8px 0">[⚠ Any auto-repairs applied]
    ───────────────────────────────────────
    确认发布?(y/n / 输入 e 返回编辑)
    </code></pre></p><p style="margin:8px 0">If <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">confirm_before_publish: false</code> and no warnings: skip confirmation, show summary inline in completion report instead.</p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Completion Report</h3></p><p style="margin:8px 0"><pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">✓ WeChat Publishing Complete!</p><p style="margin:8px 0">Input    : [type] · [path]
    Method   : [API / Browser]
    Account  : [name]
    Theme    : [theme] [color]
    Editorial: [humanize] · [tone]</p><p style="margin:8px 0">Article:
      Title   : [title]
      Summary : [summary]
      Images  : [N]
      Comments: [open/closed] · [fans-only/all]
      Score   : [N]/100</p><p style="margin:8px 0">Result:
      ✓ Draft saved to WeChat Official Account
      media_id: [id]   (API mode)</p><p style="margin:8px 0">Files:
      [• slug.md if created from plain text]</p><p style="margin:8px 0">Next: https://mp.weixin.qq.com → 内容管理 → 草稿箱
    </code></pre></p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Scripts</h3></p><p style="margin:8px 0">Load <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">references/scripts.md</code> for full CLI reference.</p><p style="margin:8px 0">| Script | Purpose |
    |--------|---------|
    | <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">scripts/wechat-api.ts</code> | Article via API |
    | <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">scripts/wechat-article.ts</code> | Article via browser |
    | <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">scripts/wechat-browser.ts</code> | Image-text post |
    | <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">scripts/md-to-wechat.ts</code> | Markdown → WeChat HTML |
    | <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">scripts/check-permissions.ts</code> | Environment preflight |</p><p style="margin:8px 0">Runtime: <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">bun</code> → <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">npx -y bun</code> → explain + suggest install</p><p style="margin:8px 0"><strong style="color:#e5e7eb">Critical</strong>: Publishing scripts handle markdown conversion internally. <strong style="color:#e5e7eb">Never pre-convert markdown to HTML before calling the publish script.</strong></p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">Configuration</h3></p><p style="margin:8px 0">Load <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">references/config-reference.md</code> for all supported EXTEND.md keys and a full annotated example.</p><p style="margin:8px 0"><strong style="color:#e5e7eb">EXTEND.md location</strong> (checked in order):
    <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">amiao/amiao-post-to-wechat/EXTEND.md          # project-level
    ${XDG_CONFIG_HOME:-$HOME/.config}/amiao/amiao-post-to-wechat/EXTEND.md
    $HOME/amiao/amiao-post-to-wechat/EXTEND.md    # user-level
    </code></pre></p><p style="margin:8px 0">If not found → run first-time setup (<code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">references/config/first-time-setup.md</code>) before proceeding.</p><p style="margin:8px 0"><strong style="color:#e5e7eb">Value priority</strong>: CLI → frontmatter → EXTEND (account → global) → skill defaults</p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p><p style="margin:8px 0"><h3 style="color:#e5e7eb;margin:18px 0 8px;font-size:1.05em">OpenClaw / ClawHub Rules</h3></p><p style="margin:8px 0"><li style="color:#94a3b8;margin:3px 0"><code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">SKILL.md</code> is the primary agent contract; keep it self-contained and readable</li>
    <li style="color:#94a3b8;margin:3px 0">Relative paths assume scripts/references live beside this skill</li>
    <li style="color:#94a3b8;margin:3px 0">No hard-coded machine-specific absolute paths</li>
    <li style="color:#94a3b8;margin:3px 0">All defaults degrade gracefully when optional config is absent</li>
    <li style="color:#94a3b8;margin:3px 0">Skill name, version, and metadata must stay clean for ClawHub distribution</li>
    <li style="color:#94a3b8;margin:3px 0">Favor backward-compatible defaults on version updates</li>
    </p></div></section><section class="skill-card" style="margin-bottom:20px"><h2 style="color:#f8fafc;font-size:1.2em;font-weight:800;margin:0 0 16px;display:flex;align-items:center;gap:8px">⚙️ Configuration</h2><div style="font-size:.92em;color:#94a3b8;line-height:1.75"><p style="margin:8px 0">Load <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">references/config-reference.md</code> for all supported EXTEND.md keys and a full annotated example.</p><p style="margin:8px 0"><strong style="color:#e5e7eb">EXTEND.md location</strong> (checked in order):
    <pre style="background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0"><code style="color:#a5f3fc;background:none;padding:0;font-size:1em">amiao/amiao-post-to-wechat/EXTEND.md          # project-level
    ${XDG_CONFIG_HOME:-$HOME/.config}/amiao/amiao-post-to-wechat/EXTEND.md
    $HOME/amiao/amiao-post-to-wechat/EXTEND.md    # user-level
    </code></pre></p><p style="margin:8px 0">If not found → run first-time setup (<code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">references/config/first-time-setup.md</code>) before proceeding.</p><p style="margin:8px 0"><strong style="color:#e5e7eb">Value priority</strong>: CLI → frontmatter → EXTEND (account → global) → skill defaults</p><p style="margin:8px 0"><hr style="border:none;border-top:1px solid #1e1e3f;margin:12px 0"></p></div></section></div><div class="two-col-side"></div></div></div><script>
            document.querySelectorAll('.copy-btn, .script-copy-btn').forEach(btn => {
              btn.addEventListener('click', () => {
                const cmd = btn.getAttribute('data-cmd');
                if (!cmd) return;
                navigator.clipboard.writeText(cmd).then(() => {
                  const orig = btn.textContent;
                  btn.textContent = 'Copied!';
                  setTimeout(() => btn.textContent = orig, 1500);
                }).catch(() => {});
              });
            });
          </script><!--$--><!--/$--></main><footer style="background:#0a0a1a;border-top:1px solid #1a1a2e;margin-top:60px"><div style="border-top:1px solid #111;max-width:1200px;margin:0 auto;padding:24px 20px"><div style="display:flex;justify-content:space-between;flex-wrap:wrap;gap:24px;margin-bottom:24px"><div><div style="font-weight:700;color:#ccc;margin-bottom:8px">BytesAgain</div><div style="color:#555;font-size:.82em;max-width:200px">Discover the best AI agent skills for your workflow.</div></div><div><div style="color:#888;font-size:.75em;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px">Explore</div><div style="margin-bottom:6px"><a href="/skills" style="color:#666;text-decoration:none;font-size:.85em">Skills</a></div><div style="margin-bottom:6px"><a href="/articles" style="color:#666;text-decoration:none;font-size:.85em">Articles</a></div><div style="margin-bottom:6px"><a href="/use-case" style="color:#666;text-decoration:none;font-size:.85em">Cases</a></div></div><div><div style="color:#888;font-size:.75em;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px">Company</div><div style="margin-bottom:6px"><a href="/about" style="color:#666;text-decoration:none;font-size:.85em">About</a></div><div style="margin-bottom:6px"><a href="/contact" style="color:#666;text-decoration:none;font-size:.85em">Contact</a></div><div style="margin-bottom:6px"><a href="/privacy-policy" style="color:#666;text-decoration:none;font-size:.85em">Privacy Policy</a></div><div style="margin-bottom:6px"><a href="/terms" style="color:#666;text-decoration:none;font-size:.85em">Terms</a></div><div style="margin-bottom:6px"><a href="/feedback" style="color:#666;text-decoration:none;font-size:.85em">Feedback</a></div></div></div><div style="border-top:1px solid #111;padding-top:16px"><div style="color:#444;font-size:.8em;margin-bottom:8px">© <!-- -->2026<!-- --> BytesAgain. All rights reserved.</div><div style="color:#333;font-size:.75em;line-height:1.6;max-width:720px">BytesAgain is an independent skill directory. We index and link to third-party content (ClawHub, GitHub, LobeHub, Dify, etc.) for informational purposes only. All trademarks, skill names, and content are the property of their respective owners. BytesAgain does not claim ownership of any indexed content.</div></div></div></footer><button style="position:fixed;bottom:28px;right:28px;z-index:1000;width:48px;height:48px;border-radius:50%;border:none;cursor:pointer;background:linear-gradient(135deg,#667eea,#00d4ff);color:#fff;font-size:1.3em;box-shadow:0 4px 20px #667eea66;display:flex;align-items:center;justify-content:center;transition:transform .2s">💬</button><script src="/_next/static/chunks/0ze4gu236oq96.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[62894,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"LangProvider\"]\n3:I[16988,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"default\"]\nd:I[68027,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"default\",1]\n:HL[\"/_next/static/chunks/07v-rkwetoheo.css?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"style\"]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:Td5e,"])</script><script>self.__next_f.push([1,"[{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"BytesAgain\",\"url\":\"https://bytesagain.com\",\"description\":\"Search 60,000+ verified AI agent skills via MCP API or REST. Supports 7 languages. Free, no auth required.\",\"inLanguage\":[\"en\",\"zh\",\"es\",\"fr\",\"de\",\"ja\",\"ko\"],\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https://bytesagain.com/skills?q={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}},{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"BytesAgain\",\"url\":\"https://bytesagain.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://bytesagain.com/og-image.png\"},\"description\":\"AI agent skill directory. Search 60,000+ skills, 1,000+ use cases, and community requests.\",\"foundingDate\":\"2026\",\"foundingLocation\":{\"@type\":\"Place\",\"name\":\"Global\"},\"sameAs\":[\"https://x.com/bytesagain\",\"https://github.com/bytesagain/ai-skills\",\"https://clawhub.ai/profile/bytesagain\"],\"contactPoint\":{\"@type\":\"ContactPoint\",\"email\":\"hello@bytesagain.com\",\"contactType\":\"customer support\"},\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"value\":1}},{\"@context\":\"https://schema.org\",\"@type\":\"WebApplication\",\"name\":\"BytesAgain AI Skills Search\",\"url\":\"https://bytesagain.com\",\"applicationCategory\":\"DeveloperApplication\",\"operatingSystem\":\"Web\",\"description\":\"Search engine and MCP API for 60,000+ AI agent skills. Semantic search, role recommendations, and use case packs.\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"USD\"},\"featureList\":[\"Search 60,000+ AI agent skills\",\"Role-based recommendations for developers, creators, and traders\",\"1,000+ curated use case packs\",\"Free MCP API and REST API\",\"Multi-language search (EN, ZH, ES, FR, DE, JA, KO)\"],\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":\"https://bytesagain.com/skills?q={search_term_string}\",\"query-input\":\"required name=search_term_string\"},\"dateModified\":\"2026-06-01\"},{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What is BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"BytesAgain is a curated directory of 60,000+ AI agent skills from ClawHub, GitHub, LobeHub, and Dify. Search skills by keyword in 7 languages, browse by role (developer, creator, trader, marketer) or by use case.\"}},{\"@type\":\"Question\",\"name\":\"How do I find AI skills on BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Use the search bar on BytesAgain.com to search by keyword in 7 languages. You can also browse by role (developer, creator, trader, marketer) or by use case. Each skill shows install instructions for Claude, Cursor, OpenClaw, Continue, and more.\"}},{\"@type\":\"Question\",\"name\":\"Is BytesAgain free?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes, BytesAgain is completely free. No registration required for searching skills. The MCP API is also free with rate limits.\"}},{\"@type\":\"Question\",\"name\":\"Does BytesAgain have an API for AI agents?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes! BytesAgain provides a free MCP SSE endpoint at /api/mcp/sse for AI agents, plus a REST API at /api/mcp?action=search\u0026q=\u003cquery\u003e. No authentication needed.\"}},{\"@type\":\"Question\",\"name\":\"Can I request a new AI skill on BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes! Visit the Requests page on BytesAgain.com to submit a skill request. Your request will be visible to the community and notified to the site admin.\"}}]}]"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"skill\",\"amiao-post-to-wechat\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"skill\",{\"children\":[[\"slug\",\"amiao-post-to-wechat\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/07v-rkwetoheo.css?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"llms\",\"href\":\"/llms.txt\"}],[\"$\",\"link\",null,{\"rel\":\"llms-full\",\"href\":\"/llms-full.txt\"}],[\"$\",\"script\",null,{\"async\":true,\"src\":\"https://www.googletagmanager.com/gtag/js?id=G-3C1MM9FWYF\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n          window.dataLayer = window.dataLayer || [];\\n          function gtag(){dataLayer.push(arguments);}\\n          gtag('js', new Date());\\n          gtag('config', 'G-3C1MM9FWYF');\\n        \"}}]]}],[\"$\",\"body\",null,{\"className\":\"geist_9e050971-module__05dp7a__className\",\"style\":{\"background\":\"#0a0a1a\",\"color\":\"#e0e0e0\",\"margin\":0},\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"div\",null,{\"style\":{\"width\":\"100%\",\"background\":\"linear-gradient(90deg,#13103a,#0d0d1f,#13103a)\",\"borderBottom\":\"1px solid #2a2a5a\",\"padding\":\"8px 20px\",\"textAlign\":\"center\",\"fontSize\":\".82em\",\"color\":\"#818cf8\"},\"children\":[\"🎁 \",[\"$\",\"strong\",null,{\"style\":{\"color\":\"#e2e8f0\"},\"children\":\"Get the FREE AI Skills Starter Guide\"}],\" — \",[\"$\",\"a\",null,{\"href\":\"/register\",\"style\":{\"color\":\"#00d4ff\",\"textDecoration\":\"underline\"},\"children\":\"Subscribe →\"}]]}],[\"$\",\"$L3\",null,{}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$4\"}}],\"$L5\",\"$L6\",\"$L7\"]}]}]]}]]}],{\"children\":[\"$L8\",{\"children\":[\"$L9\",{\"children\":[\"$La\",{},null,false,null]},null,false,\"$@b\"]},null,false,\"$@b\"]},null,false,null],\"$Lc\",false]],\"m\":\"$undefined\",\"G\":[\"$d\",[\"$Le\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"f:I[39756,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"default\"]\n10:I[37457,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"default\"]\n11:I[22016,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0ka051yepewro.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"\"]\n12:I[90940,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"default\"]\n13:I[16397,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"default\"]\n15:I[97367,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"OutletBoundary\"]\n16:\"$Sreact.suspense\"\n19:I[97367,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"ViewportBoundary\"]\n1b:I[97367,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"MetadataBoundary\"]\n"])</script><script>self.__next_f.push([1,"5:[\"$\",\"main\",null,{\"children\":[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"main\",null,{\"style\":{\"minHeight\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"background\":\"#050611\",\"color\":\"#e5e7eb\"},\"children\":[[\"$\",\"style\",null,{\"children\":\"\\n        .nf-box { text-align: center; padding: 60px 32px; }\\n        .nf-code { font-size: 6rem; font-weight: 900; color: #22d3ee; line-height: 1; margin: 0; }\\n        .nf-title { font-size: 1.8rem; font-weight: 800; margin: 12px 0 8px; }\\n        .nf-desc { color: #64748b; font-size: 1rem; margin-bottom: 32px; max-width: 440px; }\\n        .nf-link { display: inline-block; padding: 12px 28px; background: linear-gradient(135deg,#34d399,#22d3ee); color: #000; font-weight: 900; border-radius: 12px; text-decoration: none; }\\n      \"}],[\"$\",\"div\",null,{\"className\":\"nf-box\",\"children\":[[\"$\",\"p\",null,{\"className\":\"nf-code\",\"children\":\"404\"}],[\"$\",\"h1\",null,{\"className\":\"nf-title\",\"children\":\"Page Not Found\"}],[\"$\",\"p\",null,{\"className\":\"nf-desc\",\"children\":\"The skill or page you're looking for doesn't exist or has been moved.\"}],[\"$\",\"$L11\",null,{\"className\":\"nf-link\",\"href\":\"/\",\"children\":\"Back to BytesAgain\"}]]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]\n"])</script><script>self.__next_f.push([1,"6:[\"$\",\"$L12\",null,{}]\n7:[\"$\",\"$L13\",null,{}]\n8:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n9:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Lf\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L10\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\na:[\"$\",\"$1\",\"c\",{\"children\":[\"$L14\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0~t057~scpf-f.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L15\",null,{\"children\":[\"$\",\"$16\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@17\"}]}]]}]\n18:[]\nb:\"$W18\"\nc:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L19\",null,{\"children\":\"$L1a\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L1b\",null,{\"children\":[\"$\",\"$16\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1c\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\ne:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/07v-rkwetoheo.css?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"1a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1d:I[27201,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"IconMark\"]\n17:null\n"])</script><script>self.__next_f.push([1,"1c:[[\"$\",\"title\",\"0\",{\"children\":\"阿淼发公众号 — AI Agent Skill | BytesAgain | BytesAgain\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Editor-first WeChat Official Account publishing skill. Posts content to WeChat Official Account (微信公众号) via API or browser, while prioritizing humanized writ...\"}],[\"$\",\"meta\",\"2\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"3\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"4\",{\"name\":\"llms-txt\",\"content\":\"https://bytesagain.com/llms.txt\"}],[\"$\",\"meta\",\"5\",{\"name\":\"llms-full-txt\",\"content\":\"https://bytesagain.com/llms-full.txt\"}],[\"$\",\"link\",\"6\",{\"rel\":\"canonical\",\"href\":\"https://bytesagain.com/skill/amiao-post-to-wechat\"}],[\"$\",\"meta\",\"7\",{\"name\":\"baidu-site-verification\",\"content\":\"codeva-0evUqX1TFs\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:title\",\"content\":\"阿淼发公众号 — AI Agent Skill | BytesAgain\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:description\",\"content\":\"Editor-first WeChat Official Account publishing skill. Posts content to WeChat Official Account (微信公众号) via API or browser, while prioritizing humanized writ...\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:url\",\"content\":\"https://bytesagain.com/skill/amiao-post-to-wechat\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:site_name\",\"content\":\"BytesAgain\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image\",\"content\":\"https://bytesagain.com/social-preview.png\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"阿淼发公众号 — AI Agent Skill | BytesAgain\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Editor-first WeChat Official Account publishing skill. Posts content to WeChat Official Account (微信公众号) via API or browser, while prioritizing humanized writ...\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://bytesagain.com/social-preview.png\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"22\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L1d\",\"23\",{}]]\n"])</script><script>self.__next_f.push([1,"1e:T1463,"])</script><script>self.__next_f.push([1,"\n        .skill-page { max-width: 1100px; margin: 0 auto; padding: 32px 20px 80px; }\n        .two-col { display: flex; gap: 32px; align-items: flex-start; }\n        .two-col-main { flex: 1; min-width: 0; }\n        .two-col-side { width: 300px; flex-shrink: 0; }\n        @media (max-width: 860px) {\n          .two-col { flex-direction: column; }\n          .two-col-side { width: 100%; }\n        }\n        .breadcrumb { font-size: .82em; color: #4b5563; margin-bottom: 28px; }\n        .breadcrumb a { color: #818cf8; text-decoration: none; }\n        .breadcrumb a:hover { text-decoration: underline; }\n        .skill-card { background: #0d0d1f; border: 1px solid #1e1e3f; border-radius: 20px; padding: 28px; margin-bottom: 24px; }\n        .skill-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }\n        .skill-badges { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n        .skill-top-actions { display: flex; align-items: center; gap: 10px; margin-left: auto; }\n        .badge { display: inline-flex; align-items: center; gap: 5px; font-size: .75em; font-weight: 600; padding: 4px 12px; border-radius: 999px; border: 1px solid transparent; }\n        .skill-title { font-size: 1.6em; font-weight: 800; color: #f1f5f9; margin: 0 0 4px; line-height: 1.2; }\n        .skill-owner { font-size: .82em; color: #4b5563; margin: 0 0 14px; }\n        .skill-owner span { color: #818cf8; }\n        .skill-desc { font-size: .92em; color: #94a3b8; line-height: 1.65; margin: 0 0 16px; }\n        .skill-meta { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; padding-bottom: 16px; border-bottom: 1px solid #1e1e3f; }\n        .meta-item { display: flex; flex-direction: column; gap: 2px; }\n        .meta-label { font-size: .7em; color: #374151; text-transform: uppercase; letter-spacing: 1px; font-weight: 600; }\n        .meta-value { font-size: .92em; color: #94a3b8; font-weight: 600; }\n        .tags-row { display: flex; gap: 6px; flex-wrap: wrap; }\n        .tag { font-size: .75em; color: #6366f1; background: #6366f115; border: 1px solid #6366f130; border-radius: 6px; padding: 3px 10px; text-decoration: none; }\n        .tag:hover { background: #6366f125; }\n        .install-box { background: #070714; border: 1px solid #1e1e3f; border-radius: 12px; overflow: hidden; margin-bottom: 24px; }\n        .install-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 16px; border-bottom: 1px solid #1e1e3f; }\n        .install-dots { display: flex; gap: 6px; }\n        .dot { width: 10px; height: 10px; border-radius: 50%; }\n        .install-label { font-size: .72em; color: #374151; font-family: monospace; letter-spacing: 1px; }\n        .install-body { padding: 16px 20px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }\n        .install-cmd { font-family: 'Courier New', monospace; font-size: 1em; color: #a5f3fc; }\n        .copy-btn { font-size: .75em; color: #6366f1; background: #6366f115; border: 1px solid #6366f130; border-radius: 6px; padding: 5px 12px; cursor: pointer; white-space: nowrap; transition: all .15s; }\n        .copy-btn:hover { background: #6366f125; }\n        .btn-secondary { display: inline-flex; align-items: center; gap: 8px; padding: 13px 24px; background: transparent; border: 1px solid #1e1e3f; border-radius: 10px; color: #6b7280; text-decoration: none; font-weight: 600; font-size: .95em; transition: all .15s; }\n        .btn-secondary:hover { border-color: #818cf8; color: #818cf8; }\n        .ours-badge { display: inline-flex; align-items: center; gap: 6px; font-size: .72em; font-weight: 700; color: #22d3ee; background: #22d3ee10; border: 1px solid #22d3ee30; border-radius: 999px; padding: 4px 14px; }\n        .section-card { background: #0d0d1f; border: 1px solid #1e1e3f; border-radius: 16px; padding: 22px 24px; margin-bottom: 20px; }\n        .section-title { color: #f8fafc; font-size: 1.08em; font-weight: 800; margin: 0 0 12px; display: flex; align-items: center; gap: 8px; }\n        /* Script box */\n        .script-header { display: flex; align-items: center; justify-content: space-between; padding: 8px 14px; background: #0a0a1c; border-bottom: 1px solid #1e1e3f; }\n        .script-filename { font-size: .72em; color: #4b5563; font-family: 'Courier New', monospace; }\n        .script-copy-btn { font-size: .72em; color: #6366f1; background: none; border: 1px solid #6366f130; border-radius: 4px; padding: 2px 10px; cursor: pointer; }\n        .script-copy-btn:hover { background: #6366f115; }\n        .script-body { padding: 14px 16px; font-family: 'Courier New', monospace; font-size: .82em; line-height: 1.6; color: #a5f3fc; overflow-x: auto; max-height: 420px; overflow-y: auto; white-space: pre; }\n        /* Articles */\n        .article-card { display: block; background: #0f0f23; border: 1px solid #1a1a3e; border-radius: 10px; padding: 14px 16px; text-decoration: none; transition: border-color .15s; }\n        .article-card:hover { border-color: #6366f1; }\n        @media (max-width: 600px) {\n          .skill-card { padding: 20px; }\n          .skill-title { font-size: 1.5em; }\n        }\n      "])</script><script>self.__next_f.push([1,"14:[[\"$\",\"style\",null,{\"children\":\"$1e\"}],\"$L1f\",\"$L20\"]\n"])</script><script>self.__next_f.push([1,"21:I[78297,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0~t057~scpf-f.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"default\"]\n22:T65a4,"])</script><script>self.__next_f.push([1,"\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\nname: amiao-post-to-wechat\ndescription: Editor-first WeChat Official Account publishing skill. Posts content to WeChat Official Account (微信公众号) via API or browser, while prioritizing humanized writing, WeChat-native formatting, compatibility, and efficient publishing. Supports article posting (文章) with HTML, markdown, or plain text input, and image-text posting (贴图/图文) with multiple images. Use when user mentions 发布公众号, 微信公众号, post to wechat, 公众号文章, 图文, 贴图, markdown 发公众号, 写完发一下, 帮我发到公众号, or similar.\nversion: 3.0.0\nskill_schema: 1.0\nmetadata:\n  openclaw:\n    homepage: https://clawhub.ai/skills/amiao-post-to-wechat\n    requires:\n      anyBins:\n        - bun\n        - npx\nchangelog:\n  - version: 3.0.0\n    changes:\n      - FSM-based workflow replacing linear checklist\n      - 7-dimension quality scoring system (0-100) with per-publish logging\n      - Auto-tune suggestions after every 10 publish cycles\n      - Error levels 1-4 with automatic retry\n      - Turbo mode for pre-polished content\n      - Parallel side-computation in editorial pass\n      - Industry terminology protection via config\n      - Domain-specific AI-tone signal suppression\n      - Access token cache with auto-refresh\n      - Image source resolution with graceful fallback\n  - version: 2.1.0\n    changes:\n      - Domain AI-tone signals and protected terms\n      - Pre-publish confirmation step\n      - Image source resolution order\n      - CTA type guidance\n      - Slug rules for Chinese titles\n\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eWeChat Official Account Publishing Skill v3.0.0\u003c/h2\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eLanguage\u003c/h3\u003e\nAlways match the user's language. Chinese input → respond in Chinese. English input → respond in English.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eCore Principle\u003c/h3\u003e\nThis skill is an \u003cstrong style=\"color:#e5e7eb\"\u003eeditor-first, self-improving publishing pipeline\u003c/strong\u003e — not a raw uploader.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003ePriority order\u003c/strong\u003e:\n1. Humanized writing quality\n2. WeChat compatibility\n3. Visual readability\n4. Publishing speed\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eNever sacrifice compatibility for fancy formatting. Never sacrifice readability for automation.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eQuick Reference\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Mode | When | Key flag |\n|------|------|----------|\n| Standard | Default | — |\n| Turbo | Content already polished | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e--turbo\u003c/code\u003e or \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eturbo: true\u003c/code\u003e in frontmatter |\n| Raw | Skip all editorial pass | \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e--raw\u003c/code\u003e |\n| Image-text | Short post with images | auto-detected |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eSupported tones\u003c/strong\u003e: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e专业评论\u003c/code\u003e · \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e行业快评\u003c/code\u003e · \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e知识科普\u003c/code\u003e · \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e观点专栏\u003c/code\u003e · \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e深度分析\u003c/code\u003e · \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e快讯播报\u003c/code\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eReference files\u003c/strong\u003e (load when needed):\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/fsm.md\u003c/code\u003e — Full FSM state table\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/quality-scoring.md\u003c/code\u003e — Scoring rubric details\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/editorial-rules.md\u003c/code\u003e — Humanization + formatting rules\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/config-reference.md\u003c/code\u003e — All EXTEND.md keys + full example\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/scripts.md\u003c/code\u003e — Script CLI reference\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/troubleshooting.md\u003c/code\u003e — Error levels + fix guide\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eFSM Workflow (Summary)\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eLoad \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/fsm.md\u003c/code\u003e for the complete state transition table.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eState sequence\u003c/strong\u003e:\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eidle\n  → loading_config\n    → resolving_account\n      → classifying_input\n        → [turbo?] editorial_pass_light / editorial_pass_full\n          → metadata_validation\n            → packaging_check\n              → pre_publish_confirm (if enabled)\n                → publishing\n                  → reporting → idle\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eKey transition rules\u003c/strong\u003e:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eeditorial_pass_full\u003c/code\u003e loops max \u003cstrong style=\"color:#e5e7eb\"\u003e2 iterations\u003c/strong\u003e if quality_score \u003c threshold; then warn + continue\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003epackaging_check\u003c/code\u003e auto-repairs what it can; halts only for missing cover (API mode)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003epublishing\u003c/code\u003e auto-retries on LEVEL 1 errors (max 2 retries); escalates on LEVEL 3+\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAny state can transition to \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eerror_report\u003c/code\u003e on unrecoverable failure\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eError Levels\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Level | Type | Behavior |\n|-------|------|----------|\n| 1 | Transient (token expiry, network blip) | Auto-retry silently (max 2, wait 3–10s) |\n| 2 | Auto-repairable (missing summary, cover fallback, over-length) | Repair + flag in confirmation |\n| 3 | Requires user action (credentials missing, empty content) | Halt + exact setup guide |\n| 4 | Unrecoverable API error | Log + show error code + link to mp.weixin.qq.com |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eSee \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/troubleshooting.md\u003c/code\u003e for full repair paths.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eQuality Scoring (Pre-publish)\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eScore is computed before \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003epre_publish_confirm\u003c/code\u003e. Load \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/quality-scoring.md\u003c/code\u003e for rubric.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Dimension | Max | Signal |\n|-----------|-----|--------|\n| opening_hook | 20 | First paragraph creates pull or tension |\n| heading_quality | 15 | Reader-question style, not generic labels |\n| paragraph_rhythm | 15 | Varied length, no mechanical same-beat paragraphs |\n| ai_tone_density | 20 | Inverse: fewer blocked phrases = higher score |\n| term_preservation | 10 | All \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eprotected_terms\u003c/code\u003e intact |\n| ending_quality | 10 | Human close + CTA present |\n| length_fit | 10 | Within \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003edefault_article_length\u003c/code\u003e, not padded |\n| \u003cstrong style=\"color:#e5e7eb\"\u003eTotal\u003c/strong\u003e | \u003cstrong style=\"color:#e5e7eb\"\u003e100\u003c/strong\u003e | |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eThresholds\u003c/strong\u003e:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e≥ 70 → proceed normally\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e60–69 → proceed with warning in confirmation\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003c 60 → another editorial pass (max 2 total)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003c 50 → halt even in Turbo mode\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eShow score + brief per-dimension note in \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003epre_publish_confirm\u003c/code\u003e.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eTurbo Mode\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eActivated by \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e--turbo\u003c/code\u003e flag or \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eturbo: true\u003c/code\u003e in frontmatter.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eSkips\u003c/strong\u003e: deep humanization pass, pre-publish confirmation (auto-proceed), quality score display (only blocks if \u003c 50)\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eStill runs\u003c/strong\u003e: metadata resolution, packaging check (auto-repair), cover resolution, token cache check, publish, log\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eUse when content is already manually polished, or when batch-publishing multiple articles.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eEditorial Pass (Standard)\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eLoad \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/editorial-rules.md\u003c/code\u003e for full humanization rules, AI-tone signal list, and formatting downgrade table.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eParallelizable side-computations\u003c/strong\u003e (run while main humanization pass runs):\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eSlug generation (from title)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eTail keyword generation (from article topic)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eProfile block inference (from account config)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eImage count assessment (from article length)\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eHumanization strength\u003c/strong\u003e:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003elight\u003c/code\u003e: minimal cleanup, preserve style\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003emedium\u003c/code\u003e: default; improve rhythm, headings, opening, ending\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003estrong\u003c/code\u003e: substantial rewrite while preserving meaning\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eIndustry terminology protection\u003c/strong\u003e: Never simplify or paraphrase \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eprotected_terms\u003c/code\u003e. These are load-bearing words for the target audience.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eImage Handling\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCount guidance by length\u003c/strong\u003e:\n| Article length | Preferred images |\n|---------------|-----------------|\n| \u003c 800 chars | 2 |\n| 800–1500 chars | 2–3 |\n| 1500–2000 chars | 3 (optionally 4) |\n| \u003e 2000 chars | compress content first, then reassess |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eSource resolution order\u003c/strong\u003e:\n1. Inline images already in markdown / HTML\n2. \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eimgs/\u003c/code\u003e directory beside article file\n3. User-supplied via \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e--images\u003c/code\u003e\n4. If insufficient: warn in confirmation, do not block publish\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eMetadata \u0026 Packaging\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eMetadata resolution\u003c/strong\u003e (each field):\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eTitle: CLI → frontmatter/H1 → strongest H2 → first meaningful sentence → auto-generate\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eSummary: CLI → frontmatter → first paragraph trimmed → auto-generate\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAuthor: CLI → frontmatter → account default → global default\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003ePackaging checklist\u003c/strong\u003e (auto-repair if missing, unless \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e--raw\u003c/code\u003e):\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] Length within \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003edefault_article_length\u003c/code\u003e\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] 2–4 images (warn if under; do not block)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] Long-tail keyword block (3–8 phrases, topic-specific)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e[ ] Public-account profile block\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCover image resolution\u003c/strong\u003e (API mode only):\n1. \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e--cover\u003c/code\u003e → frontmatter cover fields → \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eimgs/cover.png\u003c/code\u003e → first inline image → halt if still missing\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eAccess Token Cache\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eCache location (in priority order): \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eamiao/.wechat-token-cache\u003c/code\u003e → \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e~/amiao/.wechat-token-cache\u003c/code\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eBehavior: read cache → verify expiry → refresh if expired/invalid → update cache. Failure to refresh = LEVEL 1 retry, then LEVEL 3 if persistent.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003ePublish Log + Auto-tune\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eEvery successful publish appends one record to \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eamiao/.publish-log.yaml\u003c/code\u003e:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e- date: \u003cISO8601+08:00\u003e\n  account: \u003calias\u003e\n  article_title: \u003ctitle\u003e\n  quality_score: \u003c0-100\u003e\n  humanize_level: \u003clight|medium|strong\u003e\n  tone: \u003ctone\u003e\n  article_length: \u003cchars\u003e\n  image_count: \u003cn\u003e\n  publish_method: \u003capi|browser\u003e\n  media_id: \u003cid\u003e\n  issues_found: [\u003clist of flags\u003e]\n  cta_type: \u003ctype\u003e\n  tail_keywords: [\u003clist\u003e]\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eAuto-tune\u003c/strong\u003e (triggered after every 10th publish cycle):\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAvg quality_score \u003c 72 → suggest reviewing humanization defaults\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eTail keywords repeat too uniformly → suggest refreshing \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003edefault_tail_keywords\u003c/code\u003e\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eArticle length consistently under/over → suggest adjusting \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003edefault_article_length\u003c/code\u003e\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eOne tone consistently scores higher → suggest making it \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003edefault_tone\u003c/code\u003e\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eReport suggestions at end of 10th cycle. Never auto-apply; always surface to user.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003ePre-publish Confirmation Summary\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eShow when \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003econfirm_before_publish: true\u003c/code\u003e (default), or when packaging was repaired, or when image count is below target.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e───────────────────────────────────────\n发布前确认 / Pre-publish Summary\n───────────────────────────────────────\n账号 Account   : [name]\n方式 Method    : [api / browser]\n主题 Theme     : [theme] [color]\n编辑 Editorial : [humanize level] · [tone]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e标题 Title     : [title]\n摘要 Summary   : [summary]\n字数 Length    : ~[N] 字\n图片 Images    : [N] 张 [⚠ below target if applicable]\n质量评分 Score : [N]/100  ([brief note if \u003c 70])\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e封面 Cover     : [resolved / ⚠ missing]\n长尾词 Keywords: ✓ present / ⚠ missing\n账号介绍 Profile: ✓ present / ⚠ missing\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e[⚠ Any auto-repairs applied]\n───────────────────────────────────────\n确认发布?(y/n / 输入 e 返回编辑)\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eIf \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003econfirm_before_publish: false\u003c/code\u003e and no warnings: skip confirmation, show summary inline in completion report instead.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eCompletion Report\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e✓ WeChat Publishing Complete!\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eInput    : [type] · [path]\nMethod   : [API / Browser]\nAccount  : [name]\nTheme    : [theme] [color]\nEditorial: [humanize] · [tone]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eArticle:\n  Title   : [title]\n  Summary : [summary]\n  Images  : [N]\n  Comments: [open/closed] · [fans-only/all]\n  Score   : [N]/100\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eResult:\n  ✓ Draft saved to WeChat Official Account\n  media_id: [id]   (API mode)\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFiles:\n  [• slug.md if created from plain text]\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eNext: https://mp.weixin.qq.com → 内容管理 → 草稿箱\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eScripts\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eLoad \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/scripts.md\u003c/code\u003e for full CLI reference.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Script | Purpose |\n|--------|---------|\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003escripts/wechat-api.ts\u003c/code\u003e | Article via API |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003escripts/wechat-article.ts\u003c/code\u003e | Article via browser |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003escripts/wechat-browser.ts\u003c/code\u003e | Image-text post |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003escripts/md-to-wechat.ts\u003c/code\u003e | Markdown → WeChat HTML |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003escripts/check-permissions.ts\u003c/code\u003e | Environment preflight |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eRuntime: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ebun\u003c/code\u003e → \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enpx -y bun\u003c/code\u003e → explain + suggest install\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCritical\u003c/strong\u003e: Publishing scripts handle markdown conversion internally. \u003cstrong style=\"color:#e5e7eb\"\u003eNever pre-convert markdown to HTML before calling the publish script.\u003c/strong\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eConfiguration\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eLoad \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/config-reference.md\u003c/code\u003e for all supported EXTEND.md keys and a full annotated example.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eEXTEND.md location\u003c/strong\u003e (checked in order):\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eamiao/amiao-post-to-wechat/EXTEND.md          # project-level\n${XDG_CONFIG_HOME:-$HOME/.config}/amiao/amiao-post-to-wechat/EXTEND.md\n$HOME/amiao/amiao-post-to-wechat/EXTEND.md    # user-level\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eIf not found → run first-time setup (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/config/first-time-setup.md\u003c/code\u003e) before proceeding.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eValue priority\u003c/strong\u003e: CLI → frontmatter → EXTEND (account → global) → skill defaults\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eOpenClaw / ClawHub Rules\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eSKILL.md\u003c/code\u003e is the primary agent contract; keep it self-contained and readable\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eRelative paths assume scripts/references live beside this skill\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eNo hard-coded machine-specific absolute paths\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eAll defaults degrade gracefully when optional config is absent\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eSkill name, version, and metadata must stay clean for ClawHub distribution\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFavor backward-compatible defaults on version updates\u003c/li\u003e\n\u003c/p\u003e"])</script><script>self.__next_f.push([1,"1f:[\"$\",\"div\",null,{\"className\":\"skill-page\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"SoftwareApplication\\\",\\\"name\\\":\\\"阿淼发公众号\\\",\\\"description\\\":\\\"Editor-first WeChat Official Account publishing skill. Posts content to WeChat Official Account (微信公众号) via API or browser, while prioritizing humanized writ...\\\",\\\"url\\\":\\\"https://bytesagain.com/skill/amiao-post-to-wechat\\\",\\\"applicationCategory\\\":\\\"clawhub\\\",\\\"operatingSystem\\\":\\\"Any\\\",\\\"offers\\\":{\\\"@type\\\":\\\"Offer\\\",\\\"price\\\":\\\"0\\\",\\\"priceCurrency\\\":\\\"USD\\\"},\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"BytesAgain\\\",\\\"url\\\":\\\"https://bytesagain.com\\\"}}\"}}],[\"$\",\"div\",null,{\"className\":\"breadcrumb\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/\",\"children\":\"BytesAgain\"}],\" › \",[\"$\",\"a\",null,{\"href\":\"/skills\",\"children\":\"Skills\"}],\" › \",\"阿淼发公众号\"]}],[\"$\",\"div\",null,{\"className\":\"two-col\",\"children\":[[\"$\",\"div\",null,{\"className\":\"two-col-main\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-card\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-header\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-badges\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge\",\"style\":{\"color\":\"#818cf8\",\"background\":\"#818cf822\",\"borderColor\":\"#818cf844\"},\"children\":[\"🦀\",\" \",\"ClawHub\"]}],false]}],[\"$\",\"div\",null,{\"className\":\"skill-top-actions\",\"children\":[\"$\",\"$L21\",null,{\"slug\":\"amiao-post-to-wechat\"}]}]]}],[\"$\",\"h1\",null,{\"className\":\"skill-title\",\"children\":\"阿淼发公众号\"}],[\"$\",\"p\",null,{\"className\":\"skill-owner\",\"children\":[\"by \",[\"$\",\"span\",null,{\"children\":[\"@\",\"tmxccc\"]}]]}],[\"$\",\"p\",null,{\"className\":\"skill-desc\",\"children\":\"Editor-first WeChat Official Account publishing skill. Posts content to WeChat Official Account (微信公众号) via API or browser, while prioritizing humanized writ...\"}],[\"$\",\"div\",null,{\"className\":\"skill-meta\",\"children\":[[\"$\",\"div\",null,{\"className\":\"meta-item\",\"children\":[[\"$\",\"span\",null,{\"className\":\"meta-label\",\"children\":\"Version\"}],[\"$\",\"span\",null,{\"className\":\"meta-value\",\"children\":[\"v\",\"3.0.1\"]}]]}],[\"$\",\"div\",null,{\"className\":\"meta-item\",\"children\":[[\"$\",\"span\",null,{\"className\":\"meta-label\",\"children\":\"Downloads\"}],[\"$\",\"span\",null,{\"className\":\"meta-value\",\"children\":\"525\"}]]}],false,false,false,[\"$\",\"div\",null,{\"className\":\"meta-item\",\"style\":{\"flexDirection\":\"row\",\"gap\":6,\"alignItems\":\"center\"},\"children\":[[\"$\",\"a\",\"writing\",{\"href\":\"/?q=writing\",\"className\":\"tag\",\"children\":[\"#\",\"writing\"]}],[\"$\",\"a\",\"social-media\",{\"href\":\"/?q=social-media\",\"className\":\"tag\",\"children\":[\"#\",\"social-media\"]}],[\"$\",\"a\",\"legal\",{\"href\":\"/?q=legal\",\"className\":\"tag\",\"children\":[\"#\",\"legal\"]}]]}]]}],[\"$\",\"div\",null,{\"style\":{\"marginTop\":6},\"children\":[\"$\",\"a\",null,{\"href\":\"https://clawhub.ai/tmxccc/amiao-post-to-wechat\",\"target\":\"_blank\",\"rel\":\"noopener\",\"className\":\"btn-secondary\",\"style\":{\"padding\":\"6px 12px\",\"fontSize\":\".82em\",\"borderRadius\":8,\"background\":\"transparent\",\"border\":\"1px solid #1e1e3f\",\"color\":\"#6b7280\",\"textDecoration\":\"none\",\"whiteSpace\":\"nowrap\"},\"children\":[\"View on \",\"ClawHub\",\" →\"]}]}]]}],[\"$\",\"div\",null,{\"className\":\"install-box\",\"children\":[[\"$\",\"div\",null,{\"className\":\"install-header\",\"children\":[[\"$\",\"div\",null,{\"className\":\"install-dots\",\"children\":[[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#ef4444\"}}],[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#eab308\"}}],[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#22c55e\"}}]]}],[\"$\",\"span\",null,{\"className\":\"install-label\",\"children\":\"TERMINAL\"}]]}],[\"$\",\"div\",null,{\"className\":\"install-body\",\"style\":{\"flexWrap\":\"wrap\"},\"children\":[[\"$\",\"code\",null,{\"className\":\"install-cmd\",\"children\":\"clawhub install amiao-post-to-wechat\"}],[\"$\",\"button\",null,{\"className\":\"copy-btn\",\"data-cmd\":\"clawhub install amiao-post-to-wechat\",\"style\":{\"fontWeight\":700},\"children\":\"Copy\"}]]}]]}],[\"$\",\"section\",null,{\"className\":\"skill-card\",\"style\":{\"marginBottom\":20},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"color\":\"#f8fafc\",\"fontSize\":\"1.2em\",\"fontWeight\":800,\"margin\":\"0 0 16px\",\"display\":\"flex\",\"alignItems\":\"center\",\"gap\":8},\"children\":\"📖 About This Skill\"}],[\"$\",\"div\",null,{\"style\":{\"fontSize\":\".92em\",\"color\":\"#94a3b8\",\"lineHeight\":1.75},\"dangerouslySetInnerHTML\":{\"__html\":\"$22\"}}]]}],null,null,\"$L23\",null,null,null,null,false,false]}],\"$L24\"]}]]}]\n"])</script><script>self.__next_f.push([1,"20:[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n        document.querySelectorAll('.copy-btn, .script-copy-btn').forEach(btn =\u003e {\\n          btn.addEventListener('click', () =\u003e {\\n            const cmd = btn.getAttribute('data-cmd');\\n            if (!cmd) return;\\n            navigator.clipboard.writeText(cmd).then(() =\u003e {\\n              const orig = btn.textContent;\\n              btn.textContent = 'Copied!';\\n              setTimeout(() =\u003e btn.textContent = orig, 1500);\\n            }).catch(() =\u003e {});\\n          });\\n        });\\n      \"}}]\n"])</script><script>self.__next_f.push([1,"26:I[71521,[\"/_next/static/chunks/0j7976nc1zlv1.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\",\"/_next/static/chunks/0~t057~scpf-f.js?dpl=dpl_8BavFdE5zgaEzeDDeRJuHgbHFqSc\"],\"default\"]\n25:T4c6,\u003cp style=\"margin:8px 0\"\u003eLoad \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/config-reference.md\u003c/code\u003e for all supported EXTEND.md keys and a full annotated example.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eEXTEND.md location\u003c/strong\u003e (checked in order):\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eamiao/amiao-post-to-wechat/EXTEND.md          # project-level\n${XDG_CONFIG_HOME:-$HOME/.config}/amiao/amiao-post-to-wechat/EXTEND.md\n$HOME/amiao/amiao-post-to-wechat/EXTEND.md    # user-level\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eIf not found → run first-time setup (\u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ereferences/config/first-time-setup.md\u003c/code\u003e) before proceeding.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eValue priority\u003c/strong\u003e: CLI → frontmatter → EXTEND (account → global) → skill defaults\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e23:[\"$\",\"section\",null,{\"className\":\"skill-card\",\"style\":{\"marginBottom\":20},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"color\":\"#f8fafc\",\"fontSize\":\"1.2em\",\"fontWeight\":800,\"margin\":\"0 0 16px\",\"display\":\"flex\",\"alignItems\":\"center\",\"gap\":8},\"children\":\"⚙️ Configuration\"}],[\"$\",\"div\",null,{\"style\":{\"fontSize\":\".92em\",\"color\":\"#94a3b8\",\"lineHeight\":1.75},\"dangerouslySetInnerHTML\":{\"__html\":\"$25\"}}]]}]\n24:[\"$\",\"div\",null,{\"className\":\"two-col-side\",\"children\":[\"$\",\"$L26\",null,{\"category\":\"clawhub\",\"currentSlug\":\"amiao-post-to-wechat\",\"name\":\"阿淼发公众号\",\"tags\":[\"writing\",\"social-media\",\"legal\"]}]}]\n"])</script></body></html>