Install
openclaw skills install @bonniegeng-max/md-out-of-chatConvert a Markdown file into a mobile-friendly local HTML page or phone-sized screenshot. Safe default is local-only; a public web URL is only produced when the user explicitly asks for it or the host platform deploy tool is used. Respond in the user's current language.
openclaw skills install @bonniegeng-max/md-out-of-chatPulling Markdown out of chat, into something people can actually read.
AI agents live in chat (WeChat, Feishu, Slack, Discord, …) and love to write .md. But .md doesn't render well in any of those apps. Code breaks, tables misalign, links look dead. This skill is the bridge: it takes a .md file and turns it into a mobile-friendly, copyable, shareable view.
Only activate this skill when the user explicitly mentions it by name (e.g. "use md-out-of-chat", "用 md-out-of-chat 转换") or clearly asks to convert a Markdown file into a readable view / screenshot. Do not activate on vague phrases like "show me this" or "转一下" alone.
.md files cannot be opened in WeChat on mobile.md filehtml (local file, default), web (public URL only when user explicitly requests it and a deploy tool is available), or screenshot (render to PNG).html file that opens in any mobile browserscreenshot: one or more PNG images at phone screen sizeweb: a public URL only if the user explicitly asks for it and the assistant has a deploy tool; otherwise fall back to local HTML + screenshot#1F4E79 (deep blue, used for titles & headings)#3B7DD8 (bright blue, used for emphasis)#F5F7FA (light gray)#FFFFFF (white)#333333 (main) / #666666 (secondary)#E1E5EBsystem-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif"SF Mono", Menlo, Monaco, Consolas, monospace**bold** → strong, *italic* → em, `code` → inline codewhite-space: nowrap on headersPYTHON, SQL, BASH)- [ ] / - [x] render as checkboxes (done items struck through)> lines render as a left-accent-border quote block, gray text[text](url) renders as styled anchor; only http: / https: / mailto: schemes allowed (XSS-safe)word-break: break-all)\| escapes a literal pipe inside cellsDefault to local HTML for safety and privacy. Only produce a public web URL when the user explicitly asks for one and the assistant has a safe deploy path. Offer a screenshot as an alternative when the user asks for an image or when sharing as a picture is more reliable.
When the user asks to view a Markdown file without specifying the output type, generate a local .html file. Tell the user where it is and that it can be opened on a phone browser.
Generate a screenshot only when:
Generate a public URL only when:
Never generate a public URL silently. If deployment is not available, fall back to local HTML and explain why.
< 480px widthmd2share.py only reads the input .md and writes a local .html file.build_and_deploy.sh only prepares a local dist/ folder; it does not upload anything.) are embedded as base64 by default, but only if they live in the same directory as the Markdown file or a subdirectory of it. Absolute paths and parent-directory traversal (../) are blocked unless the user explicitly passes --embed-local-images=all.# 1. Write or place your .md file
# 2. Generate a local HTML file (default: local images under .md dir are embedded)
python3 md2share.py my-notes.md
# 3. (Optional) Allow embedding local images from absolute paths or outside the .md directory
python3 md2share.py my-notes.md --embed-local-images=all
# 4. (Optional) Build dist/ for deployment
./build_and_deploy.sh my-notes.md
# 5. (Optional) Screenshot: render my-notes.html with your own browser/screenshot tool
md2share.py — Core script (md → local html)build_and_deploy.sh — Local build helper (prepares dist/)SKILL.md — This file[^id] refs render as superscript anchors, definitions collected into a NOTES section at the bottom with back-links---, ***, ___) render as styled dividersprefers-color-scheme with a manual toggle that remembers the choice