Communitygithub.com

Peytontalismanic424/paper-share-skills

Erstellt ein deterministisches 16:10-Videocover-Poster aus einem Paper-Verzeichnis. Extrahiert Metadaten und Abbildungen und erzeugt atomar poster.tex, poster.pdf und poster.png. Für Paper-Videocover, nicht für Konferenzposter.

Was ist paper-share-skills?

Diese Fähigkeit generiert ein 16:10-Videocover-Poster im Gemini/SUSTech-Stil aus einem Paper-Verzeichnis. Sie extrahiert automatisch Titel, Konferenzort, Projekt-URL, Abbildungen und Metriken aus der MinerU-Markdown-Datei des Papers und erzeugt atomar drei Artefakte: poster.tex, poster.pdf und poster.png. Unterstützt werden LuaLaTeX und Poppler pdftoppm als externe Werkzeuge, die über CLI-Flags, Umgebungsvariablen oder den PATH aufgelöst werden. Die Fähigkeit umfasst sowohl generische Poster (für beliebige Papers) als auch spezialisierte „实验室调研“-Poster mit Labornamen, Institutsinformationen und chinesischen Titeln. Fehlerhafte Builds werden in einem temporären Verzeichnis ausgeführt und hinterlassen bestehende Ausgaben unverändert. Die Fähigkeit ist Teil eines größeren Workflows für die Bilibili-Videoveröffentlichung und erfordert Zugriff auf die genannten externen Werkzeuge sowie die Projektabhängigkeiten.

Funktioniert mit~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Peytontalismanic424/paper-share-skills/tree/HEAD/paper-video-cover

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Paper-Videocover

Erzeugt ein Gemini/SUSTech 16:10-Cover aus einem Paper-Verzeichnis. Der Generator installiert die Ausgabe erst, nachdem sowohl die LaTeX-Kompilierung als auch die PNG-Konvertierung erfolgreich waren.

Paket und Einrichtung

Das installierte uv-Projekt befindet sich unter:

<SKILLS_DIR>/paper-video-cover

Es verwaltet seine Pillow-Abhängigkeit und enthält beide erforderlichen Designs:

<SKILLS_DIR>/paper-video-cover/templates/beamerthemegemini.sty
<SKILLS_DIR>/paper-video-cover/templates/beamercolorthemesustech.sty

LuaLaTeX und Poppler pdftoppm sind externe Werkzeuge. Beide müssen vor der Generierung verfügbar sein. Jedes Werkzeug wird in der folgenden Reihenfolge aufgelöst: explizites CLI-Flag, Umgebungsvariable LUALATEX oder PDFTOPPM, dann PATH. Ein ungültiger Überschreibungswert mit höherer Priorität ist fatal und wird nicht umgangen.

Ausführung

uv run --project "<SKILLS_DIR>/paper-video-cover" `
  "<SKILLS_DIR>/paper-video-cover/scripts/generate_poster.py" `
  "<paper_dir>"

Standardausgabe ist <paper_dir>/poster. Wählen Sie ein anderes Verzeichnis mit:

uv run --project "<SKILLS_DIR>/paper-video-cover" `
  "<SKILLS_DIR>/paper-video-cover/scripts/generate_poster.py" `
  "<paper_dir>" --output-dir "<output_dir>"

Optionen:

  • --data <json>: optionale JSON-Überschreibungen.
  • --scheme <default|lab|bilibili>: SUSTech-Farbschema (Standard default; 实验室调研 verwendet bilibili, um zum Labor-Übersichtsdeck zu passen).
  • --title-font <punkte>: Überschreibt die automatische Titelgröße.
  • --output-dir <verzeichnis>: Endgültiges Ausgabeverzeichnis.
  • --lualatex <pfad-oder-befehl>: Explizites LuaLaTeX-Executable.
  • --pdftoppm <pfad-oder-befehl>: Explizites pdftoppm-Executable.

Die PNG-Generierung ist obligatorisch; eine erfolgreiche Ausgabe enthält nicht leere poster.tex, poster.pdf und poster.png sowie kopierte Designs und konvertierte Abbildungen. Der Build erfolgt in einem temporären Verzeichnis, sodass ein fehlgeschlagener Build keine vorhandene endgültige Ausgabe ersetzt.

Labor-Übersichts-Postergenerator (实验室调研, generate_lab_poster.py)

Für 实验室调研-Übersichten verwenden Sie scripts/generate_lab_poster.py anstelle des generischen Pfads – es füllt die Poster-Vorlage des Repositorys (<TEMPLATE_DIR>/main_template_lab_poster.tex, Quelle der Wahrheit; Sicherungskopie in templates/) mit dem DECK-Format des Abschnittstrenners für 可视化分析: randlos slides-beamer/figures/background.png (ERFORDERLICH – fatal, wenn nicht vorhanden; falls das Deck keins hat, erstellen Sie es mit paper-group-to-beamer/scripts/gen_viz_background.py --survey-dir "<LAB_DIR>") + VIER weiße abgerundete Schattenboxen (Zeilen): 实验室调研+Datum-Paar / Institutsblock (Markenfarbe-Augenbraue + englische Zeile) / Prof.-Name / title_2+title_3 mit Betonungsregel. KEINE Metrikzeile, KEINE Beschreibung, KEINE Labornamenszeile.

HINWEIS (Standardänderung 2026-08-07): Das Poster ist das ERFORDERLICHE ARTEFAKT für Laborverzeichnisse (der Uploader schlägt ohne Poster/poster.png fehl), aber das Bilibili-UPLOAD-COVER standardmäßig auf die ERSTE FOLIE des Decks (video/cover.png) – kopieren Sie NICHT das Poster über video/cover.png; behalten Sie den Slide-001-Render der Pipeline bei. Siehe lab-survey-to-bilibili-runbook.

uv run --project "<SKILLS_DIR>/paper-video-cover" \
  "<SKILLS_DIR>/paper-video-cover/scripts/generate_lab_poster.py" \
  "<LAB_DIR>" --data "<LAB_DIR>/poster_data.json"

--data JSON: title_1_pi ist ERFORDERLICH (≤30 Zeichen). Namenskonvention: 中文名 PI → xxx教授 (z. B. 李飞飞教授, 刘华平教授); Nicht-Professoren-Rollen ohne Prof./教授 (z. B. Sergey Levine 等联合创始人); Englischer Name Professor → Prof. First Last (z. B. Prof. Yann LeCun). title_1_uni optional (Breitenbudget 40 Einheiten, CJK-Glyphe = 2 Einheiten, andere = 1, z. B. 纽约大学 = 8, Physical Intelligence = 21; leer → Zeile weggelassen), title_1_uni_color optional (#RRGGBB – die LOGO-Markenfarbe des Instituts, z. B. NYU 57068B, Stanford 8C1515, CMU C41230, Berkeley 003262, Tsinghua 660874, SUSTech 2C5F7C, HKUST 003366; Institute ohne Markenfarbe standardmäßig schwarz 000000), title_1_uni_en optional (≤40 Zeichen, z. B. NEW YORK UNIVERSITY) – der Titelblock rendert die Universität als eine Augenbraue in Institutsmarkenfarbe (25pt halbfett in title_1_uni_color, 0.25em CJK-Tracking automatisch vom Generator eingefügt, Seitenstriche 80×3px bei 50% der Markenfarbe), die englische kleine Zeile (13pt #8A8F98), dann den Prof.-Namen (55pt pink fett, einzelne Zeile). title_2/title_3 optional (Breitenbudget jeweils 30 Einheiten, z. B. 从卷积网络到世界模型 = 18, IEEE Fellow 2026 = 15; leere Teile lassen ihre Zeile weg). date (optional, Standard heute) füllt den Datumsblock. Korpusstatistiken aus papers.json dienen nur zu Informationszwecken – eine fehlende Datei wird mit einer Warnung herabgestuft, führt aber niemals zum Abbruch des Laufs. KEINE Labornamenszeile, KEINE Beschreibungszeile, KEINE Metrikzeile und KEINE ·-Trennzeichen. Beispiel: title_1_uni="纽约大学", title_1_uni_en="NEW YORK UNIVERSITY", title_1_pi="Prof. Yann LeCun", title_2="从卷积网络到世界模型", title_3="图灵奖得主的40年深度学习谱系". Der Upload-Titel in video_meta.json behält unabhängig davon das volle Format {Institutionskürzel} {PI-Name}教授:Thema — Hook bei. Poster-Layout (tikz abgerundete Boxen mit Schlagschatten über dem 可视化分析-Hintergrund des Decks): VIER Zeilen in einem 0.6971\textwidth-Container, absolut zentriert auf der Seite (feste obere 0.107\textheight / untere 0.103\textheight-Versätze; Stapel ≈ 77% der Seite): Zeile 1 = 实验室调研 + 〈DATE〉-Paar (0.3092\textwidth Textbreite jeweils, 32pt, Höhe 0.1250\textheight); Zeile 2 = Institutsblock – NYU lila Augenbraue (25pt halbfett, Seitenstriche) + englische Zeile 13pt (0.6706\textwidth, Höhe 0.1250\textheight); Zeile 3 = Prof.-Namenblock (55pt pink fett einzelne Zeile, 0.6706\textwidth, Höhe 0.1806\textheight); Zeile 4 = title_2/title_3 + Regel bei 37pt (Höhe 0.2153\textheight). Abstände: horizontal 0.0258\textwidth / vertikal 0.0417\textheight (60 px in beide Richtungen auf der 2324×1440 Referenzleinwand). --scheme Standard bilibili (zum Deck passend); --template/--theme-dir überschreiben die Repository-Pfade (das Deck sustech-theme wird in den Build kopiert). Token-Vertrag (fatal, wenn nicht auf Codezeilen ersetzt): 〈DATE〉〈TITLE1UNI〉〈TITLE1UNIEN〉〈TITLE1PI〉〈TITLE2〉〈TITLE3〉. Kompiliert mit xelatex (zwei Durchläufe; das Deck-Design ist nur für xelatex) und rendert poster.png bei 300 dpi (32×20 cm Seite → ~3780×2363 px); Ausgabe <LAB_DIR>/poster/.

Fallstrick – Leerzeichen in großem Titeltext: TikZ-Knoten + \fontsize{72}{84} unter dem sustech-Design lassen Wortzwischenräume weg (sogar \ ); der Generator wandelt daher einfache Leerzeichen in title_1/2/3 in \hspace{0.25em}-Kleber um (überprüft via pdftotext: NYU Prof. Yann LeCun behält seine Leerzeichen).

Fallstrick – Zeilenzentrierung und Blockbreiten: (1) Ein \hbox to \containerwidth ist KEINE Absatzzeile und \centering wird es nicht zentrieren – Zeilen müssen \hbox to \textwidth{\hss … \hss} sein, damit der Inhalt innerhalb der vollen Zeile zentriert wird. (2) tikz text width mit einem \dimexpr-basierten Makro kann Dimension too large auf dem 32 cm Papier auslösen – verwenden Sie literale Breiten (z. B. 0.44\textwidth). (3) Die äußere Breite eines tikz-Knotens = text width + 2×inner sep – subtrahieren Sie den sep-Abstand von den Breitenmakros, sodass die Boxkanten genau auf dem Container landen.

Fallstrick – Randloser Hintergrund: Die Poster-Geometrie MUSS \geometry{papersize={32cm,20cm},margin=0cm} sein. Jeder positive Rand versetzt den Ursprung der beamer-Hintergrundleinwand an die obere Kante des Textbereichs, was einen weißen Streifen oben erzeugt (~1,1 cm für margin=1.1cm) und die Oberkante des Hintergrundbilds abschneidet. Überprüfen Sie nach jedem Poster-Build: Die oberen/unteren 3%-Zeilen von poster.png müssen ~0 weiße Pixel aufweisen (PIL-Scan).

Labor-Übersichts-Poster (实验室调研)

Chinesische Titel werden unterstützt (die generierte Präambel lädt ctex; der beamer-Titel-Fallback entfernt CJK nicht mehr). Der Postertitel folgt dem Upload-Titel-Format {Institutionskürzel} {PI-Name}教授:Thema — Hook (z. B. NYU 杨立昆教授:从卷积网络到世界模型 — 图灵奖得主的40年深度学习谱系 / 清华刘华平教授:机器人具身智能 — 从视触觉到操作学习). Ausführen mit --scheme bilibili und einem --data JSON:

{
  "title_1_uni": "纽约大学",
  "title_1_uni_en": "NEW YORK UNIVERSITY",
  "title_1_uni_color": "57068B",
  "title_1_pi": "Prof. Yann LeCun",
  "title_2": "从卷积网络到世界模型",
  "title_3": "图灵奖得主的40年深度学习谱系",
  "date": "2026-08-06"
}

Die Quelle der Wahrheit für die Palette ist <TEMPLATE_DIR>/sustech-theme/beamercolorthemesustech.sty (Standard blau / Labor rot / bilibili pink); das Deck-Design wird in den Build kopiert und der Frame wird unter xelatex kompiliert (die Engine des Decks). Der Hintergrund slides-beamer/figures/background.png muss vorhanden sein (der 可视化分析-Trennerhintergrund des Decks) – der Generator schlägt ohne ihn fehl.

Beispiel mit expliziten Werkzeugen:

uv run --project "<SKILLS_DIR>/paper-video-cover" `
  "<SKILLS_DIR>/paper-video-cover/scripts/generate_poster.py" `
  "<paper_dir>" `
  --lualatex "C:/path/to/lualatex.exe" `
  --pdftoppm "C:/path/to/pdftoppm.exe"

Beispiel mit Umgebungskonfiguration:

$env:LUALATEX = "C:/path/to/lualatex.exe"
$env:PDFTOPPM = "C:/path/to/pdftoppm.exe"
uv run --project "<SKILLS_DIR>/paper-video-cover" `
  "<SKILLS_DIR>/paper-video-cover/scripts/generate_poster.py" `
  "<paper_dir>"

Eingaben

Der Generator extrahiert Titel, Konferenzort, Projekt-URL, Abbildungen und Metriken aus der ersten MinerU-Markdown-Datei unter md_output/*/auto/. Wenn die beschriftungsbasierte Extraktion keine Abbildungen findet, durchsucht er slides-beamer/figures/, paper-source/image/, source/image/, Figures/, dann md_output/*/auto/images/.

PNG-, JPEG- und PDF-Quellen werden unterstützt. PDFs verwenden das aufgelöste pdftoppm. Fehlende, nicht unterstützte, leere oder nicht konvertierbare referenzierte Abbildungen sind fatal.

Alle JSON-Felder sind optional. figure_map-Pfade sind absolut oder relativ zum Paper-Verzeichnis:

{
  "title": "Override Title",
  "venue": "CVPR 2025",
  "title_font": 220,
  "cards_col1": [],
  "cards_col2": [],
  "figures": {"col1": ["fig1"], "col2": ["fig2"]},
  "figure_map": {
    "fig1": "md_output/1234.5678/auto/images/figure-1.png"
  }
}

Batch

Verwenden Sie eine UTF-8-Datei mit einem Paper-Verzeichnis pro Zeile; start und count sind optionale Positionsargumente:

uv run --project "<SKILLS_DIR>/paper-video-cover" `
  "<SKILLS_DIR>/paper-video-cover/scripts/batch_generate.py" `
  "<papers_file>" 0 20

Der Batch verwendet den uv-ausgewählten Interpreter, erfordert alle drei Artefakte für jedes Paper und gibt einen Fehlercode ungleich Null zurück, wenn ein Element fehlschlägt.

Fehlerverhalten

Der Generator gibt einen Fehlercode ungleich Null zurück, wenn ein erforderliches ausführbares Programm oder ein paketiertes Design fehlt, ein Unterbefehl einen Fehlercode ungleich Null zurückgibt oder ein erforderliches Artefakt fehlt oder leer ist. Behandeln Sie jeden von Null abweichenden Rückgabewert als Nichtveröffentlichung; der fehlgeschlagene temporäre Build wird entfernt und die vorherige endgültige Ausgabe bleibt unverändert.

Verwandte Fähigkeiten

  • skill://lab-survey-to-bilibili-runbook
  • skill://paper-group-to-beamer
  • skill://lab-poster-deck-format
  • skill://paper-bilibili-uploader
  • skill://paper-lab-survey-to-bilibili
  • skill://paper-to-bilibili

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

Peytontalismanic424/paper-share-skills

Validate and upload narrated paper videos to Bilibili with biliup. Handles required landscape-first/portrait-second submissions, series uploads, CST scheduling, diagnostics, dry-run validation, and durable upload receipts. Trigger on: "upload to bilibili", "bilibili upload", "发布到B站", "上传到B站".

Peytontalismanic424/paper-share-skills

Download the TeX source (e-print tar.gz) of an arXiv paper from an arXiv URL or bare ID, and unpack it into paper_src/. Use FIRST whenever a pipeline input is an arXiv link and the TeX source is preferred over the PDF (paper-to-beamer, paper-to-bilibili, paper-venue-discovery). Invoke with an arXiv URL (abs/pdf/e-print, arxiv.org or export.arxiv.org) or a bare ID like 2509.07996v4.

Peytontalismanic424/paper-share-skills

Convert Beamer PDF slides into a fail-closed narrated MP4 with page-aligned narration, TTS audio, cover, and upload metadata. Trigger on narrated slides, slide video, or paper video requests.

Peytontalismanic424/paper-share-skills

Automated pipeline: paper (PDF or TeX source) → SUSTech Beamer slides (11-section 论文分享 structure) → compiled PDF. When TeX source is available, skip MinerU and extract content directly from LaTeX. Use when the user asks to create Beamer slides from an academic paper, or says "论文分享", "paper to slides", "make beamer from paper". Invoke with an absolute or relative path to a PDF, .tar.gz TeX archive, .tex file, or an arXiv URL/ID (source TeX is downloaded first via skill://paper-download-arxiv-paper-source).

Peytontalismanic424/paper-share-skills

Orchestrate a paper PDF through MinerU, SUSTech Beamer slides, complete Chinese narration, landscape and portrait video, metadata gates, and Bilibili upload. Supports single-paper and batch slides, video, or bilibili phases. Trigger on full paper-to-Bilibili requests, PDF-to-video publication, and batch paper publishing.

Peytontalismanic424/paper-share-skills

Convert a PDF (especially academic papers) to clean Markdown using MinerU — preserves reading order, LaTeX equations, tables, and figures, and runs on the GPU. Use when the user asks to convert/extract a PDF to markdown/text. Invoke directly — no need for the user to type the skill name.

Peytontalismanic424/paper-share-skills

Fix for undefined \setsource/\setdomains/\setpresenter/\setvenue commands when compiling SUSTech Beamer slides from the standard template. Copy the extended beamerthemesustech.sty from the sustech-slides-template repository.

Verwandte Skills