certificate-generator

Batch create professional certificates with customizable templates for courses, achievements, and awards. Supports CSV input and PDF export.

$ Installer

git clone https://github.com/dkyazzentwatwa/chatgpt-skills /tmp/chatgpt-skills && cp -r /tmp/chatgpt-skills/certificate-generator ~/.claude/skills/chatgpt-skills

// tip: Run this command in your terminal to install the skill


name: certificate-generator description: Batch create professional certificates with customizable templates for courses, achievements, and awards. Supports CSV input and PDF export.

Certificate Generator

Create professional certificates for courses, achievements, events, and awards. Supports batch generation from CSV files with customizable templates and branding.

Quick Start

from scripts.certificate_gen import CertificateGenerator

# Single certificate
cert = CertificateGenerator()
cert.set_title("Certificate of Completion")
cert.set_recipient("John Smith")
cert.set_achievement("Python Programming Course")
cert.set_date("December 14, 2024")
cert.generate().save("certificate.pdf")

# Batch from CSV
CertificateGenerator.batch_generate(
    "students.csv",
    template="achievement",
    title="Certificate of Completion",
    achievement="Data Science Bootcamp",
    output_dir="./certificates/"
)

Features

  • Professional Templates: Modern, classic, elegant, minimal styles
  • Custom Branding: Logo, colors, signatures
  • Batch Generation: Create hundreds of certificates from CSV
  • Dynamic Fields: Name, date, achievement, instructor, etc.
  • Signatures: Text or image signatures with titles
  • Certificate IDs: Auto-generated unique identifiers
  • Export: PDF output, landscape or portrait

API Reference

Initialization

cert = CertificateGenerator()

# With template
cert = CertificateGenerator(template="elegant")

Certificate Content

# Title
cert.set_title("Certificate of Completion")
cert.set_title("Certificate of Achievement")

# Recipient name
cert.set_recipient("Jane Doe")

# Achievement/course/event
cert.set_achievement("Advanced Python Programming")
cert.set_achievement("for outstanding performance in the 2024 Hackathon")

# Description (optional)
cert.set_description(
    "Has successfully completed the 40-hour intensive course "
    "covering advanced topics in Python programming."
)

# Date
cert.set_date("December 14, 2024")
cert.set_date_auto()  # Use today's date

# Certificate ID (auto-generated if not set)
cert.set_certificate_id("CERT-2024-001")

Branding

# Organization name
cert.set_organization("Acme Academy")

# Logo
cert.set_logo("logo.png")
cert.set_logo("logo.png", width=200)

# Colors
cert.set_colors(
    primary="#1e3a5f",    # Main color (title, borders)
    accent="#c9a227",     # Accent color (decorations)
    text="#333333"        # Text color
)

Signatures

# Text signature
cert.add_signature(
    name="Dr. Jane Smith",
    title="Program Director"
)

# Multiple signatures
cert.add_signature("John Doe", "CEO")
cert.add_signature("Jane Smith", "Head of Training")

# Image signature
cert.add_signature(
    name="Dr. Jane Smith",
    title="Program Director",
    signature_image="signature.png"
)

Templates

# Available templates
cert.set_template("modern")    # Clean, contemporary design
cert.set_template("classic")   # Traditional, formal design
cert.set_template("elegant")   # Decorative borders, serif fonts
cert.set_template("minimal")   # Simple, clean design
cert.set_template("academic")  # University/school style

# Orientation
cert.set_orientation("landscape")  # Default
cert.set_orientation("portrait")

Generation and Export

# Generate certificate
cert.generate()

# Save to PDF
cert.save("certificate.pdf")

# Get PDF bytes
pdf_bytes = cert.to_bytes()

Batch Generation

From CSV

# CSV with recipient data
CertificateGenerator.batch_generate(
    csv_file="students.csv",
    template="achievement",
    title="Certificate of Completion",
    achievement="Python Fundamentals",
    organization="Code Academy",
    output_dir="./certificates/"
)

CSV Format

name,date,course,certificate_id
John Smith,2024-12-14,Python 101,CERT-001
Jane Doe,2024-12-14,Python 101,CERT-002
Bob Johnson,2024-12-14,Python 101,CERT-003

Programmatic Batch

recipients = [
    {"name": "John Smith", "course": "Python 101"},
    {"name": "Jane Doe", "course": "Data Science"},
    {"name": "Bob Johnson", "course": "Machine Learning"}
]

for r in recipients:
    cert = CertificateGenerator(template="modern")
    cert.set_title("Certificate of Completion")
    cert.set_recipient(r["name"])
    cert.set_achievement(r["course"])
    cert.set_date_auto()
    cert.generate()
    cert.save(f"certificates/{r['name'].replace(' ', '_')}.pdf")

CLI Usage

# Single certificate
python certificate_gen.py \
    --recipient "John Smith" \
    --title "Certificate of Completion" \
    --achievement "Python Course" \
    --output certificate.pdf

# With options
python certificate_gen.py \
    --recipient "Jane Doe" \
    --title "Certificate of Achievement" \
    --achievement "Excellence in Data Science" \
    --organization "Data Academy" \
    --template elegant \
    --logo logo.png \
    --output achievement.pdf

# Batch from CSV
python certificate_gen.py \
    --batch students.csv \
    --title "Certificate of Completion" \
    --achievement "Bootcamp Graduate" \
    --template modern \
    --output-dir ./certificates/

CLI Arguments

ArgumentDescriptionDefault
--recipientRecipient nameRequired
--titleCertificate titleCertificate
--achievementAchievement text-
--descriptionDescription text-
--organizationOrganization name-
--dateCertificate dateToday
--templateTemplate stylemodern
--logoLogo image path-
--outputOutput PDF pathcertificate.pdf
--batchCSV file for batch-
--output-dirOutput directory (batch)./

Templates

Modern

Clean, contemporary design with:

  • Sans-serif fonts
  • Minimal decorations
  • Bold color accents
  • Professional look

Classic

Traditional design with:

  • Serif fonts
  • Formal layout
  • Border decorations
  • Timeless elegance

Elegant

Decorative design with:

  • Ornate borders
  • Script fonts for name
  • Gold accents
  • Premium feel

Minimal

Simple design with:

  • Clean typography
  • No decorations
  • Lots of white space
  • Modern simplicity

Academic

University style with:

  • Seal/crest placement
  • Formal typography
  • Official appearance
  • Traditional layout

Examples

Course Completion Certificate

cert = CertificateGenerator(template="modern")
cert.set_title("Certificate of Completion")
cert.set_recipient("John Smith")
cert.set_achievement("Full Stack Web Development")
cert.set_description(
    "Has successfully completed the 12-week intensive program "
    "covering HTML, CSS, JavaScript, React, Node.js, and databases."
)
cert.set_organization("Tech Academy")
cert.set_logo("tech_academy_logo.png")
cert.set_date("December 14, 2024")
cert.add_signature("Sarah Johnson", "Program Director")
cert.generate().save("completion_cert.pdf")

Achievement Award

cert = CertificateGenerator(template="elegant")
cert.set_title("Certificate of Achievement")
cert.set_recipient("Jane Doe")
cert.set_achievement("First Place - Annual Hackathon 2024")
cert.set_organization("Innovation Labs")
cert.set_colors(primary="#1a1a2e", accent="#d4af37")
cert.add_signature("Michael Chen", "CEO")
cert.add_signature("Emily Brown", "CTO")
cert.generate().save("achievement_award.pdf")

Workshop Participation

cert = CertificateGenerator(template="minimal")
cert.set_title("Certificate of Participation")
cert.set_recipient("Bob Wilson")
cert.set_achievement("Machine Learning Workshop")
cert.set_description("Attended the 2-day intensive workshop on Dec 12-13, 2024")
cert.set_date_auto()
cert.generate().save("workshop_cert.pdf")

Batch Employee Training

# training_completed.csv
# name,department,course
# Alice,Engineering,Safety Training
# Bob,Sales,Product Training
# Carol,HR,Compliance Training

CertificateGenerator.batch_generate(
    csv_file="training_completed.csv",
    template="classic",
    title="Training Completion Certificate",
    organization="Acme Corp",
    logo="acme_logo.png",
    output_dir="./training_certs/",
    filename_pattern="{name}_{course}.pdf"
)

Dependencies

reportlab>=4.0.0
Pillow>=10.0.0

Limitations

  • PDF output only (no PNG/image export)
  • Pre-defined templates (no custom HTML/CSS)
  • Maximum 3 signatures per certificate
  • Logo should be PNG or JPEG
  • English templates only (RTL languages not supported)