Generate custom 1584 × 396 px banners for LinkedIn profiles featuring curated tech stack icons, custom backgrounds, and portfolio details.
- Python >= 3.10
- uv (recommended)
- librsvg (required for rasterizing to PNG):
- macOS:
brew install librsvg - Ubuntu/Debian:
sudo apt-get install -y librsvg2-bin
- macOS:
# Install dependencies
uv sync
# Generate the default banner configured in local.env
just
# Generate banners for all roles in a specific theme
just topographical
just topographical-light
just linkedin
just network-nodes
# Generate all banners across every role
just allOutputs are saved to exported/<theme>/svg/ and exported/<theme>/png/. PNGs are rasterized at 4x resolution (6336 × 1584 px) by default.
Run via just shortcuts or the CLI directly:
# Syntax
python3 -m banners [preset] [theme] [format] [scale] [--fade <value>]
# Examples
python3 -m banners backend topographical png
python3 -m banners fullstack topographical_light all
python3 -m banners ai_ml linkedin png
python3 -m banners backend topographical png --fade 40%
python3 -m banners backend solid_lavender png 2
python3 -m banners custom topographical png --title "Lead Cloud Architect" --icons "go,k8s,terraform,aws,docker,python"
python3 -m banners --helpYou can generate custom banners with personalized titles, subtitles, and curated tech icons via CLI flags or local.env:
# Create a custom banner from scratch
python3 -m banners custom topographical png \
--title "Lead Platform Engineer" \
--subtitle "Distributed Systems • Kubernetes • Cloud Native" \
--icons "go, k8s, terraform, aws, docker, python"
# Override specific attributes on an existing preset
python3 -m banners backend --title "Distributed Systems Architect"
python3 -m banners fullstack --icons "ts, react, nextjs, node, postgres, docker"The generator enforces visual guardrails to maintain high design quality:
- Icon Count (3 to 8 icons): Banners require at least 3 icons to maintain visual balance, and cap at 8 icons so cards fit comfortably within the LinkedIn safe zone (520 px avatar margin on left, no clipping on right).
- Title Length (3 to 45 characters): Prevents headline overflow at 48px font size.
- Subtitle Length (3 to 80 characters): Prevents description overflow at 22px font size.
- Smart Icon Resolution: Accepts exact stems, canonical names, or common aliases (e.g.
k8s,postgres,cpp,go,ts,hf,gcp). Typo suggestions are provided automatically if an unknown icon is entered.
| Role | Preset Name | Stack Icons |
|---|---|---|
| Backend & Distributed Systems | backend |
Go, Java, Python, Kubernetes, Kafka, Redis, PostgreSQL, AWS |
| Full-Stack Engineer | fullstack |
TypeScript, React, Next.js, Node.js, Tailwind CSS, PostgreSQL, Docker, AWS |
| AI & Machine Learning | ai_ml |
Python, PyTorch, JAX, Hugging Face, LangChain, Apache Spark, Docker, Google Cloud |
| Cloud & DevOps / SRE | devops |
Kubernetes, Docker, Terraform, AWS, Prometheus, Grafana, Linux |
| Mobile Engineer | mobile |
Swift, Kotlin, Flutter, React Native, Expo, Xcode, Android Studio |
| Data Analyst | data_analyst |
SQL, Python, Pandas, Snowflake, BigQuery, dbt, Tableau, Power BI |
| Data Scientist | data_scientist |
Python, R, Pandas, Scikit-Learn, PyTorch, SQL, Apache Spark, Snowflake |
| Data Engineer | data_engineer |
Python, Apache Spark, Kafka, Airflow, Snowflake, BigQuery, dbt, Docker |
| AI Engineer (GenAI & LLMs) | ai_engineer |
Python, LangChain, LangGraph, OpenAI, Hugging Face, Ollama, PyTorch, Docker |
| Machine Learning Engineer | ml_engineer |
Python, PyTorch, TensorFlow, JAX, Hugging Face, NVIDIA, C++, Docker |
| MLOps Engineer | mlops_engineer |
Python, Docker, Kubernetes, MLflow, Airflow, Weights & Biases, Terraform, Prometheus |
Background SVGs are located in assets/backgrounds/. Any background file can be passed as the theme argument.
tortoiseshell: Classic tortoiseshell glasses acetate with backlit amber warmth and organic espresso mottles (alias:tortoise).leopard: Feline coat featuring warm honey rosettes framed by dark chocolate crescent claws (alias:leopard_skin).tiger: Sunset ochre fur with bold, sweeping organic tiger stripes and tapering curves (alias:tiger_skin).topographical: Dark elevation contours with glowing isolines.topographical_crimson: Obsidian canvas with luminous blood red elevation isolines (aliases:blood_red,crimson).topographical_crimson_light: Soft porcelain ivory canvas with drop-shadowed laser-cut crimson isolines (aliases:crimson_light,blood_red_light).topographical_cyber: Dual-tone neon cyan & hot magenta isolines over midnight obsidian (aliases:cyber,neon_topo).topographical_vintage: Warm aged parchment with surveyor coordinate grid & bistre contour lines (aliases:vintage,parchment_topo).topographical_papercut: 3D layered paper-cut stepped relief with realistic drop shadows (aliases:papercut,paper_relief).topographical_particles: 3D undulating LiDAR point-cloud perspective particle terrain over midnight obsidian (aliases:particles,point_cloud,lidar).topographical_midnight: Deep midnight slate canvas with crisp, brilliant white/silver contour isolines (aliases:midnight,midnight_topo).topographical_oceanic: Vibrant cobalt to oceanic navy gradient with pure white contour loops (aliases:oceanic,azure_topo).topographical_cartographic: Ultra-fine authentic monochrome USGS/Alpine contour map with heavy index lines (aliases:cartographic,alpine,mono_topo).topographical_light: Minimalist clean white/slate elevation contour map.topographical_pastel: Contour relief over a soft pastel gradient.topographical_dense: High-density alpine terrain contour lines.linkedin: Official LinkedIn platform blue with white cards and angled brand facets.network_nodes: Deep navy mesh with interconnected graph nodes and vertices.grid_matrix: Technical dot matrix blueprint with crosshairs.circuit_board: Microchip traces and bus routes.flowing_waves: Parametric sine wave ribbon curves.
pastel_aurora: Aurora borealis gradient blending lavender, rose, and cyan.pastel_mesh: Multi-point gradient blending coral, lilac, and mint.pastel_sunset: Warm golden-hour apricot, peach, and soft rose tones.pastel_mint: Neo-mint and seafoam green with a subtle grid overlay.pastel_geometry: Soft pastel canvas with floating geometric shapes.
solid_lavender(#F3E8FF),solid_blush(#FCE7F3),solid_peach(#FFEDD5),solid_cream(#FEFCE8),solid_mint(#ECFDF5),solid_sky(#F0F9FF),solid_periwinkle(#EEF2FF),solid_sand(#FAFAF9).
Copy example.env to local.env or env.local (both are git-ignored):
cp example.env local.envAvailable options:
# Website URL displayed on the banner (leave blank to omit)
WEBSITE_URL=https://yourdomain.com
# Contact email displayed on the banner (leave blank to omit)
EMAIL=hello@yourdomain.com
# Default preset (e.g. backend, fullstack, ai_ml, etc.)
BANNER_NAME=backend
# Default theme or background (e.g. topographical, topographical_light, linkedin)
THEME=topographical
# Pattern fade intensity (percentage or float: e.g. 40%, 60%, 100%, 0.5)
FADE=100%assets/icons/: 75 vector tech stack icons organized by discipline (backend/,frontend/,ai-ml/,cloud-devops/,databases/,messaging/,mobile/).assets/backgrounds/: Background patterns, gradients, and solid colors.assets/previews/: Pre-rendered sample previews used in documentation.banners/: Core banner generator, SVG processor, color adapter, and CLI.exported/: Output directory for generated SVG and PNG banners.tests/: Test suite for presets, themes, rasterization, backgrounds, and CLI.
# Run tests, linter, and formatting checks
just check
# Run tests only
just test
# Format code
just format
# Lint code
just lint