
Research
/Security News
PolinRider Spreads Through Compromised GitHub Accounts and Packagist
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.
Unified image generation tool - cover images (cover) and Mermaid diagrams (mermaid) generation
Unified Image Generation Tool - Cover (cover), Mermaid (mermaid), Card (card), and Terminal (terminal) Generation
npm install
npx playwright install chromium
# Show help
node cli.js --help
# Cover image generation
node cli.js cover templates # List all templates
node cli.js cover gen --primary "Title" --secondary "Subtitle" -f png -o cover.png
node cli.js cover gen --primary "Title" -f svg -o cover.svg # Pure vector SVG
# Mermaid diagram generation
node cli.js mermaid gen input.mmd -o output.png # Generate PNG
node cli.js mermaid gen input.mmd -o output.svg # Default optimize: dynamic edges + diversified branch colors
node cli.js mermaid gen input.mmd -o output.svg --background-motion grid
node cli.js mermaid gen input.mmd --no-optimize -o output.svg
node cli.js mermaid optimize input.mmd -o optimized.mmd # Output optimized Mermaid source
node cli.js mermaid check input.mmd # Syntax check
# Card image generation
node cli.js card gen -i card.json -f svg -o card.svg # Render card to SVG
node cli.js card gen -i card.json -f webp -o card.webp --background-motion lines
# Terminal image/video generation
node cli.js terminal gen -i terminal.json -f svg -o terminal.svg
# Start server
npm run api
# Access Swagger documentation
open http://localhost:3000/docs
# Build and start
docker-compose up -d
# View logs
docker-compose logs -f
# Stop service
docker-compose down
| Method | Path | Description |
|---|---|---|
| GET | /health | Health check |
| GET | /api/cover/templates | Get cover template list |
| POST | /api/cover/generate | Generate cover image |
| POST | /api/mermaid/render | Render Mermaid diagram |
| POST | /api/mermaid/validate | Validate Mermaid syntax |
| GET | /api/card/layouts | Get card layouts/presets |
| POST | /api/card/generate | Generate card image/video |
| GET | /api/terminal/schema | Get terminal JSON schema |
| GET | /api/terminal/styles | Get terminal styles |
| GET | /api/terminal/formats | Get terminal formats |
| POST | /api/terminal/generate | Generate terminal image/video |
| POST | /api/terminal/parse | Parse text to terminal JSON |
curl -X POST http://localhost:3000/api/cover/generate \
-H "Content-Type: application/json" \
-d '{"template":"black-yellow","primary":"Title","secondary":"Subtitle"}' \
--output cover.png
curl -X POST http://localhost:3000/api/mermaid/render \
-H "Content-Type: application/json" \
-d '{"code":"flowchart LR\n A-->B","format":"png","optimize":true,"backgroundMotion":"dots"}' \
--output diagram.png
curl -X POST http://localhost:3000/api/card/generate \
-H "Content-Type: application/json" \
-d '{"layout":"table-2col","ratio":"9:16","theme":"dark","format":"png","title":"Card","header":["Key","Value"],"rows":[["name","pic-gen"]],"backgroundMotion":"grid"}' \
--output card.png
curl -X POST http://localhost:3000/api/terminal/generate \
-H "Content-Type: application/json" \
-d '{"format":"svg","style":"bash","theme":"dark","steps":[{"type":"input","text":"echo hi"},{"type":"output","text":"hi"}]}' \
--output terminal.svg
All tools in this directory are designed to assist Large Language Models (LLMs) in safely and predictably executing tasks within automated workflows. Tool designs should follow these general conventions for stable LLM invocation:
-i <file> for file input or read from STDIN (using -i -).-o <path>.-h/--help with parameter descriptions and examples; provide --version if applicable.-o/--output.--quiet.Unified Parameter Conventions (recommended, tools may declare deviations in README):
-i, --input <file>: Input file; - means read from STDIN.-o, --output <path>: Output file or directory; defaults to STDOUT if not provided (for text results).-h, --help: Show help and exit.--version: Show version and exit (if applicable).--quiet: Reduce unnecessary log output (logs to STDERR).Directory Structure Recommendations:
bin/<tool>.js).package.json (if using Node.js).README.md (with examples and common error explanations).examples/ directory for quick validation.Quality and Testing:
Tool Index (brief description):
mermaid-gen: Generate Mermaid images/videos (PNG/SVG/APNG/GIF/WebP/MP4/WebM), supports gen/check/optimize, and can output Markdown with ```mermaid code blocks via --md-output.cover-gen: Generate cover images/videos (PNG/SVG/APNG/GIF/WebP/MP4/WebM) based on HTML templates with Playwright; supports single/batch rendering and template listing; covers should be strongly related to article themes (see usage below).
black-yellow / blue-tech / dark-minimal / red-black / pornhub) support pure vector SVG.svg/apng/gif/webp/mp4/webm animate by default, png is always static. Use --no-animation (or API noAnimation) to disable.terminal-gen: Generate terminal typing animation outputs in SVG/PNG/APNG/GIF/WebP/MP4/WebM; supports text parsing and style switching.Unified Directory Requirements (in progress):
bin/<tool>.js (CLI entry point, providing -h/--help)package.json (with bin field)README.md (including purpose, parameters, examples, and notes)examples/ (example inputs)Testcase Schema Conventions:
schemas/:
cover-gen.schema.jsonmermaid-gen.schema.jsoncard-gen.schema.jsonterminal-gen.schema.jsontestcase/<module>/ should include a $schema field pointing to the corresponding file in ../../schemas/., e.g., .npm run dist:sync to sync dist/ to remote during distribution, overwriting with local version../dist/<slug>/images/ directory../dist/<slug>/images/cover.png.flowchart TD/TB; animations show data flow, set as needed but prefer animated versions):
node tools/mermaid-gen/cli.js input.mmd -o dist/<slug>/images/arch.pngnode tools/mermaid-gen/cli.js input.mmd --fps 12 --duration 3 -o dist/<slug>/images/arch.gifnode tools/mermaid-gen/cli.js input.mmd --fps 12 --duration 3 -o dist/<slug>/images/arch.webpnode tools/mermaid-gen/cli.js input.mmd -o dist/<slug>/images/arch.svgpython -m tools.mermaid_gen.cli or tools.mermaid_gen.cli do not exist); only use Node version: node tools/mermaid-gen/cli.js.cover-gen regarding --output and directories:
--output is a relative path, final file is written to tools/cover-gen/out/<relative path>, and tool only pre-creates outputDir, not deeper subdirectories.--output "$PWD/dist/gh-<slug>/images/cover.png", and run mkdir -p dist/gh-<slug>/images first.--output-dir "$PWD/dist/gh-<slug>/images" --output cover.png, also after mkdir -p dist/gh-<slug>/images.--out / --outDir remain available as deprecated aliases.--device both outputs -desktop/-mobile versions; for single cover.png, use --size 1200x630 to limit size and generate only cover.png.cover-gen and mermaid-gen depend on headless browsers (Playwright/Puppeteer). If browser is not found at runtime, run npm i --omit=dev in tool subdirectory and retry.When generating Mermaid flowcharts, animations should be added to connection lines by default to enhance readability and visual guidance.
If you need raw rendering without preprocessing, use CLI --no-optimize or API optimize: false.
fast and slow; medium is prohibited.flowchart LR
A e1@==> B
e1@{ animate: true }
flowchart LR
A e1@--> B
e1@{ animation: fast }
sequenceDiagram 建议使用 autonumber。flowchart/graph 支持 eN@{ ... } 连接线动画语法;sequenceDiagram 不支持,避免写 eN@{ ... } 以免解析报错。npm i --omit=dev in tools/cover-gen directory, then run node cli.js -h to view help.node cli.js cover gen \
--template blue-tech \
--primary "<Article title or repo name + theme>" \
--secondary "<One-sentence value proposition/key feature>" \
--desc "<Optional: supplementary context or version>" \
--format svg \
--output dist/<slug>/images/cover.svg
Animation controls:
svg/apng/gif/webp/mp4/webm are animated, png is static.--no-animation.--background-motion none|dots|lines|grid|gradient (API: backgroundMotion).--watermark; customize text with --watermark-text "...".Devices and dimensions:
--size/--device are not specified, defaults to output both desktop and mobile versions: cover-desktop.png, cover-mobile.png.--device desktop|mobile|both to control exports.--size WIDTHxHEIGHT to output only that size file.Batch tasks (JSON):
node cli.js --input examples/tasks.json
blue-tech/dark-minimal; emphasis on contrast: black-yellow/red-black).cover.png in ./dist/<slug>/images/ (path: ./dist/<slug>/images/cover.png), ensuring the text matches the article title/summary and is relevant.flowchart LR
A e1@--> B
classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 25s linear infinite;
class e1 animate
FAQs
Generate covers, Mermaid diagrams, cards, and terminal screenshots/images for AI workflows.
We found that pic-gen demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.

Company News
Allow myself to introduce... myself.