Communitygithub.com

Couverture vidéo d'article (Paper Share)

Génère une affiche de couverture vidéo déterministe au format 16:10 à partir d'un dossier d'article. Extrait les métadonnées et les figures de l'article, puis produit atomiquement poster.tex, poster.pdf et poster.png.

Qu'est-ce que Couverture vidéo d'article (Paper Share) ?

Cette compétence génère automatiquement une affiche de couverture vidéo au format 16:10 (Gemini/SUSTech) à partir d'un dossier d'article de recherche. Elle extrait le titre, le lieu de publication, les figures et les métriques à partir du fichier Markdown généré par MinerU, puis compile le tout en une affiche LaTeX (poster.tex), un PDF (poster.pdf) et un PNG (poster.png) de manière atomique : l'installation n'a lieu que si la compilation LuaLaTeX et la conversion PNG réussissent toutes les deux. Elle est idéale pour les couvertures de vidéos d'articles (type conférence ou démonstration) et non pour les posters de conférence académique. La compétence prend en charge la configuration des outils externes LuaLaTeX et pdftoppm via variables d'environnement ou arguments en ligne de commande. Elle propose également une variante spécifique pour les enquêtes de laboratoire (实验室调研) avec un format de poster différent incluant fond plein, ombres portées et disposition en quatre rangées centrées. La compétence peut être utilisée en mode batch pour traiter plusieurs articles à la fois.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Couverture vidéo d'article

Génère une couverture 16:10 (Gemini/SUSTech) à partir d'un dossier d'article. Le générateur n'installe la sortie qu'après la réussite de la compilation LaTeX et de la conversion PNG.

Package et configuration

Le projet uv installé est :

<SKILLS_DIR>/paper-video-cover

Il gère sa dépendance Pillow et inclut les deux thèmes requis :

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

LuaLaTeX et Poppler pdftoppm sont des outils externes. Les deux doivent être disponibles avant la génération. Chaque outil est résolu dans l'ordre : indicateur CLI explicite, variable d'environnement LUALATEX ou PDFTOPPM, puis PATH. Une priorité élevée invalide est fatale et ne peut être contournée.

Exécution

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

La sortie par défaut est <paper_dir>/poster. Sélectionnez un autre dossier avec :

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

Options :

  • --data <json> : surcharges JSON facultatives.
  • --scheme <default|lab|bilibili> : jeu de couleurs SUSTech (par défaut default ; 实验室调研 utilise bilibili pour correspondre au deck d'enquête de laboratoire).
  • --title-font <points> : remplace la taille automatique du titre.
  • --output-dir <directory> : répertoire de sortie final.
  • --lualatex <path-or-command> : exécutable LuaLaTeX explicite.
  • --pdftoppm <path-or-command> : exécutable pdftoppm explicite.

La génération PNG est obligatoire ; une sortie réussie contient poster.tex, poster.pdf et poster.png non vides, ainsi que les thèmes copiés et les figures converties. La construction a lieu dans un répertoire temporaire frère, donc une construction échouée ne remplace pas une sortie finale existante.

Générateur d'affiche d'enquête de laboratoire (实验室调研, generate_lab_poster.py)

Pour les enquêtes 实验室调研, utilisez scripts/generate_lab_poster.py au lieu du chemin générique — il remplit le modèle d'affiche du dépôt (<TEMPLATE_DIR>/main_template_lab_poster.tex, source de vérité ; copie de secours dans templates/) avec le format de section-division 可视化分析 du DECK : fond slides-beamer/figures/background.png en plein écran (OBLIGATOIRE — fatal si manquant ; si le deck en manque un, construisez-le avec paper-group-to-beamer/scripts/gen_viz_background.py --survey-dir "<LAB_DIR>") + QUATRE boîtes d'ombre arrondies blanches (rangées) : paire 实验室调研+date / bloc institut (sourcil couleur de marque + ligne anglaise) / nom du Prof. / title_2+title_3 avec règle emph. AUCUNE rangée métrique, AUCUN blurb, AUCUNE ligne de nom de laboratoire.

REMARQUE (changement par défaut 2026-08-07) : l'affiche est l'ARTEFACT OBLIGATOIRE pour les dossiers de laboratoire (l'uploader échoue fermé sans poster/poster.png), mais la COUVERTURE Bilibili UPLOAD par défaut est la PREMIÈRE DIAPOSITIVE du deck (video/cover.png) — ne COPIEZ PAS l'affiche sur video/cover.png ; conservez le rendu slide-001 du pipeline. Voir 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"

JSON --data : title_1_pi est OBLIGATOIRE (≤30 caractères). Conventions de nommage : nom chinois PI → xxx教授 (ex. 李飞飞教授, 刘华平教授) ; rôles non professeurs sans Prof./教授 (ex. Sergey Levine 等联合创始人) ; nom anglais professeur → Prof. First Last (ex. Prof. Yann LeCun). title_1_uni facultatif (budget largeur 40 unités, glyphe CJK = 2 unités, autre = 1, ex. 纽约大学 = 8, Physical Intelligence = 21 ; vide → ligne supprimée), title_1_uni_color facultatif (#RRGGBB — couleur de marque LOGO de l'institut, ex. NYU 57068B, Stanford 8C1515, CMU C41230, Berkeley 003262, Tsinghua 660874, SUSTech 2C5F7C, HKUST 003366 ; instituts sans couleur de marque par défaut noir 000000), title_1_uni_en facultatif (≤40 caractères, ex. NEW YORK UNIVERSITY) — le bloc de titre affiche l'université comme un sourcil de couleur de marque (25pt semigras dans title_1_uni_color, espacement CJK 0.25em inséré automatiquement par le générateur, tirets latéraux 80×3px à 50% de la couleur de marque), la ligne anglaise petite (13pt #8A8F98), puis le nom du Prof. (55pt rose gras, une seule ligne). title_2/title_3 facultatifs (budget largeur 30 unités chacun, ex. 从卷积网络到世界模型 = 18, IEEE Fellow 2026 = 15 ; parties vides suppriment leur ligne). date (facultatif, aujourd'hui par défaut) remplit le bloc de date. Les statistiques du corpus à partir de papers.json sont informatives uniquement — un fichier manquant dégrade avec un avertissement, jamais ne fait échouer. AUCUNE ligne de nom de labo, AUCUNE ligne de blurb, AUCUNE rangée métrique, et AUCUN séparateur ·. Exemple : title_1_uni="纽约大学", title_1_uni_en="NEW YORK UNIVERSITY", title_1_pi="Prof. Yann LeCun", title_2="从卷积网络到世界模型", title_3="图灵奖得主的40年深度学习谱系". Le titre d'upload dans video_meta.json conserve indépendamment le format complet {Abréviation institution} {Nom PI}教授:主题 — Hook. Disposition de l'affiche (boîtes tikz arrondies avec ombres portées sur le fond 可视化分析 du deck) : QUATRE rangées dans un conteneur 0.6971\textwidth, absolument centré sur la page (décalages fixes haut 0.107\textheight / bas 0.103\textheight ; pile ≈ 77% de la page) : rangée 1 = paire 实验室调研 + 〈DATE〉 (largeur texte 0.3092\textwidth chacune, 32pt, hauteur 0.1250\textheight) ; rangée 2 = bloc institut — sourcil NYU Purple (25pt semigras, tirets latéraux) + ligne anglaise 13pt (0.6706\textwidth, hauteur 0.1250\textheight) ; rangée 3 = bloc nom Prof. (55pt rose gras une ligne, 0.6706\textwidth, hauteur 0.1806\textheight) ; rangée 4 = title_2/title_3 + règle à 37pt (hauteur 0.2153\textheight). Espaces : horizontal 0.0258\textwidth / vertical 0.0417\textheight (60 px dans les deux sens sur le canevas de référence 2324×1440). --scheme par défaut bilibili (correspondance du deck) ; --template/--theme-dir remplacent les chemins du dépôt (le thème sustech-theme du deck est copié dans la construction). Contrat de jeton (fatal si non remplacé sur les lignes de code) : 〈DATE〉〈TITLE1UNI〉〈TITLE1UNIEN〉〈TITLE1PI〉〈TITLE2〉〈TITLE3〉. Compile avec xelatex (deux passes ; le thème du deck est xelatex uniquement) et rend poster.png à 300 dpi (page 32×20 cm → ~3780×2363 px) ; sortie <LAB_DIR>/poster/.

Piège — espaces dans le grand texte du titre : les nœuds TikZ + \fontsize{72}{84} sous le thème sustech suppriment les espaces entre mots (même \ ) ; le générateur convertit donc les espaces simples dans title_1/2/3 en colle \hspace{0.25em} (vérifié via pdftotext : NYU Prof. Yann LeCun garde ses espaces).

Piège — centrage des rangées et largeurs des blocs : (1) un \hbox to \containerwidth n'est PAS une ligne de paragraphe et \centering ne le centrera pas — les rangées doivent être \hbox to \textwidth{\hss … \hss} pour que le contenu se centre à l'intérieur de la ligne entière. (2) text width de tikz avec une macro basée sur \dimexpr peut lever Dimension too large sur le papier 32 cm — utilisez des largeurs littérales (ex. 0.44\textwidth). (3) la largeur extérieure d'un nœud tikz = text width + 2×inner sep — soustrayez le remplissage du sep des macros de largeur pour que les bords de la boîte atterrissent exactement sur le conteneur.

Piège — fond plein écran : la géométrie de l'affiche DOIT être \geometry{papersize={32cm,20cm},margin=0cm}. Toute marge positive décale l'origine du canevas de fond de beamer vers le haut de la zone de texte, produisant une bande blanche en haut (~1,1 cm pour margin=1,1 cm) et coupant le bord supérieur de l'image de fond. Vérifiez après chaque construction d'affiche : les rangées supérieures/inférieures à 3% de poster.png doivent avoir ~0 pixels blancs (scan PIL).

Affiches d'enquête de laboratoire (实验室调研)

Les titres chinois sont pris en charge (le préambule généré charge ctex ; le fallback du titre beamer ne supprime plus CJK). Le titre de l'affiche suit le format du titre d'upload {Abréviation institution} {Nom PI}教授:主题 — Hook (ex. NYU 杨立昆教授:从卷积网络到世界模型 — 图灵奖得主的40年深度学习谱系 / 清华刘华平教授:机器人具身智能 — 从视触觉到操作学习). Exécutez avec --scheme bilibili et un JSON --data :

{
  "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"
}

La source de vérité de la palette est <TEMPLATE_DIR>/sustech-theme/beamercolorthemesustech.sty (bleu par défaut / rouge lab / rose bilibili) ; le thème du deck est copié dans la construction et le cadre compile sous xelatex (le moteur du deck). Le fond slides-beamer/figures/background.png doit exister (le fond de séparation 可视化分析 du deck) — le générateur échoue fermé sans lui.

Exemple avec outils explicites :

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"

Exemple avec configuration d'environnement :

$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>"

Entrées

Le générateur extrait le titre, le lieu, l'URL du projet, les figures et les métriques du premier fichier Markdown MinerU sous md_output/*/auto/. Si l'extraction basée sur les légendes ne trouve aucune figure, il recherche dans slides-beamer/figures/, paper-source/image/, source/image/, Figures/, puis md_output/*/auto/images/.

Les sources PNG, JPEG et PDF sont prises en charge. Les PDF utilisent pdftoppm résolu. Les figures référencées manquantes, non prises en charge, vides ou non convertibles sont fatales.

Tous les champs JSON sont facultatifs. Les chemins figure_map sont absolus ou relatifs au dossier de l'article :

{
  "title": "Titre de remplacement",
  "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"
  }
}

Traitement par lots

Utilisez un fichier UTF-8 avec un dossier d'article par ligne ; start et count sont des arguments positionnels facultatifs :

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

Le lot utilise l'interpréteur sélectionné par uv, nécessite les trois artefacts pour chaque article et renvoie un code non nul si un élément échoue.

Comportement en cas d'échec

Le générateur renvoie un code non nul si un exécutable requis ou un thème packagé est manquant, si une commande enfant renvoie un code non nul, ou si un artefact requis est manquant ou vide. Traitez tout résultat non nul comme une non-publication ; la construction temporaire échouée est supprimée et la sortie finale précédente reste inchangée.

Compétences associées

  • 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.

Skills associés