Skip to main content

Generate a Markdown and PDF CV from a LinkedIn data export

Project description

linkedin-export-cv

Generate a Markdown and PDF CV from a LinkedIn data export, reading the zip's CSVs directly.

Why

LinkedIn is already the single source of truth for your professional history. Keeping a CV by hand in two formats — plain text for job boards that only accept text, and a PDF for everything else — means editing both every time something changes, and they drift out of sync. linkedin-export-cv re-derives both from the export instead: a clean cv.md straight from the relevant CSVs, and a styled PDF rendered from that same file.

Getting the export

  1. Go to your LinkedIn profile and open Settings & Privacy.
  2. Go to Data privacy.
  3. Click Download your data.
  4. Select "Download larger data archive, including connections, verifications, contacts, account history, and information we infer about you based on your profile and activity."
  5. Click Request archive.

LinkedIn emails you a download link once the archive is ready. Use the "larger" archive specifically: it's the one that includes messages.csv, needed to infer your own profile URL for the Contact section.

Install

pipx install linkedin-export-cv

Or pip install linkedin-export-cv inside a virtual environment.

[!NOTE] cv-to-pdf depends on WeasyPrint, which needs native libraries (Pango and its dependencies) beyond what pip/pipx installs. On Windows this usually means installing them via MSYS2; some Linux distributions also need system packages. See WeasyPrint's installation guide if cv-to-pdf fails to import.

Usage

zip-to-cv Complete_LinkedInDataExport.zip
# review cv.md by hand: LinkedIn exports some locations in Russian
# (a known bug in their own export, not in this tool)

cv-to-pdf cv.md

zip-to-cv and cv-to-pdf are deliberately separate steps: you're expected to review and fix cv.md by hand in between.

Both commands take an optional -o/--output to pick a different path; by default zip-to-cv writes cv.md and cv-to-pdf writes a PDF next to its input with the same name (cv.md -> cv.pdf).

What the CV includes

Profile, Experience, Education, Certifications, Projects, Skills, Languages — in that order, each section sorted newest-first where it applies. Experience shows each role's tenure duration (e.g. "5 years 8 months"), calculated the same way LinkedIn itself does. Contact info is your email and your LinkedIn profile link (inferred from messages.csv) — no phone number, it's too invasive for a CV that might end up pasted into a plain-text job board form. Anything from LinkedIn that isn't relevant to a CV (Member Since, Birth Date, Connections, endorsements, recommendations, etc.) is left out.

PDF

cv-to-pdf uses weasyprint + markdown to render an A4 page with a full-height dark sidebar (Contact, Skills, Languages, Certifications) and a main column (Summary, Experience, Education, Projects), inspired by LinkedIn's own native profile PDF export — the one you get from your profile page by clicking Resources → Save to PDF.

Development

git clone https://github.com/AlexisDx13/linkedin-export-cv
cd linkedin-export-cv
pip install -e ".[dev]"
pytest

License

GPL-2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

linkedin_export_cv-0.1.2.tar.gz (20.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

linkedin_export_cv-0.1.2-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

Details for the file linkedin_export_cv-0.1.2.tar.gz.

File metadata

  • Download URL: linkedin_export_cv-0.1.2.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for linkedin_export_cv-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2a8aba62a688eb25b564599f0e8a964e44b2e02a1bd29301efd1cbee4a016e6b
MD5 733235788e4a456f39f7d6a3881634f9
BLAKE2b-256 5f63579fc2080f8b015fa7355ce869e7d083fae12bcc472114d4a63be5d164a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for linkedin_export_cv-0.1.2.tar.gz:

Publisher: publish.yml on AlexisDx13/linkedin-export-cv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file linkedin_export_cv-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for linkedin_export_cv-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c762858af1de19427fa3251e91dce0d04169af6886777dd579b798f8ef2381a0
MD5 d1eba30fe8bd6c5736c1bea342b8fd7a
BLAKE2b-256 515d5be94391972c183a82c701989ae52dd78dc670b310492233b83e638a3f1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for linkedin_export_cv-0.1.2-py3-none-any.whl:

Publisher: publish.yml on AlexisDx13/linkedin-export-cv

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page