linkedin2md 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. linkedin2md-0.1.0/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
  2. linkedin2md-0.1.0/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
  3. linkedin2md-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +25 -0
  4. linkedin2md-0.1.0/.github/workflows/ci.yml +39 -0
  5. linkedin2md-0.1.0/.github/workflows/publish.yml +47 -0
  6. linkedin2md-0.1.0/.gitignore +87 -0
  7. linkedin2md-0.1.0/CHANGELOG.md +32 -0
  8. linkedin2md-0.1.0/CODE_OF_CONDUCT.md +55 -0
  9. linkedin2md-0.1.0/CONTRIBUTING.md +105 -0
  10. linkedin2md-0.1.0/LICENSE +21 -0
  11. linkedin2md-0.1.0/PKG-INFO +155 -0
  12. linkedin2md-0.1.0/README.md +127 -0
  13. linkedin2md-0.1.0/pyproject.toml +56 -0
  14. linkedin2md-0.1.0/src/linkedin2md/__init__.py +64 -0
  15. linkedin2md-0.1.0/src/linkedin2md/__main__.py +6 -0
  16. linkedin2md-0.1.0/src/linkedin2md/cli.py +81 -0
  17. linkedin2md-0.1.0/src/linkedin2md/converter.py +136 -0
  18. linkedin2md-0.1.0/src/linkedin2md/extractor.py +80 -0
  19. linkedin2md-0.1.0/src/linkedin2md/formatter.py +1073 -0
  20. linkedin2md-0.1.0/src/linkedin2md/formatters/__init__.py +133 -0
  21. linkedin2md-0.1.0/src/linkedin2md/formatters/activity.py +85 -0
  22. linkedin2md-0.1.0/src/linkedin2md/formatters/advertising.py +109 -0
  23. linkedin2md-0.1.0/src/linkedin2md/formatters/base.py +71 -0
  24. linkedin2md-0.1.0/src/linkedin2md/formatters/content.py +265 -0
  25. linkedin2md-0.1.0/src/linkedin2md/formatters/identity.py +70 -0
  26. linkedin2md-0.1.0/src/linkedin2md/formatters/jobs.py +173 -0
  27. linkedin2md-0.1.0/src/linkedin2md/formatters/learning.py +57 -0
  28. linkedin2md-0.1.0/src/linkedin2md/formatters/network.py +133 -0
  29. linkedin2md-0.1.0/src/linkedin2md/formatters/payments.py +34 -0
  30. linkedin2md-0.1.0/src/linkedin2md/formatters/professional.py +225 -0
  31. linkedin2md-0.1.0/src/linkedin2md/formatters/profile.py +53 -0
  32. linkedin2md-0.1.0/src/linkedin2md/formatters/recommendations.py +139 -0
  33. linkedin2md-0.1.0/src/linkedin2md/formatters/services.py +74 -0
  34. linkedin2md-0.1.0/src/linkedin2md/language.py +88 -0
  35. linkedin2md-0.1.0/src/linkedin2md/parser.py +1504 -0
  36. linkedin2md-0.1.0/src/linkedin2md/parsers/__init__.py +147 -0
  37. linkedin2md-0.1.0/src/linkedin2md/parsers/activity.py +92 -0
  38. linkedin2md-0.1.0/src/linkedin2md/parsers/advertising.py +111 -0
  39. linkedin2md-0.1.0/src/linkedin2md/parsers/base.py +236 -0
  40. linkedin2md-0.1.0/src/linkedin2md/parsers/content.py +269 -0
  41. linkedin2md-0.1.0/src/linkedin2md/parsers/identity.py +62 -0
  42. linkedin2md-0.1.0/src/linkedin2md/parsers/jobs.py +195 -0
  43. linkedin2md-0.1.0/src/linkedin2md/parsers/learning.py +71 -0
  44. linkedin2md-0.1.0/src/linkedin2md/parsers/network.py +162 -0
  45. linkedin2md-0.1.0/src/linkedin2md/parsers/payments.py +35 -0
  46. linkedin2md-0.1.0/src/linkedin2md/parsers/professional.py +269 -0
  47. linkedin2md-0.1.0/src/linkedin2md/parsers/profile.py +149 -0
  48. linkedin2md-0.1.0/src/linkedin2md/parsers/recommendations.py +133 -0
  49. linkedin2md-0.1.0/src/linkedin2md/parsers/services.py +66 -0
  50. linkedin2md-0.1.0/src/linkedin2md/protocols.py +185 -0
  51. linkedin2md-0.1.0/src/linkedin2md/registry.py +76 -0
  52. linkedin2md-0.1.0/src/linkedin2md/writer.py +54 -0
  53. linkedin2md-0.1.0/tests/__init__.py +0 -0
  54. linkedin2md-0.1.0/tests/test_formatter.py +127 -0
  55. linkedin2md-0.1.0/tests/test_parser.py +74 -0
  56. linkedin2md-0.1.0/tests/test_security.py +217 -0
  57. linkedin2md-0.1.0/tests/test_solid.py +269 -0
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+ title: '[BUG] '
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Describe the bug
10
+ A clear and concise description of what the bug is.
11
+
12
+ ## To Reproduce
13
+ Steps to reproduce the behavior:
14
+ 1. Run command '...'
15
+ 2. With file '...'
16
+ 3. See error
17
+
18
+ ## Expected behavior
19
+ A clear and concise description of what you expected to happen.
20
+
21
+ ## Error output
22
+ ```
23
+ Paste the error message here
24
+ ```
25
+
26
+ ## Environment
27
+ - OS: [e.g., Ubuntu 22.04, macOS 14, Windows 11]
28
+ - Python version: [e.g., 3.13.0]
29
+ - linkedin2md version: [e.g., 0.1.0]
30
+
31
+ ## Sample data
32
+ If possible, provide a minimal example of the CSV data that causes the issue (please anonymize any personal information).
33
+
34
+ ## Additional context
35
+ Add any other context about the problem here.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+ title: '[FEATURE] '
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Is your feature request related to a problem?
10
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
11
+
12
+ ## Describe the solution you'd like
13
+ A clear and concise description of what you want to happen.
14
+
15
+ ## Describe alternatives you've considered
16
+ A clear and concise description of any alternative solutions or features you've considered.
17
+
18
+ ## Additional context
19
+ Add any other context or screenshots about the feature request here.
20
+
21
+ ## Would you be willing to contribute this feature?
22
+ - [ ] Yes, I'd like to submit a PR
23
+ - [ ] I can help with testing
24
+ - [ ] No, I'm just suggesting
@@ -0,0 +1,25 @@
1
+ ## Description
2
+ Brief description of the changes in this PR.
3
+
4
+ ## Related Issue
5
+ Fixes #(issue number)
6
+
7
+ ## Type of Change
8
+ - [ ] Bug fix (non-breaking change that fixes an issue)
9
+ - [ ] New feature (non-breaking change that adds functionality)
10
+ - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
11
+ - [ ] Documentation update
12
+
13
+ ## Checklist
14
+ - [ ] My code follows the project's style guidelines
15
+ - [ ] I have run `ruff check .` and `ruff format .`
16
+ - [ ] I have run `pyright` with no errors
17
+ - [ ] I have added tests that prove my fix/feature works
18
+ - [ ] I have run `pytest` and all tests pass
19
+ - [ ] I have updated documentation as needed
20
+
21
+ ## Testing
22
+ Describe how you tested these changes.
23
+
24
+ ## Screenshots (if applicable)
25
+ Add screenshots to help explain your changes.
@@ -0,0 +1,39 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.13"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python ${{ matrix.python-version }}
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+
24
+ - name: Install dependencies
25
+ run: |
26
+ python -m pip install --upgrade pip
27
+ pip install -e ".[dev]"
28
+
29
+ - name: Lint with ruff
30
+ run: |
31
+ ruff check .
32
+ ruff format --check .
33
+
34
+ - name: Type check with pyright
35
+ run: pyright
36
+ continue-on-error: true # Pre-existing type issues to be addressed later
37
+
38
+ - name: Run tests
39
+ run: pytest -v
@@ -0,0 +1,47 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+
13
+ - name: Set up Python
14
+ uses: actions/setup-python@v5
15
+ with:
16
+ python-version: "3.13"
17
+
18
+ - name: Install build dependencies
19
+ run: |
20
+ python -m pip install --upgrade pip
21
+ pip install build
22
+
23
+ - name: Build package
24
+ run: python -m build
25
+
26
+ - name: Upload artifacts
27
+ uses: actions/upload-artifact@v4
28
+ with:
29
+ name: dist
30
+ path: dist/
31
+
32
+ publish:
33
+ needs: build
34
+ runs-on: ubuntu-latest
35
+ environment: pypi
36
+ permissions:
37
+ id-token: write # Required for trusted publishing
38
+
39
+ steps:
40
+ - name: Download artifacts
41
+ uses: actions/download-artifact@v4
42
+ with:
43
+ name: dist
44
+ path: dist/
45
+
46
+ - name: Publish to PyPI
47
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,87 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ *.manifest
31
+ *.spec
32
+
33
+ # Installer logs
34
+ pip-log.txt
35
+ pip-delete-this-directory.txt
36
+
37
+ # Unit test / coverage reports
38
+ htmlcov/
39
+ .tox/
40
+ .nox/
41
+ .coverage
42
+ .coverage.*
43
+ .cache
44
+ nosetests.xml
45
+ coverage.xml
46
+ *.cover
47
+ *.py,cover
48
+ .hypothesis/
49
+ .pytest_cache/
50
+
51
+ # Translations
52
+ *.mo
53
+ *.pot
54
+
55
+ # Environments
56
+ .env
57
+ .venv
58
+ env/
59
+ venv/
60
+ ENV/
61
+ env.bak/
62
+ venv.bak/
63
+
64
+ # IDE
65
+ .vscode/
66
+ .idea/
67
+ *.swp
68
+ *.swo
69
+ *~
70
+
71
+ # Linting / Type checking
72
+ .ruff_cache/
73
+ .mypy_cache/
74
+ .dmypy.json
75
+ dmypy.json
76
+ .pyright/
77
+ pyrightconfig.json
78
+
79
+ # Jupyter Notebook
80
+ .ipynb_checkpoints
81
+
82
+ # macOS
83
+ .DS_Store
84
+
85
+ # Output directories (for testing)
86
+ linkedin_export/
87
+ output/
@@ -0,0 +1,32 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.0] - 2025-01-20
11
+
12
+ ### Added
13
+ - Initial release
14
+ - Convert LinkedIn data exports (ZIP) to Markdown files
15
+ - Support for 40+ data categories:
16
+ - Profile (name, title, contact, summary)
17
+ - Experience and education
18
+ - Skills and certifications
19
+ - Recommendations and endorsements
20
+ - LinkedIn Learning history
21
+ - Connections and network
22
+ - Posts, comments, and reactions
23
+ - Job applications and saved jobs
24
+ - Activity history (searches, logins)
25
+ - Advertising and privacy data
26
+ - Bilingual support (English and Spanish)
27
+ - CLI with customizable output directory
28
+ - SOLID architecture for extensibility
29
+ - Security features (path traversal protection, URL sanitization, file size limits)
30
+
31
+ [Unreleased]: https://github.com/juanmanueldaza/linkedin2md/compare/v0.1.0...HEAD
32
+ [0.1.0]: https://github.com/juanmanueldaza/linkedin2md/releases/tag/v0.1.0
@@ -0,0 +1,55 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socio-economic status,
9
+ nationality, personal appearance, race, religion, or sexual identity
10
+ and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to a positive environment:
15
+
16
+ * Using welcoming and inclusive language
17
+ * Being respectful of differing viewpoints and experiences
18
+ * Gracefully accepting constructive criticism
19
+ * Focusing on what is best for the community
20
+ * Showing empathy towards other community members
21
+
22
+ Examples of unacceptable behavior:
23
+
24
+ * The use of sexualized language or imagery and unwelcome sexual attention
25
+ * Trolling, insulting/derogatory comments, and personal or political attacks
26
+ * Public or private harassment
27
+ * Publishing others' private information without explicit permission
28
+ * Other conduct which could reasonably be considered inappropriate
29
+
30
+ ## Enforcement Responsibilities
31
+
32
+ Project maintainers are responsible for clarifying and enforcing standards of
33
+ acceptable behavior and will take appropriate and fair corrective action in
34
+ response to any behavior that they deem inappropriate, threatening, offensive,
35
+ or harmful.
36
+
37
+ ## Scope
38
+
39
+ This Code of Conduct applies within all community spaces, and also applies when
40
+ an individual is officially representing the community in public spaces.
41
+
42
+ ## Enforcement
43
+
44
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
45
+ reported to the project maintainer at juanmanueldaza@gmail.com.
46
+
47
+ All complaints will be reviewed and investigated promptly and fairly.
48
+
49
+ ## Attribution
50
+
51
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
52
+ version 2.0, available at
53
+ https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
54
+
55
+ [homepage]: https://www.contributor-covenant.org
@@ -0,0 +1,105 @@
1
+ # Contributing to linkedin2md
2
+
3
+ Thank you for your interest in contributing to linkedin2md! This document provides guidelines and instructions for contributing.
4
+
5
+ ## Development Setup
6
+
7
+ 1. **Clone the repository**
8
+ ```bash
9
+ git clone https://github.com/juanmanueldaza/linkedin2md.git
10
+ cd linkedin2md
11
+ ```
12
+
13
+ 2. **Create a virtual environment**
14
+ ```bash
15
+ python -m venv .venv
16
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
17
+ ```
18
+
19
+ 3. **Install development dependencies**
20
+ ```bash
21
+ pip install -e ".[dev]"
22
+ ```
23
+
24
+ ## Code Style
25
+
26
+ This project uses:
27
+ - **Ruff** for linting and formatting
28
+ - **Pyright** for type checking
29
+ - Line length: 88 characters
30
+ - Target: Python 3.13+
31
+
32
+ Run checks before submitting:
33
+ ```bash
34
+ ruff check .
35
+ ruff format .
36
+ pyright
37
+ pytest
38
+ ```
39
+
40
+ ## Architecture
41
+
42
+ The project follows SOLID principles:
43
+
44
+ - **Single Responsibility**: Each parser/formatter handles one section
45
+ - **Open/Closed**: Add new parsers via `@register_parser` decorator
46
+ - **Liskov Substitution**: All parsers implement `SectionParser` protocol
47
+ - **Interface Segregation**: Focused protocols for each component
48
+ - **Dependency Inversion**: Converter depends on protocols, not implementations
49
+
50
+ ### Adding a New Parser
51
+
52
+ 1. Create a file in `src/linkedin2md/parsers/`
53
+ 2. Implement the `SectionParser` protocol
54
+ 3. Use `@register_parser` decorator
55
+ 4. Create matching formatter in `src/linkedin2md/formatters/`
56
+
57
+ Example:
58
+ ```python
59
+ from linkedin2md.parsers.base import BaseParser
60
+ from linkedin2md.registry import register_parser
61
+
62
+ @register_parser
63
+ class MyNewParser(BaseParser):
64
+ section_key = "my_section"
65
+ csv_files = ["MyData.csv"]
66
+
67
+ def parse(self, data: dict) -> list:
68
+ # Parse logic here
69
+ return []
70
+ ```
71
+
72
+ ## Pull Request Process
73
+
74
+ 1. **Fork the repository** and create your branch from `main`
75
+ 2. **Write tests** for new functionality
76
+ 3. **Update documentation** if needed
77
+ 4. **Ensure all checks pass** (ruff, pyright, pytest)
78
+ 5. **Submit a PR** with a clear description
79
+
80
+ ### PR Checklist
81
+
82
+ - [ ] Code follows the project style
83
+ - [ ] Tests added/updated
84
+ - [ ] Documentation updated (if applicable)
85
+ - [ ] All CI checks pass
86
+
87
+ ## Reporting Bugs
88
+
89
+ When reporting bugs, please include:
90
+ - Python version
91
+ - Operating system
92
+ - Steps to reproduce
93
+ - Expected vs actual behavior
94
+ - Sample data (if possible, anonymized)
95
+
96
+ ## Feature Requests
97
+
98
+ Feature requests are welcome! Please:
99
+ - Check existing issues first
100
+ - Describe the use case
101
+ - Explain why it would benefit others
102
+
103
+ ## Questions?
104
+
105
+ Feel free to open an issue for questions or discussions.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Juan Manuel Daza
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,155 @@
1
+ Metadata-Version: 2.4
2
+ Name: linkedin2md
3
+ Version: 0.1.0
4
+ Summary: Convert LinkedIn data exports to Markdown
5
+ Project-URL: Homepage, https://github.com/juanmanueldaza/linkedin2md
6
+ Project-URL: Repository, https://github.com/juanmanueldaza/linkedin2md
7
+ Project-URL: Issues, https://github.com/juanmanueldaza/linkedin2md/issues
8
+ Author-email: Juan Manuel Daza <juanmanueldaza@gmail.com>
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: cv,export,linkedin,markdown,parser,resume
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: End Users/Desktop
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
21
+ Classifier: Topic :: Text Processing :: Markup :: Markdown
22
+ Classifier: Topic :: Utilities
23
+ Requires-Python: >=3.13
24
+ Provides-Extra: dev
25
+ Requires-Dist: pytest>=9.0; extra == 'dev'
26
+ Requires-Dist: ruff>=0.9; extra == 'dev'
27
+ Description-Content-Type: text/markdown
28
+
29
+ # linkedin2md
30
+
31
+ [![PyPI version](https://img.shields.io/pypi/v/linkedin2md)](https://pypi.org/project/linkedin2md/)
32
+ [![Python versions](https://img.shields.io/pypi/pyversions/linkedin2md)](https://pypi.org/project/linkedin2md/)
33
+ [![License](https://img.shields.io/pypi/l/linkedin2md)](https://github.com/juanmanueldaza/linkedin2md/blob/main/LICENSE)
34
+ [![CI](https://github.com/juanmanueldaza/linkedin2md/actions/workflows/ci.yml/badge.svg)](https://github.com/juanmanueldaza/linkedin2md/actions/workflows/ci.yml)
35
+
36
+ Convert LinkedIn data exports to clean Markdown files.
37
+
38
+ ## Installation
39
+
40
+ ```bash
41
+ pip install linkedin2md
42
+ ```
43
+
44
+ ## Usage
45
+
46
+ ```bash
47
+ linkedin2md Complete_LinkedInDataExport.zip
48
+ linkedin2md export.zip -o ./my-profile
49
+ linkedin2md export.zip --lang es
50
+ ```
51
+
52
+ ### Options
53
+
54
+ | Option | Description | Default |
55
+ |--------|-------------|---------|
56
+ | `source` | LinkedIn ZIP export file (required) | - |
57
+ | `-o, --output` | Output directory | `linkedin_export` |
58
+ | `--lang` | Output language (`en` or `es`) | `en` |
59
+
60
+ ## How to Export Your LinkedIn Data
61
+
62
+ Follow these steps to download your LinkedIn data:
63
+
64
+ 1. **Go to Settings**: Log into LinkedIn, click your profile photo in the top right, then select **"Settings & Privacy"**
65
+
66
+ 2. **Navigate to Data Privacy**: In the left sidebar, click **"Data privacy"**
67
+
68
+ 3. **Request your data**: Click **"Get a copy of your data"**
69
+
70
+ 4. **Select data to download**:
71
+ - Choose **"Download larger data archive"** for complete data
72
+ - Or select specific categories if you only need certain data
73
+
74
+ 5. **Request archive**: Click **"Request archive"**
75
+
76
+ 6. **Wait for email**: LinkedIn will process your request and send an email when ready (usually within 24 hours, sometimes up to 72 hours for large archives)
77
+
78
+ 7. **Download the ZIP file**: Click the download link in the email. The file will be named something like `Complete_LinkedInDataExport_01-20-2025.zip`
79
+
80
+ > **Note**: The download link expires after a few days. Download it promptly and store it safely.
81
+
82
+ ## Output
83
+
84
+ Creates markdown files in the output directory, organized by category:
85
+
86
+ ### Core Profile
87
+ - `profile.md` - Name, title, contact, summary
88
+ - `experience.md` - Work history with achievements
89
+ - `education.md` - Educational background
90
+ - `skills.md` - Professional skills
91
+ - `certifications.md` - Certifications and licenses
92
+ - `languages.md` - Language proficiencies
93
+ - `projects.md` - Personal and professional projects
94
+
95
+ ### Recommendations & Endorsements
96
+ - `recommendations.md` - Recommendations received
97
+ - `endorsements.md` - Skill endorsements received
98
+
99
+ ### Learning
100
+ - `learning.md` - LinkedIn Learning courses
101
+ - `learning_reviews.md` - Course reviews and ratings
102
+
103
+ ### Network
104
+ - `connections.md` - Your connections
105
+ - `companies_followed.md` - Companies you follow
106
+ - `members_followed.md` - People you follow
107
+ - `invitations.md` - Connection invitations sent/received
108
+ - `imported_contacts.md` - Contacts imported from address book
109
+
110
+ ### Content & Activity
111
+ - `posts.md` - Your posts and shares
112
+ - `comments.md` - Comments you made
113
+ - `reactions.md` - Likes and reactions
114
+ - `reposts.md` - Content you reposted
115
+ - `votes.md` - Poll votes
116
+ - `saved_items.md` - Bookmarked content
117
+ - `events.md` - Events attended
118
+
119
+ ### Job Search
120
+ - `job_applications.md` - All job applications
121
+ - `saved_jobs.md` - Jobs you saved
122
+ - `job_preferences.md` - Job seeker preferences
123
+ - `saved_job_answers.md` - Saved application answers
124
+ - `screening_responses.md` - Screening question responses
125
+ - `saved_job_alerts.md` - Job alert settings
126
+
127
+ ### Activity History
128
+ - `search_queries.md` - Search history
129
+ - `logins.md` - Login history
130
+ - `security_challenges.md` - Security verification events
131
+
132
+ ### Advertising & Privacy
133
+ - `ads_clicked.md` - Ads you clicked
134
+ - `ad_targeting.md` - How LinkedIn targets ads to you
135
+ - `lan_ads.md` - LinkedIn Audience Network engagement
136
+ - `inferences.md` - LinkedIn's inferences about you
137
+
138
+ ### Payments
139
+ - `receipts.md` - Premium subscription receipts
140
+
141
+ ### Services Marketplace
142
+ - `service_engagements.md` - Service provider engagements
143
+ - `service_opportunities.md` - Service opportunities
144
+
145
+ ### Identity
146
+ - `verifications.md` - Identity verifications
147
+ - `identity_assets.md` - Uploaded documents (resumes, etc.)
148
+
149
+ ## Contributing
150
+
151
+ Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
152
+
153
+ ## License
154
+
155
+ MIT - see [LICENSE](LICENSE) for details.