Not in the top 1,000 by GitHub stars
QuZhan51496/paper2anything
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)
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
paper2html/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
72bf82dfe7bc → 72bf82dfe7bc
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 72bf82dfe7bc
No earlier version was observed for comparison.
paper2poster/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
72bf82dfe7bc → 72bf82dfe7bc
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 72bf82dfe7bc
No earlier version was observed for comparison.
paper2slides/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
72bf82dfe7bc → 72bf82dfe7bc
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 72bf82dfe7bc
No earlier version was observed for comparison.
paper2wechat/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
72bf82dfe7bc → 72bf82dfe7bc
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 72bf82dfe7bc
No earlier version was observed for comparison.
paper2xhs/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
72bf82dfe7bc → 72bf82dfe7bc
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 72bf82dfe7bc
No earlier version was observed for comparison.
Heat
1.9- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- paper2html
paper2html - paper2poster
paper2poster - paper2slides
paper2slides - paper2wechat
paper2wechat - paper2xhs
paper2xhs
How it works
paper2html
When your agent uses it
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. Triggers when the user says "turn a paper into a project page/webpage", "paper2html", "generate a paper landing page / project page", "turn this PDF into an HTML page", "paper to webpage", or "make a paper homepage". A you-led, coordinated skill: the mechanical steps (MinerU parsing + deterministic fact extraction at gate 1 + post-authoring QA at gate 2) call scripts, while **you hand-author index.html yourself** (calling no LLM API), choosing from several design languages.
What it loads into context
Frontmatter
212 tokensAlways available to the agent
SKILL.md
3,276 tokensWhen the skill is activated
Reference documents
2,327 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How you run this skill
- Step 0: Environment and credentials
- Step 1: Parse + deterministic extraction (script, gate 1)
- Step 2: Understand the paper + set the design direction (you do this) [confirm]
- Step 3: Hand-author index.html (you do this) [optional confirm]
- Step 4: QA validation and revision (script, gate 2)
- Step 5: Collect the deliverable next to the PDF
- Deliverable locations
- Troubleshooting
- references/
Scripts executed separately
scripts/_env.pyscripts/lib/__init__.pyscripts/lib/config.pyscripts/lib/core.pyscripts/lib/mineru_client.pyscripts/parse_pdf.pyscripts/render_check.pyscripts/utils.pyscripts/validate.py
Files
SKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesSKILL.mdcore13,159 bytesreferences/design-languages.mddoc2,438 bytesreferences/html-authoring.mddoc4,405 bytesreferences/qa-checklist.mddoc3,134 bytesscripts/_env.pyruns543 bytesscripts/lib/__init__.pyruns297 bytesscripts/lib/config.pyruns1,255 bytesscripts/lib/core.pyruns45,474 bytesscripts/lib/mineru_client.pyruns8,653 bytesscripts/parse_pdf.pyruns6,369 bytesscripts/render_check.pyruns7,545 bytesscripts/utils.pyruns3,722 bytesscripts/validate.pyruns3,338 bytes
Read SKILL.md
# paper2html — Paper to single-page project homepage (you-led, coordinated)
Turn a paper PDF into a **self-contained, publish-ready single-page project website** — the kind of paper
homepage researchers commonly build on GitHub Pages.
**You are the lead author**: this file is the recipe, not a fully automated script — there is no `main.py`,
no renderer. The mechanical steps (parse / extract / QA) call the small tools under `scripts/`; **understanding
the paper, designing the page, and writing `index.html` are done by you** (read the material and figures with
Read, write `index.html` with Write), confirming with the user at key points via `AskUserQuestion`.
```text
PDF
→ parse + extract (parse_pdf.py: MinerU → clean.md + manifest.json + images/, gate 1)
→ you understand it + set the design (read manifest + clean.md + look at figures) → pick a design language [confirm design direction]
→ you hand-author the page (per the references/ design-language and authoring rules) → index.html [optional confirm]View the complete source on GitHubpaper2poster
When your agent uses it
Convert academic papers (PDF) into conference posters (HTML/PNG). You are the conductor: you decide what each section needs — an original paper figure or text — write the outline, hand-author the poster HTML, and iterate on the render using your own visual read and a blind-reader content quiz. Use when the user wants a poster from a paper PDF.
What it loads into context
Frontmatter
140 tokensAlways available to the agent
SKILL.md
9,155 tokensWhen the skill is activated
Reference documents
4,484 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How you run this skill
- Step 0: Environment Check
- Step 1: Parse the PDF
- Step 2: Poster intake — confirm layout-critical choices [INTERACT]
- Step 3: Decide each section's visual — figure or text, YOU choose by eye [INTERACT]
- Step 4: Write the outline [INTERACT]
- Step 5: Design the poster — YOU hand-author the HTML
- Step 6: Visual read — your own eyes, every render
- Step 7: Blind-reader content check — you orchestrate
- Step 8: Preview & iterate with the user [INTERACT]
- Step 9: Collect the deliverable next to the PDF
- Outline JSON Format
- Troubleshooting
Scripts executed separately
scripts/_env.pyscripts/auto_outline.pyscripts/check_env.pyscripts/collect_figures.pyscripts/geom_check.pyscripts/parse_pdf.pyscripts/screenshot.py
Files
SKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesSKILL.mdcore37,160 bytesreferences/agent_design_rules_from_posters.mddoc4,655 bytesreferences/color_palettes.mddoc1,734 bytesreferences/layout_guide.mddoc3,093 bytesreferences/poster_design_guide.mddoc5,289 bytesreferences/poster_examples/cvpr2024_29230_poster.pngasset7,339,478 bytesreferences/poster_examples/cvpr2024_29245_poster.pngasset753,670 bytesreferences/poster_examples/cvpr2024_29809_poster.pngasset3,402,561 bytesreferences/poster_examples/cvpr2024_31412_poster.pngasset1,352,024 bytesreferences/poster_examples/iclr2024_17503_poster.pngasset1,673,201 bytesreferences/poster_examples/iclr2024_17798_poster.pngasset992,004 bytesreferences/poster_examples/iclr2024_18118_poster.pngasset2,018,047 bytesreferences/poster_examples/iclr2024_18324_poster.pngasset3,148,540 bytesreferences/poster_intake_qa.mddoc3,976 bytesscripts/_env.pyruns683 bytesscripts/auto_outline.pyruns21,607 bytesscripts/check_env.pyruns974 bytesscripts/collect_figures.pyruns2,738 bytesscripts/geom_check.pyruns6,944 bytesscripts/parse_pdf.pyruns18,215 bytesscripts/screenshot.pyruns2,490 bytes
Read SKILL.md
# Paper2Poster — Conference Poster Skill (You as Conductor)
Convert a paper PDF into an academic conference poster (HTML/PNG) by walking a small set of CLI scripts. **You are the conductor**: this file is the recipe, not an orchestrator. There is no `run_pipeline.py` — at each step you run one Bash command, read the intermediate artifact, and ask the user for confirmation at the decision points below.
```text
PDF
→ parse_pdf.py (MinerU → content.md + figures/)
→ intake QA (you ask size/venue/authors/visual policy)
→ auto_outline.py (digest.json + assets[])
→ choose visuals (you read parsed/figures/ + captions: which sections use an original figure, which use text)
→ outline.json (you write from content.md; user confirms)
→ poster.html (you hand-author the poster: original figures where they help, text elsewhere)
→ render + score (Playwright PNG → deterministic geometry check + your own visual read + blind-reader content quiz)
→ iterate on poster.html (edit + re-render + re-score until it reads like a real poster)View the complete source on GitHubpaper2slides
When your agent uses it
Turn an academic paper PDF into a presentation deck (.pptx) end-to-end. Use this skill whenever the user wants to "make slides from a paper", "generate a deck from this PDF", "make a PPT from this paper", "generate slides from a PDF document", "make a deck from a research paper", or supplies a research paper PDF and asks for a .pptx out. Trigger even when the user only says "deck this paper" or "summarize as slides". This is the dedicated, self-contained skill for academic-paper-to-deck flows.
What it loads into context
Frontmatter
145 tokensAlways available to the agent
SKILL.md
3,853 tokensWhen the skill is activated
Reference documents
25,650 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Quick Reference
- Invocation Contract
- Pipeline
- Defaults & Errors
- QA
- Where to Look When Stuck
Scripts executed separately
scripts/__init__.pyscripts/lib/__init__.pyscripts/lib/mineru_client.pyscripts/lib/mineru_parser.pyscripts/lib/sectionize.pyscripts/page_screenshot.pyscripts/parse_pdf.pyscripts/render_pptx.pyscripts/workdir.py
Files
SKILL.mdcore15,248 bytesSKILL.mdcore15,248 bytesSKILL.mdcore15,248 bytesSKILL.mdcore15,248 bytesSKILL.mdcore15,248 bytesSKILL.mdcore15,248 bytesSKILL.mdcore15,248 bytesSKILL.mdcore15,248 bytesreferences/design-style.mddoc33,428 bytesreferences/outline-heuristics.mddoc13,836 bytesreferences/pipeline.mddoc17,168 bytesreferences/pptxgenjs.mddoc8,237 bytesreferences/qa.mddoc5,928 bytesreferences/schemas.mddoc19,447 bytesscripts/__init__.pyruns677 bytesscripts/lib/__init__.pyruns0 bytesscripts/lib/mineru_client.pyruns10,044 bytesscripts/lib/mineru_parser.pyruns30,035 bytesscripts/lib/sectionize.pyruns2,346 bytesscripts/page_screenshot.pyruns4,049 bytesscripts/parse_pdf.pyruns6,055 bytesscripts/render_pptx.pyruns13,288 bytesscripts/workdir.pyruns7,110 bytes
Read SKILL.md
# paper2slides
Turn an academic paper PDF into a presentation-ready .pptx. This is a conductor skill: **you** make the
editorial and design judgments, while the mechanical steps are handled by this skill's own self-contained
scripts — PDF parsing via the MinerU cloud API (`scripts/parse_pdf.py`) and .pptx rendering via a PptxGenJS
bridge (`scripts/render_pptx.py`). It orchestrates a "paper → outline → spec → render → QA" pipeline and
depends on no other skill.
## Quick Reference
| Stage | Input | Output | Owner |
|---|---|---|---|
| 0.5. configure | user dialogue | `<workdir>/config.json` | **you** (AskUserQuestion to confirm three items: length tier + whether to run visual QA + color scheme) |
| 1. extract | `paper.pdf` | `paper_meta.json` + `figures_index.json` + `figures/` + `pages/` + `equations` + hi-res figure/table crops (produced in one shot by the MinerU cloud API) | `scripts/parse_pdf.py` |View the complete source on GitHubpaper2wechat
When your agent uses it
把学术论文 PDF 转成微信公众号深度解读推文(长文 + 配图 + 封面)。你主导设计的协调式:机械活(MinerU 解析 PDF、生成封面、md2wechat 发布草稿箱)交给 scripts/ 下的小工具,论文理解、文章结构、长文撰写由你亲自完成并在关键点与用户确认。当用户说“论文转公众号”、“paper2wechat”、“把论文写成公众号文章”、“论文转微信推文”、“PDF 转公众号”时触发。
What it loads into context
Frontmatter
148 tokensAlways available to the agent
SKILL.md
4,800 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 运行方式
- Step 0:环境与凭据
- Step 1:解析 PDF(脚本)
- Step 2:读懂论文 → 写 understanding(你来做)[确认]
- Step 3:写深度解读长文(你来做)[确认]
- Step 4:生成封面(脚本,可选)
- Step 5:发布到公众号草稿箱(脚本 + 你确认,可选)
- Step 6:把成品归集到 PDF 旁
- 产物位置
- 排错
Scripts executed separately
scripts/_env.pyscripts/cover.pyscripts/parse_pdf.pyscripts/publish.pyscripts/utils.py
Files
SKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesSKILL.mdcore15,890 bytesscripts/_env.pyruns478 bytesscripts/cover.pyruns15,849 bytesscripts/parse_pdf.pyruns24,684 bytesscripts/publish.pyruns11,221 bytesscripts/utils.pyruns3,341 bytes
Read SKILL.md
# paper2wechat — 论文转公众号深度解读(你主导的协调式)
把一篇论文 PDF 写成**学术深度解读型**公众号长文。**你是主笔**:这份文件是配方,
不是全自动脚本——没有 `main.py`。机械步骤(解析 / 封面 / 排版)调用 `scripts/` 下的小工具;
**论文理解、文章结构、长文撰写由你亲自完成**,并在关键点用 `AskUserQuestion` 与用户确认。
目标读者:有 AI/ML 背景的研究者、工程师、学生——读得懂方法细节、关心贡献与局限。
```text
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 不可用回退本地合成复用原图)View the complete source on GitHubpaper2xhs
When your agent uses it
把学术论文 PDF 转成小红书多图帖(标题 + 正文 + 标签 + 封面 + 论文主图/主实验结果配图)。你主导设计的协调式:机械活(MinerU 解析 PDF、生成封面与配图、半自动发布)交给 scripts/ 下的小工具,论文理解、选题角度、文案撰写由你亲自完成并在关键点与用户确认。当用户说“论文转小红书”、“paper2xhs”、“把这篇论文发小红书”、“论文转社交媒体”、“PDF 转小红书帖子”时触发。
What it loads into context
Frontmatter
169 tokensAlways available to the agent
SKILL.md
5,936 tokensWhen the skill is activated
Reference documents
1,561 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 运行方式
- Step 0:环境与凭据
- Step 1:解析 PDF(脚本)
- Step 2:读懂论文 → 写 understanding(你来做)[确认]
- Step 3:写小红书帖子(你来做)[确认]
- Step 4:生成封面与配图(脚本,可选)
- Step 5:发布到小红书(脚本 + 你协调,可选)
- Step 6:把成品归集到 PDF 旁
- 产物位置
- 排错
Scripts executed separately
scripts/_env.pyscripts/cover.pyscripts/parse_pdf.pyscripts/post_images.pyscripts/publish.pyscripts/utils.pyscripts/xhs_login.py
Files
SKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesSKILL.mdcore19,070 bytesreferences/publish-guide.mddoc5,259 bytesscripts/_env.pyruns475 bytesscripts/cover.pyruns15,620 bytesscripts/parse_pdf.pyruns22,816 bytesscripts/post_images.pyruns4,982 bytesscripts/publish.pyruns7,420 bytesscripts/utils.pyruns3,304 bytesscripts/xhs_login.pyruns4,145 bytes
Read SKILL.md
# paper2xhs — 论文转小红书(你主导的协调式)
把一篇论文 PDF 转成小红书帖子。**你是主笔**:这份文件是配方,不是全自动脚本——
没有 `main.py`。机械步骤(解析 / 封面 / 发布)调用 `scripts/` 下的小工具;**论文理解、
选题角度、文案撰写由你亲自完成**(用 Read 看材料、用 Write 落产物),并在关键点用
`AskUserQuestion` 与用户确认。
```text
PDF
→ 解析 (parse_pdf.py:MinerU → parsed/ + figures/)
→ 你读懂论文 (读 parsed/ + 看 figures/) → understanding/paper_understanding.json [确认选题角度]
→ 你写小红书文案 (标题/正文/标签/封面文字) → xhs_post.json + xhs_post.md [确认文案]
→ 封面+配图 (cover.py 封面:默认 API 生图 gpt-image-2、无 key 回退本地合成;
post_images.py 配图:把你选的论文主图/主实验图按序复制成图集,原图直出)View the complete source on GitHubSkills included
- paper2html
- paper2poster
- paper2slides
- paper2wechat
- paper2xhs
Repository facts
- License
- Apache-2.0
- Created
- Jun 15, 2026
- Last pushed
- Jul 16, 2026
- Forks
- 12
- Open issues
- 0
- Project activity
- Slowing
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 65 notes
paper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2html/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2poster/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2poster/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2poster/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2poster/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2poster/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2poster/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2poster/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2poster/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedpaper2poster/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 5 broad permissionsin 5 files: paper2html/SKILL.md:1 paper2poster/SKILL.md:1 paper2slides/SKILL.md:1 and 2 more
- 1 dangerous shell commandin 1 file: paper2slides/scripts/render_pptx.py:236
- 78 network referencesin 17 files: paper2xhs/SKILL.md:51 paper2xhs/references/publish-guide.md:3 paper2xhs/scripts/publish.py:8 and 14 more
- 3 obfuscation signalsin 3 files: paper2wechat/scripts/cover.py:245 paper2xhs/scripts/cover.py:230 paper2xhs/scripts/xhs_login.py:42
- No instruction overrides
- 37 executable scriptsin 37 files: paper2html/scripts/_env.py:1 paper2html/scripts/lib/__init__.py:1 paper2html/scripts/lib/config.py:1 and 34 more
- 83 references to secretsin 26 files: paper2wechat/scripts/cover.py:15 paper2xhs/scripts/cover.py:13 paper2xhs/SKILL.md:52 and 23 more
- No requests to vote in Hot
Show all 207 signals by file
paper2html/SKILL.md
- Broad permissionsline 1
Bash
paper2html/scripts/_env.py
paper2html/scripts/lib/__init__.py
- Executable scriptline 1
Executable file
paper2html/scripts/lib/config.py
- Executable scriptline 1
Executable file - Access to secretsline 6
[Credential-related source omitted] - Access to secretsline 7
[Credential-related source omitted] - Access to secretsline 9
[Credential-related source omitted] - Network accessline 13
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted]
paper2html/scripts/lib/core.py
paper2html/scripts/lib/mineru_client.py
paper2html/scripts/parse_pdf.py
paper2html/scripts/render_check.py
- Executable scriptline 1
#!/usr/bin/env python3
paper2html/scripts/utils.py
- Executable scriptline 1
Executable file
paper2html/scripts/validate.py
paper2poster/SKILL.md
- Broad permissionsline 1
Bash - Access to secretsline 74
[Credential-related source omitted] - Network accessline 496
- **MinerU 401**: token missing — set `MINERU_API_TOKEN` from `https://mineru.net/apiManage/token`. - **MinerU OSS download stalls**: requests through MinerU's presigned OSS URLs must bypass the system proxy — `parse_pdf.py` already does th
paper2poster/scripts/_env.py
paper2poster/scripts/auto_outline.py
- Executable scriptline 1
Executable file
paper2poster/scripts/check_env.py
- Executable scriptline 1
Executable file - Access to secretsline 6
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Network accessline 32
[Credential-related source omitted] - Network accessline 33
[Credential-related source omitted] - Network accessline 34
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted]
paper2poster/scripts/collect_figures.py
- Executable scriptline 1
#!/usr/bin/env python3
paper2poster/scripts/geom_check.py
- Executable scriptline 1
#!/usr/bin/env python3
paper2poster/scripts/parse_pdf.py
- Executable scriptline 1
Executable file - Network accessline 8
Environment variables: MINERU_API_TOKEN — Bearer token from https://mineru.net/apiManage/token - Network accessline 9
MINERU_API_TOKEN — Bearer token from https://mineru.net/apiManage/token - Access to secretsline 21
[Credential-related source omitted] - Network accessline 28
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Network accessline 46
session = requests.Session() - Access to secretsline 50
[Credential-related source omitted] - Network accessline 51
[Credential-related source omitted] - Network accessline 52
[Credential-related source omitted] - Network accessline 53
"MinerU API token not set. Get one at https://mineru.net/apiManage/token\n" - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 414
[Credential-related source omitted]
paper2poster/scripts/screenshot.py
- Executable scriptline 1
Executable file
paper2slides/SKILL.md
paper2slides/scripts/__init__.py
paper2slides/scripts/lib/__init__.py
- Executable scriptline 1
Executable file
paper2slides/scripts/lib/mineru_client.py
- Executable scriptline 1
Executable file - Network accessline 18
- The token is passed in explicitly via a parameter (the caller reads the MINERU_API_TOKEN env); this module only reads the optional MINERU_API_BASE (endpoint root, default https://mineru.net), it does not read the token - Network accessline 20
https://mineru.net), it does not read the token - Network accessline 40
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Network accessline 48
_SESSION = requests.Session() - Network accessline 188
s = requests.Session() - Access to secretsline 228
[Credential-related source omitted]
paper2slides/scripts/lib/mineru_parser.py
- Executable scriptline 1
Executable file
paper2slides/scripts/lib/sectionize.py
- Executable scriptline 1
Executable file
paper2slides/scripts/page_screenshot.py
- Executable scriptline 1
Executable file
paper2slides/scripts/parse_pdf.py
- Executable scriptline 1
Executable file - Access to secretsline 145
[Credential-related source omitted] - Network accessline 147
raise SystemExit( "MINERU_API_TOKEN env var is required (MinerU cloud parsing). " "Get one at https://mineru.net/apiManage/token") - Network accessline 149
"Get one at https://mineru.net/apiManage/token")
paper2slides/scripts/render_pptx.py
paper2slides/scripts/workdir.py
- Executable scriptline 1
Executable file
paper2wechat/SKILL.md
- Broad permissionsline 1
Bash, Read, Write, Glob, Grep, AskUserQuestion, SendUserFile - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Access to secretsline 150
[Credential-related source omitted] - Network accessline 225
- **MinerU 解析失败**:核对 `MINERU_API_TOKEN`;PDF ≤200MB / ≤200 页;能访问 `mineru.net`。重跑 Step 1(覆盖)。 - **封面没生成(`skipped`)**:通常是既没配可用 `OPENAI_API_KEY`、又没有可复用的论文原图。配上 key 走 AI 生图,或确保 `understanding.important_figures` 有 `suitable_for_cover:true` 且 `ima - Network accessline 226
[Credential-related source omitted] - Access to secretsline 226
[Credential-related source omitted] - Network accessline 227
- **发布到草稿箱报错**:需 `WECHAT_APPID`/`WECHAT_APP_SECRET`(从微信开发者平台 developers.weixin.qq.com 获取;AppSecret 重置后旧的失效)+ **本机出口 IP 加到「API IP白名单」** + **认证公众号**(未认证号无 `draft/add` 权限,报 404)。按 errcode 排查:`40164` IP 不在白名单、`40001` AppSecret 错、`40013` AppID 错
paper2wechat/scripts/_env.py
paper2wechat/scripts/cover.py
- Executable scriptline 1
Executable file - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 132
[Credential-related source omitted] - Access to secretsline 133
[Credential-related source omitted] - Access to secretsline 134
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 136
[Credential-related source omitted] - Access to secretsline 236
[Credential-related source omitted] - Possible obfuscationline 245
tmp_path.write_bytes(base64.b64decode(image_data)) - Network accessline 251
import urllib.request tmp_path = output_path.with_suffix(".tmp.png") urllib.request.urlretrieve(image_url, tmp_path) - Network accessline 252
tmp_path = output_path.with_suffix(".tmp.png") urllib.request.urlretrieve(image_url, tmp_path) _resize_to_wechat_cover(tmp_path, output_path) - Network accessline 253
urllib.request.urlretrieve(image_url, tmp_path) - Access to secretsline 279
[Credential-related source omitted] - Access to secretsline 312
[Credential-related source omitted] - Access to secretsline 322
[Credential-related source omitted]
paper2wechat/scripts/parse_pdf.py
- Network accessline 1
""" parse_pdf — MinerU 解析(云端 API 版) 通过 https://mineru.net/api/v4 调用 MinerU SaaS: - Executable scriptline 1
Executable file - Network accessline 2
parse_pdf — MinerU 解析(云端 API 版) 通过 https://mineru.net/api/v4 调用 MinerU SaaS: 1. POST /file-urls/batch → 拿到 PUT 上传 URL + batch_id - Network accessline 3
通过 https://mineru.net/api/v4 调用 MinerU SaaS: - Access to secretsline 23
[Credential-related source omitted] - Network accessline 39
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Network accessline 46
_MINERU = requests.Session() - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted]
paper2wechat/scripts/publish.py
paper2wechat/scripts/utils.py
- Executable scriptline 1
Executable file
paper2xhs/SKILL.md
- Broad permissionsline 1
Bash, Read, Write, Glob, Grep, AskUserQuestion, SendUserFile - Network accessline 51
- `MINERU_API_TOKEN` — 解析 PDF(必填) - `OPENAI_API_KEY`(+ `OPENAI_BASE_URL`) — 封面默认走它生图(gpt-image-2);无 key 或 key 不可用时回退本地合成(复用论文原图) - `XHS_MCP_BIN` — 可选:自定义 [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp) 二进制位置;**不设则发布时 skill 自 - Access to secretsline 52
[Credential-related source omitted] - Network accessline 53
- `XHS_MCP_BIN` — 可选:自定义 [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp) 二进制位置;**不设则发布时 skill 自动按平台下载**到 `~/.paper2anything/xhs/`。另可选 `XHS_MCP_URL`(自定义服务地址/端口,默认 `http://localhost:18060`)。 - Access to secretsline 104
[Credential-related source omitted] - Access to secretsline 153
[Credential-related source omitted] - Network accessline 173
发布走开源的 **[xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp)**(自带无头 Chromium 的单二进制 + REST API)。**登录一次后 cookies 持久、之后免登录**。二进制由 ① 自动备好(`XHS_MCP_BIN` 仅自定义位置时配,见 Step 0)。**首次配置/登录的分环境完整步骤见 `references/publish-guide.md`**——先 `Read` - Access to secretsline 178
[Credential-related source omitted] - Access to secretsline 184
[Credential-related source omitted] - Network accessline 187
if [ -n "$ASSET" ] && [ ! -x "$BIN" ]; then echo "未找到 mcp 二进制,自动下载 $ASSET …" curl -fL -o "$XHS_MCP_DIR/$ASSET.tar.gz" "https://github.com/xpzouying/xiaohongshu-mcp/releases/latest/download/$ASSET.tar.gz" \ - Network accessline 188
echo "未找到 mcp 二进制,自动下载 $ASSET …" curl -fL -o "$XHS_MCP_DIR/$ASSET.tar.gz" "https://github.com/xpzouying/xiaohongshu-mcp/releases/latest/download/$ASSET.tar.gz" \ && tar xzf "$XHS_MCP_DIR/$ASSET.tar.gz" -C "$XHS_MCP_DIR" && chmod + - Network accessline 189
curl -fL -o "$XHS_MCP_DIR/$ASSET.tar.gz" "https://github.com/xpzouying/xiaohongshu-mcp/releases/latest/download/$ASSET.tar.gz" \ - Network accessline 192
fi # 起服务(已在跑就跳过;BIN 不可用则报错、不硬起) if ! curl -sf http://localhost:18060/api/v1/login/status >/dev/null 2>&1; then - Network accessline 193
# 起服务(已在跑就跳过;BIN 不可用则报错、不硬起) if ! curl -sf http://localhost:18060/api/v1/login/status >/dev/null 2>&1; then if [ ! -x "$BIN" ]; then - Network accessline 194
if ! curl -sf http://localhost:18060/api/v1/login/status >/dev/null 2>&1; then - Network accessline 197
else ( cd "$XHS_MCP_DIR" && nohup "$BIN" -port=:18060 > mcp.log 2>&1 & ) for i in $(seq 1 30); do curl -sf http://localhost:18060/api/v1/login/status >/dev/null 2>&1 && break; sleep 2; done - Network accessline 198
( cd "$XHS_MCP_DIR" && nohup "$BIN" -port=:18060 > mcp.log 2>&1 & ) for i in $(seq 1 30); do curl -sf http://localhost:18060/api/v1/login/status >/dev/null 2>&1 && break; sleep 2; done fi - Network accessline 199
for i in $(seq 1 30); do curl -sf http://localhost:18060/api/v1/login/status >/dev/null 2>&1 && break; sleep 2; done - Network accessline 275
[Credential-related source omitted] - Access to secretsline 275
[Credential-related source omitted] - Access to secretsline 276
[Credential-related source omitted]
paper2xhs/references/publish-guide.md
- Network accessline 3
发布能力由开源项目 [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp)(作者 xpzouying)提供——一个自带无头 Chromium、暴露 REST API 的单二进制。本指引讲怎么按你的系统/有无显示器完成「登录一次 → 之后免登录发布」。 - Network accessline 17
mkdir -p ~/.paper2anything/xhs && cd ~/.paper2anything/xhs # Linux x86_64(macOS Apple Silicon 换 darwin-arm64、Intel 换 darwin-amd64): curl -fL -O https://github.com/xpzouying/xiaohongshu-mcp/releases/latest/download/xiaohongshu-mcp-linux-amd6 - Network accessline 18
# Linux x86_64(macOS Apple Silicon 换 darwin-arm64、Intel 换 darwin-amd64): curl -fL -O https://github.com/xpzouying/xiaohongshu-mcp/releases/latest/download/xiaohongshu-mcp-linux-amd64.tar.gz tar xzf xiaohongshu-mcp-*.tar.gz && chmod +x xiaoh - Network accessline 19
curl -fL -O https://github.com/xpzouying/xiaohongshu-mcp/releases/latest/download/xiaohongshu-mcp-linux-amd64.tar.gz - Access to secretsline 21
[Credential-related source omitted] - Network accessline 31
BIN="${XHS_MCP_BIN:-$PWD/xiaohongshu-mcp-linux-amd64}" # 其它平台换 darwin-arm64 / darwin-amd64 "$BIN" -port=:18060 # 默认无头;启动即加载已有 cookies.json curl -s http://localhost:18060/api/v1/login/status # dat - Network accessline 33
curl -s http://localhost:18060/api/v1/login/status # data.is_logged_in:true → 已登录,直接发布 - Network accessline 58
2. **看浏览器界面**(二选一): - 端口转发:本地执行 `ssh -L 9273:localhost:9273 你@服务器`,再用本地浏览器开 `http://localhost:9273/`,点开页面即可看到登录浏览器的实时画面; - 或截图存文件读:`http://localhost:9273/` 列出页面 id,`curl -s http://localhost:9273/screenshot/<页面id> -o login.png` 存成 PNG - Network accessline 59
- 端口转发:本地执行 `ssh -L 9273:localhost:9273 你@服务器`,再用本地浏览器开 `http://localhost:9273/`,点开页面即可看到登录浏览器的实时画面; - 或截图存文件读:`http://localhost:9273/` 列出页面 id,`curl -s http://localhost:9273/screenshot/<页面id> -o login.png` 存成 PNG 再看。 3. **扫码登录**:界面里的登录二 - Network accessline 60
- 或截图存文件读:`http://localhost:9273/` 列出页面 id,`curl -s http://localhost:9273/screenshot/<页面id> -o login.png` 存成 PNG 再看。 - Network accessline 61
3. **扫码登录**:界面里的登录二维码与 `curl /api/v1/login/qrcode` 取到的一致。**首次登录会先出现「新设备验证」二维码,先扫它、确认,再扫登录码。**
paper2xhs/scripts/_env.py
paper2xhs/scripts/cover.py
- Executable scriptline 1
Executable file - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 132
[Credential-related source omitted] - Access to secretsline 133
[Credential-related source omitted] - Access to secretsline 134
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 136
[Credential-related source omitted] - Access to secretsline 220
[Credential-related source omitted] - Possible obfuscationline 230
img_bytes = base64.b64decode(image_data) - Network accessline 236
if image_url: import urllib.request urllib.request.urlretrieve(image_url, output_path) - Network accessline 237
import urllib.request urllib.request.urlretrieve(image_url, output_path) return True - Network accessline 238
urllib.request.urlretrieve(image_url, output_path) - Access to secretsline 267
[Credential-related source omitted] - Access to secretsline 299
[Credential-related source omitted] - Access to secretsline 310
[Credential-related source omitted]
paper2xhs/scripts/parse_pdf.py
- Network accessline 1
""" parse_pdf — MinerU 解析(云端 API 版) 通过 https://mineru.net/api/v4 调用 MinerU SaaS: - Executable scriptline 1
Executable file - Network accessline 2
parse_pdf — MinerU 解析(云端 API 版) 通过 https://mineru.net/api/v4 调用 MinerU SaaS: 1. POST /file-urls/batch → 拿到 PUT 上传 URL + batch_id - Network accessline 3
通过 https://mineru.net/api/v4 调用 MinerU SaaS: - Access to secretsline 23
[Credential-related source omitted] - Network accessline 39
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Network accessline 46
_MINERU = requests.Session() - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted]
paper2xhs/scripts/post_images.py
paper2xhs/scripts/publish.py
- Executable scriptline 1
Executable file - Network accessline 8
发布能力由开源项目 xiaohongshu-mcp(作者 xpzouying)提供;用户自行从其官方 release 下载二进制并启动服务(默认 http://localhost:18060,可经 XHS_MCP_URL 覆盖)。 - Network accessline 9
release 下载二进制并启动服务(默认 http://localhost:18060,可经 XHS_MCP_URL 覆盖)。 - Network accessline 32
DEFAULT_MCP_URL = "http://localhost:18060" - Access to secretsline 36
[Credential-related source omitted] - Network accessline 41
resp = requests.get(f"{mcp_url}/api/v1/login/status", timeout=60) - Network accessline 129
try: resp = requests.post(f"{mcp_url}/api/v1/publish", json=payload, timeout=180) - Network accessline 130
resp = requests.post(f"{mcp_url}/api/v1/publish", json=payload, timeout=180) - Network accessline 169
"--mcp-url", default=None, help="mcp 地址(默认 env XHS_MCP_URL 或 http://localhost:18060)", - Network accessline 170
default=None, help="mcp 地址(默认 env XHS_MCP_URL 或 http://localhost:18060)", ) - Network accessline 171
help="mcp 地址(默认 env XHS_MCP_URL 或 http://localhost:18060)",
paper2xhs/scripts/utils.py
- Executable scriptline 1
Executable file
paper2xhs/scripts/xhs_login.py
- Executable scriptline 1
Executable file - Network accessline 22
DEFAULT_MCP_URL = "http://localhost:18060" - Access to secretsline 26
[Credential-related source omitted] - Network accessline 31
resp = requests.get(f"{mcp_url}/api/v1/login/qrcode", timeout=120) - Possible obfuscationline 42
out.write_bytes(base64.b64decode(b64)) - Network accessline 61
parser.add_argument( "--mcp-url", default=None, help="mcp 地址(默认 env XHS_MCP_URL 或 http://localhost:18060)", - Network accessline 62
"--mcp-url", default=None, help="mcp 地址(默认 env XHS_MCP_URL 或 http://localhost:18060)", ) - Network accessline 63
help="mcp 地址(默认 env XHS_MCP_URL 或 http://localhost:18060)",
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 207 facts
- Broad permissions in the frontmatter of the SKILL.mdpaper2html/SKILL.md:1High confidence
- Executable script in prose of a file that runspaper2html/scripts/_env.py:1Low confidence
- Access to secrets in prose of a file that runs: a variable, placeholder or call, not a stored valuepaper2html/scripts/_env.py:1Low confidence
- Access to secrets in prose of a file that runs: a variable, placeholder or call, not a stored valuepaper2html/scripts/_env.py:3Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2html/scripts/_env.py:10Low confidence
- Executable script in prose of a file that runspaper2html/scripts/lib/__init__.py:1Low confidence
- Executable script in code of a file that runspaper2html/scripts/lib/config.py:1High confidence
- Access to secrets in a comment of a file that runs: a variable, placeholder or call, not a stored valuepaper2html/scripts/lib/config.py:6Low confidence
- Access to secrets in a comment of a file that runs: a variable, placeholder or call, not a stored valuepaper2html/scripts/lib/config.py:7Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2html/scripts/lib/config.py:9Low confidence
- Network access in code of a file that runspaper2html/scripts/lib/config.py:13High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2html/scripts/lib/config.py:13Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2html/scripts/lib/config.py:14Low confidence
- Executable script in prose of a file that runspaper2html/scripts/lib/core.py:1Low confidence
- Network access in code of a file that runspaper2html/scripts/lib/core.py:153High confidence
- Network access in code of a file that runspaper2html/scripts/lib/core.py:154High confidence
- Executable script in prose of a file that runspaper2html/scripts/lib/mineru_client.py:1Low confidence
- Network access in code of a file that runspaper2html/scripts/lib/mineru_client.py:20High confidence
- Executable script in code of a file that runspaper2html/scripts/parse_pdf.py:1High confidence
- Access to secrets in code of a file that runspaper2html/scripts/parse_pdf.py:23High confidence
- Executable script in code of a file that runspaper2html/scripts/render_check.py:1High confidence
- Executable script in prose of a file that runspaper2html/scripts/utils.py:1Low confidence
- Executable script in code of a file that runspaper2html/scripts/validate.py:1High confidence
- Access to secrets in code of a file that runspaper2html/scripts/validate.py:25High confidence
- Broad permissions in the frontmatter of the SKILL.mdpaper2poster/SKILL.md:1High confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valuepaper2poster/SKILL.md:74Low confidence
- Network access in prose of the SKILL.mdpaper2poster/SKILL.md:496Low confidence
- Executable script in prose of a file that runspaper2poster/scripts/_env.py:1Low confidence
- Access to secrets in prose of a file that runs: a variable, placeholder or call, not a stored valuepaper2poster/scripts/_env.py:1Low confidence
- Access to secrets in prose of a file that runs: a variable, placeholder or call, not a stored valuepaper2poster/scripts/_env.py:3Low confidence
- Access to secrets in prose of a file that runspaper2poster/scripts/_env.py:4Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2poster/scripts/_env.py:11Low confidence
- Executable script in prose of a file that runspaper2poster/scripts/auto_outline.py:1Low confidence
- Executable script in prose of a file that runspaper2poster/scripts/check_env.py:1Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2poster/scripts/check_env.py:6Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2poster/scripts/check_env.py:22Low confidence
- Network access in code of a file that runspaper2poster/scripts/check_env.py:32High confidence
- Network access in code of a file that runspaper2poster/scripts/check_env.py:33High confidence
- Network access in code of a file that runspaper2poster/scripts/check_env.py:34High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2poster/scripts/check_env.py:35Low confidence
- Executable script in code of a file that runspaper2poster/scripts/collect_figures.py:1High confidence
- Executable script in code of a file that runspaper2poster/scripts/geom_check.py:1High confidence
- Executable script in prose of a file that runspaper2poster/scripts/parse_pdf.py:1Low confidence
- Network access in prose of a file that runspaper2poster/scripts/parse_pdf.py:8Low confidence
- Network access in prose of a file that runspaper2poster/scripts/parse_pdf.py:9Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2poster/scripts/parse_pdf.py:21Low confidence
- Network access in code of a file that runspaper2poster/scripts/parse_pdf.py:28High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2poster/scripts/parse_pdf.py:28Low confidence
- Network access in code of a file that runspaper2poster/scripts/parse_pdf.py:46High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuepaper2poster/scripts/parse_pdf.py:50Low confidence
and 157 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Frontmatter field disable-model-invocation in paper2html/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md paper2html/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md paper2html/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md paper2html/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md paper2html/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md paper2html/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.