Install
openclaw skills install weiwuming-formatterConvert uploaded .doc/.docx files or pasted text into WeChat article markdown using the "谓无名" editor syntax. Use when the user uploads Word documents, pastes article text, asks to format for WeChat, add syntax markers, 排版文章, or convert academic/articles into the custom WeChat editor markdown. The skill preserves source content, extracts Word structure, and produces editor-ready markdown without inventing missing information or image URLs.
openclaw skills install weiwuming-formatterConvert Word documents and pasted text into markdown for the "谓无名" WeChat article editor.
https://placeholder, [待确认], or [信息缺失] in the formatted article.images/ folder, each image is automatically uploaded to https://img.scdn.io/api/v1.php (public image host). The returned URL is then inserted into the corresponding syntax field. If the upload fails, fall back to an empty image field and report in 校对提醒.[book:|书名|作者|出版社|年份]); if an image is available and uploaded successfully, the returned URL will be filled in.校对提醒.### 标题 / 作者 line and before the first ## section heading.>>> must be on the same line as the content start, and <<< must be on a separate line at the end.
>>> 编者按内容...
<<<
>>>
编者按内容...
Every article must follow this order:
>>> / <<<, ~500 chars, after ### 标题 / 作者---[toc] ... ---[/toc]---[notes] ... ---[/notes]---[note] ... ---[/note] block with:
---[bio-title:作者简介] ... ---[/bio]---[bio-title:译者简介] ... ---[/bio]---[reading-title:延伸阅读] ... ---[/reading][staff:...] + ---[follow] ... ---[/follow] + profile## section headings must always be followed by ---[dot]. The ## and ---[dot] are bound together as a single unit.## heading line must be immediately followed by a separate ---[dot] line.### subheadings do NOT have ---[dot] after them. Only ## headings use ---[dot].web-access skill for all web searches and page fetching. Search strategy:
https://img.scdn.io/api/v1.php. The returned URL is inserted into the corresponding syntax field.
https://dou.img.lithub.cc/book/<id>.jpghttps://dou.img.lithub.cc/movie/<id>.jpghttps://dou.img.lithub.cc/tv/<id>.jpghttps://dou.img.lithub.cc/music/<id>.jpgimages/ directory under the same project folder using Bash (curl -L -o or PowerShell Invoke-WebRequest).《》·: etc., keep alphanumeric and CJK):
book_<书名>.jpg — e.g. book_浮世通鉴日本大众文化史.jpgperson_<姓名>.jpg — e.g. person_鲁迅.jpgmovie_<片名>.jpg — e.g. movie_千与千寻.jpgreading_<书名>.jpg — e.g. reading_菊与刀.jpg_2, _3 etc.curl -s -X POST -F "image=@images/<filename>.jpg" -F "outputFormat=webp" -F "cdn_domain=edgeoneimg.cdn.sn" https://img.scdn.io/api/v1.php
"success": true), extract the url field (e.g. https://img.scdn.io/i/xxx.webp).outputFormat=webp for static images (recommended for better compression).校对提醒.[book:https://img.scdn.io/i/xxx.webp|书名|作者|出版社|年份] (URL filled)[universal:https://img.scdn.io/i/xxx.webp|姓名|身份/简介] (URL filled)[reading-book:书名|作者|译者|https://img.scdn.io/i/xxx.webp] (cover URL filled)[book:|书名|作者|出版社|年份] (empty, fallback)book_浮世通鉴日本大众文化史.jpg, upload to image host, get URL https://img.scdn.io/i/abc123.webp, output as [book:https://img.scdn.io/i/abc123.webp|浮世通鉴:日本大众文化史|日文研项目组 编著,党蓓蓓 译|北京大学出版社|2025][universal:|姓名|身份/简介] (no image URL)[book:|书名|作者|出版社|年份] (no image URL)校对提醒.校对提醒:
[book:|书名|作者|出版社|年份] (upload failed, empty image field)images/ is still available for manual upload if needed.[universal:<uploaded_url>|姓名|身份/简介] (download photo to images/person_<姓名>.jpg, upload, fill URL; or empty if upload failed)[book:<uploaded_url>|书名|作者|出版社|年份] / [enbook:<uploaded_url>|Title|Author|Publisher|Year] / [jpbook:<uploaded_url>|書名|著者|出版社|年] (download cover to images/book_<书名>.jpg, upload, fill URL; or empty if upload failed)
|, do NOT use 、 or other delimiters within fields.[book:https://img.scdn.io/i/abc123.webp|浮世通鉴:日本大众文化史|日文研项目组 编著,党蓓蓓 译|北京大学出版社|2025] (cover downloaded and uploaded)[book:xxx.jpg|《书名》|作者,出版社,年份] (missing separators and extra punctuation)[universal:<uploaded_url>|片名|导演/主演/年份/简介] (download poster to images/movie_<片名>.jpg, upload, fill URL; or empty if upload failed)[universal:图片URL|事件名称|简要说明][universal:图片URL|图说第一行|图说第二行][universal:...] block contains a title that is a movie or TV show (e.g., a well-known film title, drama series name), search Douban first to get its item_id, download the poster to images/movie_<片名>.jpg, upload to image host, and fill the URL in the syntax.[book:|书名|作者|出版社|年份]). Do not invent URLs. No file is downloaded or uploaded in this case.---[reading-title:延伸阅读] / ---[/reading] block above the staff entries. Format: [reading-book:书名|作者|译者|<uploaded_url>] — fields MUST be separated by |, cover URL filled from image host upload (download cover to images/reading_<书名>.jpg, upload, fill URL; or empty if upload failed).校对提醒.[staff:...] entries:
[staff:作者姓名|编辑] — filled with the actual author name(s) from the source.[staff:春生、|审校] — the 审校 (reviewer) always defaults to 春生、.---[follow]
东亚视角 全球视野
寻找东亚论述的"虫洞"与"黑洞"
点击下图关注"谓无名"
---[/follow]
Detect input type.
.docx, run python scripts/extract_docx.py <file.docx>..doc, use the same script. It detects the OLE container and tries LibreOffice conversion to .docx before extraction.Analyze structure.
content array.Apply editor syntax. Read references/syntax_rules.md when exact syntax is needed.
### 标题 / 作者 when the source clearly contains both.>>> on the same line as content start, placed after ### 标题 / 作者 and before the first ## heading.## 标题 followed by ---[dot] (always bound together).---[dot] for this (already included after ##).> 原文.---[notes] ... ---[/notes]; note entries use ^[① 内容].---[note] ... ---[/note] for push source attribution (本次推送内容为..., 感谢...授权转载, 图片源于...).---[bio-title:作者简介], [bio:原文], ---[/bio].web-access skill for all searches (WebSearch for keyword searches, WebFetch for URL-based extraction, CDP for complex sites); download images to images/ directory, upload to image host, then insert [book:<url>|...], [universal:<url>|...], etc. blocks (with uploaded URL) right after the paragraph where each keyword first appears. If upload failed, use empty image field as fallback.web-access skill web-search to find related books and add ---[reading-title:延伸阅读] ... ---[/reading] block above staff. Format: [reading-book:书名|作者|译者|<url>] — fields MUST be separated by |, cover URL filled from image host upload (download cover to images/reading_<书名>.jpg, upload, fill URL; or empty if upload failed).[staff:作者姓名|编辑] + [staff:春生、|审校] (reviewer always defaults to 春生、).---[follow] ... ---[/follow] footer is mandatory for every article.Handle images.
, [bio-img:...], or [universal:...] for local package targets unless the user provides a real hosted URL.images/ and then upload to the image host.images/:
images/ directory in the project folder if it does not exist.curl -L -o images/<filename>.jpg) or PowerShell (Invoke-WebRequest -Uri <url> -OutFile images/<filename>.jpg).curl -s -X POST -F "image=@images/<filename>.jpg" -F "outputFormat=webp" -F "cdn_domain=edgeoneimg.cdn.sn" https://img.scdn.io/api/v1.php
"success": true): extract the url field and insert it into the corresponding syntax block (e.g. [book:https://img.scdn.io/i/xxx.webp|书名|作者|出版社|年份]).[book:|书名|作者|出版社|年份]) and report in 校对提醒.Validate before delivery.
https://img.scdn.io/i/... links from successful uploads, or empty fields for failed uploads/search misses.images/ directory with correct naming (local backup).>>>/<<<, ---[notes]/---[/notes], ---[note]/---[/note], ---[reading-title:]/---[/reading], ---[bio-title:]/---[/bio].---[note]) → 作者简介 → 译者简介(如有) → 延伸阅读 → 末尾固定内容.## heading is followed by ---[dot].Return:
排版结果:
<editor-ready markdown>
图片处理结果:
- ✅ `images/book_书名.jpg` → 已上传 → https://img.scdn.io/i/xxx.webp → [book:https://img.scdn.io/i/xxx.webp|书名|...]
- ✅ `images/person_姓名.jpg` → 已上传 → https://img.scdn.io/i/yyy.webp → [universal:https://img.scdn.io/i/yyy.webp|姓名|...]
- ❌ `images/movie_片名.jpg` → 上传失败 → [universal:|片名|...](本地文件已保留,可手动上传)
校对提醒:
- 未发现明显问题。
If issues exist, list them with source snippets and a concise reason:
校对提醒:
- 可能错别字:"...",建议核对是否应为 "..."。
- 标点疑点:"...",中英文标点混用,建议人工确认。
- 政治/合规风险:"...",建议人工复核表述是否符合发布要求。
- 图片处理:第 N 处图片上传失败,已留空图片字段;本地文件 `images/<filename>.jpg` 已保留,可手动上传至图床后填入。
- 图片下载失败:<关键词>,未找到可用图片源。
- 图片上传失败:<关键词>,图床返回错误 <error_message>,已留空图片字段。
The bundled extractor adopts the minimax-docx approach:
.docx as an OOXML ZIP package..doc to .docx through LibreOffice when available.python-docx.If .doc conversion fails or LibreOffice is unavailable, ask the user for a clean .docx export.