Skill flagged — review recommended

ClawHub Security found sensitive or high-impact capabilities. Review the scan results before using.

MiniMax PDF

v1.0.0

Use this skill when visual quality and design identity matter for a PDF. CREATE (generate from scratch): "make a PDF", "generate a report", "write a proposal...

0· 117· 1 versions· 0 current· 0 all-time· Updated 13h ago· MIT-0
byzylorra@yhlorra

Install

openclaw skills install yh-minimax-pdf

minimax-pdf

Three tasks. One skill.

Read design/design.md before any CREATE or REFORMAT work.


Route table

User intentRouteScripts used
Generate a new PDF from scratchCREATEpalette.pycover.pyrender_cover.jsrender_body.pymerge.py
Fill / complete form fields in an existing PDFFILLfill_inspect.pyfill_write.py
Reformat / re-style an existing documentREFORMATreformat_parse.py → then full CREATE pipeline

Rule: when in doubt between CREATE and REFORMAT, ask whether the user has an existing document to start from. If yes → REFORMAT. If no → CREATE.


Route A: CREATE

Full pipeline — content → design tokens → cover → body → merged PDF.

bash scripts/make.sh run \
  --title "Q3 Strategy Review" --type proposal \
  --author "Strategy Team" --date "October 2025" \
  --accent "#2D5F8A" \
  --content content.json --out report.pdf

Doc types: report · proposal · resume · portfolio · academic · general · minimal · stripe · diagonal · frame · editorial · magazine · darkroom · terminal · poster

TypeCover patternVisual identity
reportfullbleedDark bg, dot grid, Playfair Display
proposalsplitLeft panel + right geometric, Syne
resumetypographicOversized first-word, DM Serif Display
portfolioatmosphericNear-black, radial glow, Fraunces
academictypographicLight bg, classical serif, EB Garamond
generalfullbleedDark slate, Outfit
minimalminimalWhite + single 8px accent bar, Cormorant Garamond
stripestripe3 bold horizontal color bands, Barlow Condensed
diagonaldiagonalSVG angled cut, dark/light halves, Montserrat
frameframeInset border, corner ornaments, Cormorant
editorialeditorialGhost letter, all-caps title, Bebas Neue
magazinemagazineWarm cream bg, centered stack, hero image, Playfair Display
darkroomdarkroomNavy bg, centered stack, grayscale image, Playfair Display
terminalterminalNear-black, grid lines, monospace, neon green
posterposterWhite bg, thick sidebar, oversized title, Barlow Condensed

Cover extras (inject into tokens via --abstract, --cover-image):

  • --abstract "text" — abstract text block on the cover (magazine/darkroom)
  • --cover-image "url" — hero image URL/path (magazine, darkroom, poster)

Color overrides — always choose these based on document content:

  • --accent "#HEX" — override the accent color; accent_lt is auto-derived by lightening toward white
  • --cover-bg "#HEX" — override the cover background color

Accent color selection guidance:

You have creative authority over the accent color. Pick it from the document's semantic context — title, industry, purpose, audience — not from generic "safe" choices. The accent appears on section rules, callout bars, table headers, and the cover: it carries the document's visual identity.

ContextSuggested accent range
Legal / compliance / financeDeep navy #1C3A5E, charcoal #2E3440, slate #3D4C5E
Healthcare / medicalTeal-green #2A6B5A, cool green #3A7D6A
Technology / engineeringSteel blue #2D5F8A, indigo #3D4F8A
Environmental / sustainabilityForest #2E5E3A, olive #4A5E2A
Creative / arts / cultureBurgundy #6B2A35, plum #5A2A6B, terracotta #8A3A2A
Academic / researchDeep teal #2A5A6B, library blue #2A4A6B
Corporate / neutralSlate #3D4A5A, graphite #444C56
Luxury / premiumWarm black #1A1208, deep bronze #4A3820

Rule: choose a color that a thoughtful designer would select for this specific document — not the type's default. Muted, desaturated tones work best; avoid vivid primaries. When in doubt, go darker and more neutral.

content.json block types:

BlockUsageKey fields
h1Section heading + accent ruletext
h2Subsection headingtext
h3Sub-subsection (bold)text
bodyJustified paragraph; supports <b> <i> markuptext
bulletUnordered list item (• prefix)text
numberedOrdered list item — counter auto-resets on non-numbered blockstext
calloutHighlighted insight box with accent left bartext
tableData table — accent header, alternating row tintsheaders, rows, col_widths?, caption?
imageEmbedded image scaled to column widthpath/src, caption?
figureImage with auto-numbered "Figure N:" captionpath/src, caption?
codeMonospace code block with accent left bordertext, language?
mathDisplay math — LaTeX syntax via matplotlib mathtexttext, label?, caption?
chartBar / line / pie chart rendered with matplotlibchart_type, labels, datasets, title?, x_label?, y_label?, caption?, figure?
flowchartProcess diagram with nodes + edges via matplotlibnodes, edges, caption?, figure?
bibliographyNumbered reference list with hanging indentitems [{id, text}], title?
dividerAccent-colored full-width rule
captionSmall muted labeltext
pagebreakForce a new page
spacerVertical whitespacept (default 12)

chart / flowchart schemas:

{"type":"chart","chart_type":"bar","labels":["Q1","Q2","Q3","Q4"],
 "datasets":[{"label":"Revenue","values":[120,145,132,178]}],"caption":"Q results"}

{"type":"flowchart",
 "nodes":[{"id":"s","label":"Start","shape":"oval"},
          {"id":"p","label":"Process","shape":"rect"},
          {"id":"d","label":"Valid?","shape":"diamond"},
          {"id":"e","label":"End","shape":"oval"}],
 "edges":[{"from":"s","to":"p"},{"from":"p","to":"d"},
          {"from":"d","to":"e","label":"Yes"},{"from":"d","to":"p","label":"No"}]}

{"type":"bibliography","items":[
  {"id":"1","text":"Author (Year). Title. Publisher."}]}

Route B: FILL

Fill form fields in an existing PDF without altering layout or design.

# Step 1: inspect
python3 scripts/fill_inspect.py --input form.pdf

# Step 2: fill
python3 scripts/fill_write.py --input form.pdf --out filled.pdf \
  --values '{"FirstName": "Jane", "Agree": "true", "Country": "US"}'
Field typeValue format
textAny string
checkbox"true" or "false"
dropdownMust match a choice value from inspect output
radioMust match a radio value (often starts with /)

Always run fill_inspect.py first to get exact field names.


Route C: REFORMAT

Parse an existing document → content.json → CREATE pipeline.

bash scripts/make.sh reformat \
  --input source.md --title "My Report" --type report --out output.pdf

Supported input formats: .md .txt .pdf .json


Environment

bash scripts/make.sh check   # verify all deps
bash scripts/make.sh fix     # auto-install missing deps
bash scripts/make.sh demo    # build a sample PDF
ToolUsed byInstall
Python 3.9+all .py scriptssystem
reportlabrender_body.pypip install reportlab
pypdffill, merge, reformatpip install pypdf
Node.js 18+render_cover.jssystem
playwright + Chromiumrender_cover.jsnpm install -g playwright && npx playwright install chromium

Version tags

latestvk97dp20ea63hx1ytz6hfps021x83kh5k