Markdown Exporter
bowenliang123/markdown-exporter
Convert Markdown text to DOCX, PPTX, XLSX, PDF, PNG, SVG, HTML, IPYNB, MD, CSV, JSON, JSONL, XML files, and extract code blocks in Markdown to Python, Bash,JS and etc files.
把学术论文 PDF 转成微信公众号深度解读推文(长文 + 配图 + 封面)。你主导设计的协调式:机械活(MinerU 解析 PDF、生成封面、md2wechat 发布草稿箱)交给 scripts/ 下的小工具,论文理解、文章结构、长文撰写由你亲自完成并在关键点与用户确认。当用户说“论文转公众号”、“paper2wechat”、“把论文写成公众号文章”、“论文转微信推文”、“PDF…
$ npx skills add QuZhan51496/paper2anything --skill paper2wechat -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install QuZhan51496/paper2anything paper2wechat --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/QuZhan51496/paper2anything.git skills-src && mkdir -p .claude/skills && cp -r skills-src/paper2wechat .claude/skills/paper2wechat && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "paper2wechat" agent skill from https://github.com/QuZhan51496/paper2anything/tree/main/paper2wechat into .claude/skills/paper2wechat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper2wechat", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/QuZhan51496/paper2anything/tree/main/paper2wechatType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add QuZhan51496/paper2anything --skill paper2wechat -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install QuZhan51496/paper2anything paper2wechat --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QuZhan51496/paper2anything.git skills-src && mkdir -p .agents/skills && cp -r skills-src/paper2wechat .agents/skills/paper2wechat && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "paper2wechat" agent skill from https://github.com/QuZhan51496/paper2anything/tree/main/paper2wechat into .agents/skills/paper2wechat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper2wechat", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add QuZhan51496/paper2anything --skill paper2wechat -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install QuZhan51496/paper2anything paper2wechat --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QuZhan51496/paper2anything.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/paper2wechat .cursor/skills/paper2wechat && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "paper2wechat" agent skill from https://github.com/QuZhan51496/paper2anything/tree/main/paper2wechat into .cursor/skills/paper2wechat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper2wechat", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/QuZhan51496/paper2anything.git --path paper2wechat--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add QuZhan51496/paper2anything --skill paper2wechat -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install QuZhan51496/paper2anything paper2wechat --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QuZhan51496/paper2anything.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/paper2wechat .gemini/skills/paper2wechat && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "paper2wechat" agent skill from https://github.com/QuZhan51496/paper2anything/tree/main/paper2wechat into .gemini/skills/paper2wechat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper2wechat", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install QuZhan51496/paper2anything paper2wechatInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add QuZhan51496/paper2anything --skill paper2wechat -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/QuZhan51496/paper2anything.git skills-src && mkdir -p .github/skills && cp -r skills-src/paper2wechat .github/skills/paper2wechat && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "paper2wechat" agent skill from https://github.com/QuZhan51496/paper2anything/tree/main/paper2wechat into .github/skills/paper2wechat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper2wechat", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add QuZhan51496/paper2anything --skill paper2wechat -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install QuZhan51496/paper2anything paper2wechat --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QuZhan51496/paper2anything.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/paper2wechat .opencode/skills/paper2wechat && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "paper2wechat" agent skill from https://github.com/QuZhan51496/paper2anything/tree/main/paper2wechat into .opencode/skills/paper2wechat/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "paper2wechat", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
paper2wechat把学术论文 PDF 转成微信公众号深度解读推文(长文 + 配图 + 封面)。你主导设计的协调式:机械活(MinerU 解析 PDF、生成封面、md2wechat 发布草稿箱)交给 scripts/ 下的小工具,论文理解、文章结构、长文撰写由你亲自完成并在关键点与用户确认。当用户说“论文转公众号”、“paper2wechat”、“把论文写成公众号文章”、“论文转微信推文”、“PDF…
Paper2wechat is an agent skill from QuZhan51496/paper2anything. 把学术论文 PDF 转成微信公众号深度解读推文(长文 + 配图 + 封面)。你主导设计的协调式:机械活(MinerU 解析 PDF、生成封面、md2wechat 发布草稿箱)交给 scripts/ 下的小工具,论文理解、文章结构、长文撰写由你亲自完成并在关键点与用户确认。当用户说“论文转公众号”、“paper2wechat”、“把论文写成公众号文章”、“论文转微信推文”、“PDF 转公众号”时触发。
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts (for example `scripts/_env.py`, `scripts/cover.py` and `scripts/parse_pdf.py`).
It sits in Documents & Office, covering PDF. It works with Bash. The repository describes itself as: An agent skills pack that turns an academic paper PDF into slides, a poster, a webpage, a Xiaohongshu post, or a WeChat article (paper2slides/poster/html/xhs/wechat). The licence is Apache-2.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 72bf82d. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteGlobGrepAskUserQuestionSendUserFileFrom allowed-tools in the SKILL.md frontmatter.
Ships 5 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
condapythonFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.weixin.qq.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
OPENAI_API_KEYWECHAT_APP_SECRETMINERU_API_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Paper2wechat loads about 2.6k tokens when it runs. Until then it costs about 54 tokens; SKILL.md has 469 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
凭据集中在包根 `.env`(从 `.env.example` 复制,已 gitignore),每个新 shell 先导出一次:set -a; source <paper2anything 包根>/.env; set +aallowed-tools: Bash, Read, Write, Glob, Grep, AskUserQuestion, SendUserFileAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from QuZhan51496/paper2anything at commit 72bf82d, republished under its Apache-2.0 licence (© QuZhan51496). 469 words, ~2,598 tokens.
.claude/skills/paper2wechat/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.把一篇论文 PDF 写成学术深度解读型公众号长文。你是主笔:这份文件是配方,
不是全自动脚本——没有 main.py。机械步骤(解析 / 封面 / 排版)调用 scripts/ 下的小工具;
论文理解、文章结构、长文撰写由你亲自完成,并在关键点用 AskUserQuestion 与用户确认。
目标读者:有 AI/ML 背景的研究者、工程师、学生——读得懂方法细节、关心贡献与局限。
PDF
→ 解析 (parse_pdf.py:MinerU → parsed/ + figures/,含表格)
→ 你读懂论文 (读 parsed/ + 看 figures/) → understanding/paper_understanding.json [确认切入角度]
→ 你写深度解读长文 (结构自由、配图、忠实准确) → wechat_article.md + .json [确认]
→ 封面 (cover.py:默认 API 生图 gpt-image-2 横版 900×383;无 key/key 不可用回退本地合成复用原图)
→ 发布草稿箱 (publish.py:md2wechat 直推公众号草稿箱;无凭据/失败→本地样式化 HTML)
→ 公众号推文Bash 调脚本,创作步骤你自己用 Read / Write 做。WORKDIR(各 Bash 调用是独立 shell、不共享变量):WORKDIR="$(dirname "$pdf_path")/.paper2anything/wechat/$(basename "${pdf_path%.*}")"$pdf_path 是用户给的论文 PDF(每块重设一次)。脚本在 ${SKILL_DIR}/scripts——SKILL_DIR
是本 skill 的目录(见本 skill 顶部注入的 "Base directory for this skill: …");各 Bash 块独立 shell,
用到它的块开头按需 export SKILL_DIR=<那个目录> 一次(和 WORKDIR 一样每块现设)。AskUserQuestion 暂停:① 读懂论文后确认“切入角度/深度/篇幅”;② 长文成稿后确认。统一环境:所有
python命令都在 paper2anything 的统一 conda 环境(顶层environment.yml),以conda run -n paper2anything --no-capture-output为前缀。md2wechat 已含在该环境中。
凭据集中在包根 .env(从 .env.example 复制,已 gitignore),每个新 shell 先导出一次:
set -a; source <paper2anything 包根>/.env; set +a本 skill 用到的 key(理解与撰文由你亲自做,不调用任何 LLM API):
MINERU_API_TOKEN — 解析 PDF(必填)OPENAI_API_KEY(+ OPENAI_BASE_URL) — 封面默认走它生图(gpt-image-2);无 key 或 key 不可用时回退本地合成(复用论文原图)WECHAT_APPID / WECHAT_APP_SECRET — 直推公众号草稿箱用(md2wechat 调官方 API;获取见「排错」);留空则降级为本地生成样式化 HTML 供手动粘贴MD2WECHAT_THEME — 排版样式(默认 default→学术灰,另有 tech/festival/announcement)依赖自检(缺啥按提示装;依赖统一在 environment.yml):
conda run -n paper2anything --no-capture-output python -c "import requests, rich, dotenv" 2>&1
md2wechat --help >/dev/null 2>&1 && echo "md2wechat 就绪" || echo "md2wechat 未就绪(可后置;缺它 Step 5 会降级为本地样式化 HTML 供手动粘贴)"pdf_path="/path/to/paper.pdf" # ← 用户的论文 PDF
WORKDIR="$(dirname "$pdf_path")/.paper2anything/wechat/$(basename "${pdf_path%.*}")"
conda run -n paper2anything --no-capture-output \
python "${SKILL_DIR}/scripts/parse_pdf.py" "$pdf_path" --workdir "$WORKDIR"产出($WORKDIR 下):parsed/paper_meta.json、parsed/sections.json、parsed/figures_index.json、parsed/tables_index.json([{table_id, caption, html, image_path, page}])、parsed/references.json,以及 figures/*(含表格图)。
解析完,Read parsed/sections.json 与 parsed/paper_meta.json 通读全文。
深度解读的地基,你自己做判断:
Read parsed/sections.json(全文)+ paper_meta.json;Read figures_index.json / tables_index.json 的图注表注(个别 caption 可能为空,以实际看图为准),并实际 Read 关键图(figures/ 下)判断哪些值得内嵌、哪张适合做横版封面。Write 落 understanding/paper_understanding.json:{
"paper_title": "...", "method_name": "方法简称",
"one_sentence_summary": "一句话讲清贡献",
"problem": "背景与要解决的问题", "method": "核心方法(技术要点,用文字不用公式)",
"method_intuition": "直觉性解释/类比,帮读者吃透",
"contributions": ["贡献1", "贡献2"],
"comparison": "与主要 baseline 的关键差异",
"experiment_results": ["关键数据(含具体数字)", "..."],
"limitations": "论文承认的局限或潜在不足",
"keywords": ["关键词", "..."],
"cover_palette": {"bg": "#F4F5F7", "accent": "#2E86AB"},
"important_figures": [
{"figure_id": "fig_1", "image_path": "<figures_index.json 里的真实路径>",
"suitable_for_cover": true, "importance_score": 0.9,
"wechat_caption": "图1:……(≤50字中文图注)", "description": "图说明"}
]
}important_figures 必须含 image_path(取自 figures_index.json,真实存在)、suitable_for_cover、importance_score——封面默认走 API 生图(gpt-image-2),仅当 OPENAI_API_KEY 未配/不可用时回退本地合成、靠它选横版原图;漏了则回退时无图 → 封面 skipped。cover_palette(可选):本地合成回退路径的配色,按论文领域选 bg(浅色打底) + accent(强调色),标题字色随底色深浅自动适配。参考浅色调:通用 #F4F5F7+#2E86AB、生物 #EEF6F0+#2D8A5F、物理数学 #F1ECF8+#6A30C2、工程 #FBF0EC+#D85A3C、社科 #F4EEF2+#8A5A78、化学 #EAF4F8+#0E86C0。AskUserQuestion 与用户确认切入角度 / 深度 / 目标篇幅(如:偏方法细节还是偏直觉科普、约 1500 还是 2500 字)。按公众号深度解读风格亲自撰写,用 Write 落 wechat_article.md 和 wechat_article.json。
公众号深度解读规则(领域知识):
## 小节标题)分节;关键技术术语首次出现给中英文、可 **加粗**。(md 与 figures/ 同在工作区根 .paper2anything/wechat/<stem>/ 下,故用 figures/...;<图片名> 直接取自 figures_index.json 的 image_path 文件名、含其真实扩展名(高清重裁的图为 .png、回退复用抽出图为 .jpg,以 image_path 实际为准),勿臆改后缀)。产物 —— wechat_article.md:第一行 # {标题},然后正文(含配图)。
wechat_article.json(供排版脚本读 title/digest/word_count):
{"title": "最终标题", "digest": "公众号摘要,≤120字", "word_count": 2200}写完用 AskUserQuestion 给用户看标题 + 摘要 + 小节结构,确认或按反馈修改(可直接改 .md/.json)。
封面主标题此刻由你现拟(你已读透论文,比从 JSON 里捡更贴切),经 --title 传入:
pdf_path="/path/to/paper.pdf"
WORKDIR="$(dirname "$pdf_path")/.paper2anything/wechat/$(basename "${pdf_path%.*}")"
conda run -n paper2anything --no-capture-output \
python "${SKILL_DIR}/scripts/cover.py" --workdir "$WORKDIR" \
--title "你拟的封面主标题"横版 900×383 JPG:默认用 OPENAI_IMAGE_MODEL(默认 gpt-image-2)AI 生成横版图再裁剪,主标题用你传入的 --title(留空才回退文章标题/method_name);未配 OPENAI_API_KEY 或 key 不可用时回退本地合成——把 understanding.important_figures 里 suitable_for_cover 最高分的论文原图裁成封面(叠加 --title,配色取 cover_palette);两者都不可用则 skipped。产出 cover.jpg。
publish.py 用 md2wechat 把文章直接推到公众号草稿箱(上传封面+正文图到素材库 → 建草稿)。需 WECHAT_APPID/WECHAT_APP_SECRET + 服务器出口 IP 在白名单 + 认证公众号;没配凭据 / 上传失败 → 自动降级为本地生成样式化 HTML 供手动粘贴。不发布可跳过本步、把产物给用户。
① 查凭据(决定走直推还是本地降级):
export SKILL_DIR=<本 skill 目录>
conda run -n paper2anything --no-capture-output python "${SKILL_DIR}/scripts/publish.py" --check-creds0 = 有凭据可直推(走 ②);2 = 没配,走 ③ 本地降级。
② 有凭据 → 发布前给用户过目并确认(直推是外发到你的公众号):Read wechat_article.json 把标题 + 摘要发给用户看、SendUserFile 发 cover.jpg;用 AskUserQuestion 让用户确认上传草稿(草稿非公开,仍需用户去后台群发才公开)。确认后上传:
pdf_path="/path/to/paper.pdf"; export SKILL_DIR=<本 skill 目录>
WORKDIR="$(dirname "$pdf_path")/.paper2anything/wechat/$(basename "${pdf_path%.*}")"
conda run -n paper2anything --no-capture-output python "${SKILL_DIR}/scripts/publish.py" --workdir "$WORKDIR"成功打印 media_id;提示用户去 mp.weixin.qq.com → 草稿箱 预览 / 群发。(md2wechat 要求至少一张图作封面,确保 cover.jpg 已生成。)
③ 没凭据(或用户不想直推)→ 本地降级:
pdf_path="/path/to/paper.pdf"; export SKILL_DIR=<本 skill 目录>
WORKDIR="$(dirname "$pdf_path")/.paper2anything/wechat/$(basename "${pdf_path%.*}")"
conda run -n paper2anything --no-capture-output python "${SKILL_DIR}/scripts/publish.py" --workdir "$WORKDIR" --local-only产出 wechat_article.html,提示用户打开、全选复制、粘贴到公众号编辑器。
成品默认埋在 .paper2anything/wechat/<stem>/ 里不好找。长文+配图+封面定稿后(无论是否走 Step 5 排版),把它们复制
一份到与 PDF 同级的 <stem>_wechat/ 目录(.paper2anything 内副本保留不动),让用户在论文旁直接取用:
pdf_path="/path/to/paper.pdf"
WORKDIR="$(dirname "$pdf_path")/.paper2anything/wechat/$(basename "${pdf_path%.*}")"
DEST="${pdf_path%.*}_wechat" # 与 PDF 同目录、同名 + _wechat 后缀
i=2; while [ -e "$DEST" ]; do DEST="${pdf_path%.*}_wechat_v$i"; i=$((i+1)); done # 重名则追加 _v2、_v3
mkdir -p "$DEST"
cp "$WORKDIR/wechat_article.md" "$WORKDIR/wechat_article.json" "$DEST/"
[ -f "$WORKDIR/cover.jpg" ] && cp "$WORKDIR/cover.jpg" "$DEST/" # 封面可能 skipped,存在才复制
[ -f "$WORKDIR/wechat_article.html" ] && cp "$WORKDIR/wechat_article.html" "$DEST/" # 降级时的本地样式化 HTML(直推草稿成功则没有此文件)
cp -r "$WORKDIR/figures" "$DEST/" # 正文以 figures/<name> 相对引用配图,须一并带上wechat_article.md 以  相对引用配图,故长文与 figures/ 整组放进 <stem>_wechat/ 子目录、引用不破。
中间产物落在论文旁 <pdf目录>/.paper2anything/wechat/<stem>/(同目录多篇论文按 <stem> 分篇、互不覆盖),最终成品另复制到 PDF 同级的 <stem>_wechat/(Step 6):
| 路径 | 内容 | 谁写 |
|---|---|---|
.paper2anything/wechat/<stem>/parsed/ | MinerU PIR(meta/sections/figures_index/tables_index/references) | parse_pdf |
.paper2anything/wechat/<stem>/figures/ | 论文插图 + 表格图实体 | parse_pdf |
.paper2anything/wechat/<stem>/understanding/paper_understanding.json | 论文理解 + important_figures | 你 |
.paper2anything/wechat/<stem>/wechat_article.md .json | 深度解读长文 + 元数据 | 你 |
.paper2anything/wechat/<stem>/cover.jpg | 横版封面 | cover |
.paper2anything/wechat/<stem>/wechat_article.html | 降级时本地生成的样式化 HTML(直推草稿成功则不产此文件) | publish |
.paper2anything/wechat/<stem>/logs/ | 各脚本 *_result.json | 脚本 |
<pdf目录>/<stem>_wechat/ | 成品归集:wechat_article.md + .json + cover.jpg + figures/,与 PDF 同级 | 你(Step 6) |
重跑覆盖工作区 .paper2anything/wechat/<stem>/(中间产物);归集步骤遇同名 <stem>_wechat/ 会另存为 _v2、_v3,不覆盖旧成品。
MINERU_API_TOKEN;PDF ≤200MB / ≤200 页;能访问 mineru.net。重跑 Step 1(覆盖)。skipped):通常是既没配可用 OPENAI_API_KEY、又没有可复用的论文原图。配上 key 走 AI 生图,或确保 understanding.important_figures 有 suitable_for_cover:true 且 image_path 存在的横版图以供本地合成回退。WECHAT_APPID/WECHAT_APP_SECRET(从微信开发者平台 developers.weixin.qq.com 获取;AppSecret 重置后旧的失效)+ 本机出口 IP 加到「API IP白名单」 + 认证公众号(未认证号无 draft/add 权限,报 404)。按 errcode 排查:40164 IP 不在白名单、40001 AppSecret 错、40013 AppID 错、404 未认证。查本机出口 IP:用真凭据打一次 GET https://api.weixin.qq.com/cgi-bin/token,40164 的 errmsg 会直接写出微信看到的 IP(只打印 errmsg、勿回显 secret)。md2wechat 还要求至少一张图作封面,确保 cover.jpg 存在。--local-only 降级为本地样式化 HTML(wechat_article.html)手动粘贴。© QuZhan51496, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts) in paper2wechat of QuZhan51496/paper2anything.
Open the folder on GitHubat commit 72bf82d
Paper2wechat next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Paper2wechat this skillQuZhan51496/paper2anything | 450 | — | ~2.6k | Automated safety check: Notes | Apache-2.0 | |
| Markdown Exporterbowenliang123/markdown-exporter | 272 | 1 repos | ~5.3k | Automated safety check: Pass | Apache-2.0 | |
| Export PDFbluzir/claude-code-design | 106 | — | ~811 | Automated safety check: Pass | None | |
| MarkitdownImCa0/just-laws | 781 | 14 repos | ~3.2k | Automated safety check: Notes | MIT | |
| Gzh Designisjiamu/gzh-design-skill | 4k | — | ~2.2k | Automated safety check: Pass | AGPL-3.0 | |
| Segment DocsJanDeDobbeleer/oh-my-posh | 24k | — | ~1.1k | Automated safety check: Pass | MIT |
bowenliang123/markdown-exporter
Convert Markdown text to DOCX, PPTX, XLSX, PDF, PNG, SVG, HTML, IPYNB, MD, CSV, JSON, JSONL, XML files, and extract code blocks in Markdown to Python, Bash,JS and etc files.
bluzir/claude-code-design
Export an HTML artifact to PDF via headless Chromium (puppeteer Page.pdf).
ImCa0/just-laws
Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.
isjiamu/gzh-design-skill
微信公众号文章排版引擎,将 Markdown 转换为可直接粘贴到公众号编辑器的 HTML。主题风格从 references/theme-index.md 注册的自定义主题库中选取,自动章节编号、关键词下划线标记、引言卡片、目录导航、代码块、图片/GIF、作者签名。支持 Markdown / Word(.docx) / PDF / 纯文本输入(非 Markdown…
JanDeDobbeleer/oh-my-posh
Reference mapping between Oh My Posh Go segment source code and MDX documentation.
genspark-ai/genoffice
Creates, converts, reads and edits real pptx, xlsx, docx and PDF files locally through the genoffice command line.
QuZhan51496/paper2anything
Convert an academic paper PDF into a publish-ready, self-contained single-page project homepage (a self-contained index.html) — the kind of paper landing page researchers host on GitHub Pages.
QuZhan51496/paper2anything
Turn an academic paper PDF into a presentation deck (.pptx) end-to-end.
QuZhan51496/paper2anything
Convert academic papers (PDF) into conference posters (HTML/PNG).
QuZhan51496/paper2anything
把学术论文 PDF 转成小红书多图帖(标题 + 正文 + 标签 + 封面 + 论文主图/主实验结果配图)。你主导设计的协调式:机械活(MinerU 解析 PDF、生成封面与配图、半自动发布)交给 scripts/ 下的小工具,论文理解、选题角度、文案撰写由你亲自完成并在关键点与用户确认。当用户说“论文转小红书”、“paper2xhs”、“把这篇论文发小红书”、“论文转社交媒体”、“PDF…
Works with
Categories
把学术论文 PDF 转成微信公众号深度解读推文(长文 + 配图 + 封面)。你主导设计的协调式:机械活(MinerU 解析 PDF、生成封面、md2wechat 发布草稿箱)交给 scripts/ 下的小工具,论文理解、文章结构、长文撰写由你亲自完成并在关键点与用户确认。当用户说“论文转公众号”、“paper2wechat”、“把论文写成公众号文章”、“论文转微信推文”、“PDF…. Paper2wechat is an agent skill from QuZhan51496/paper2anything.
Paper2wechat fits situations like: tasks that involve PDF.
Run `npx skills add QuZhan51496/paper2anything --skill paper2wechat -a claude-code`. Or copy the skill folder (paper2wechat in QuZhan51496/paper2anything) into .claude/skills/paper2wechat in your project. Claude Code loads it when a task matches its description.
Run `npx skills add QuZhan51496/paper2anything --skill paper2wechat -a codex`. Or copy the skill folder (paper2wechat in QuZhan51496/paper2anything) into .agents/skills/paper2wechat in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add QuZhan51496/paper2anything --skill paper2wechat -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/paper2wechat, .gemini/skills/paper2wechat, .github/skills/paper2wechat and .opencode/skills/paper2wechat in your project.
Going by SKILL.md and its folder, Paper2wechat needs Python for the scripts in its folder, the command-line tools its instructions call (conda and python) and credentials named OPENAI_API_KEY, WECHAT_APP_SECRET and MINERU_API_TOKEN. Our summary lists: Python 3; A credential in MINERU_API_TOKEN; A credential in OPENAI_API_KEY. Its frontmatter pre-approves these tools: Bash, Read, Write, Glob, Grep, AskUserQuestion, SendUserFile.
SKILL.md names 1 domain. In commands or code: api.weixin.qq.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Paper2wechat is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Paper2wechat: Markdown Exporter (bowenliang123/markdown-exporter, 272 stars), Export PDF (bluzir/claude-code-design, 106 stars), Markitdown (ImCa0/just-laws, 781 stars) and Gzh Design (isjiamu/gzh-design-skill, 4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
QuZhan51496 (a GitHub user) maintains it in QuZhan51496/paper2anything, which has 450 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on July 16, 2026.
Source: QuZhan51496/paper2anything on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.