linkedin-resume 0.0.2 → 0.1.1

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.
package/README.md CHANGED
@@ -1,39 +1,154 @@
1
1
  # linkedin-resume
2
2
 
3
- Development utilities for the monorepo.
3
+ A CLI tool that scrapes your LinkedIn profile and generates a professionally styled resume as PDF and HTML.
4
4
 
5
- **Warning**: Private package. Do not expect it to work. Use at own risk.
5
+ ## Features
6
+
7
+ - **Automated LinkedIn scraping** - Extracts your profile, work experience, education, projects, skills, recommendations, and languages using Puppeteer.
8
+ - **HTML resume generation** - Renders a clean, LinkedIn-style HTML resume with grouped work experience, skill pills, and recommendation links.
9
+ - **PDF output** - Converts the HTML resume to PDF via headless Chrome (Windows).
10
+ - **Configurable** - Control output path, extra profiles (e.g. GitHub), and selectively ignore resume sections or specific entries.
11
+ - **Persistent login** - Uses a dedicated Chrome profile so you only need to log in to LinkedIn once.
6
12
 
7
13
  ## Installation
8
14
 
9
15
  ```sh
10
- # install
11
- npm install linkedin-resume -g
16
+ npm install -g linkedin-resume
17
+ ```
18
+
19
+ ## Quick start
20
+
21
+ ```sh
22
+ # First run - prompts for your LinkedIn username and creates a config file
23
+ linkedin-resume
12
24
 
13
- # uninstall
14
- npm uninstall linkedin-resume -g
25
+ # Open the config file in VS Code to customize settings
26
+ linkedin-resume config
15
27
 
16
- # help
17
- linkedin-resume --help
28
+ # Re-render without scraping again (useful for config tweaks)
29
+ linkedin-resume --render
18
30
  ```
19
31
 
20
- ## Help
32
+ ## Usage
21
33
 
22
34
  ```
23
35
  Usage: linkedin-resume [options] [command]
24
36
 
25
- Development utilities for the monorepo.
37
+ A CLI tool to generate a LinkedIn resume in PDF format.
38
+
39
+ Arguments:
40
+ outputFilepath Optional filepath. Defaults to value set in config file.
26
41
 
27
42
  Options:
28
- -V, --version output the version number
29
- -h, --help display help for command
43
+ -V, --version output the version number
44
+ --debug enable debug output
45
+ --render skip scraping, only render
46
+ --headless hide scraping browser window
47
+ --keep-open keep browser open after scraping
48
+ -h, --help display help for command
30
49
 
31
50
  Commands:
32
- libs|l
33
- deps|d
34
- config|c
35
- imports|i
36
- help [command] display help for command
51
+ config [options] Create or update config file with LinkedIn username and other settings
52
+ ```
53
+
54
+ ### Examples
55
+
56
+ ```sh
57
+ # Scrape and generate with browser visible (default)
58
+ linkedin-resume
59
+
60
+ # Scrape in headless mode
61
+ linkedin-resume --headless
62
+
63
+ # Skip scraping, re-render from previously scraped data
64
+ linkedin-resume --render
65
+
66
+ # Output PDF to a custom path
67
+ linkedin-resume ~/Documents/my-resume.pdf
68
+
69
+ # Print the config file path
70
+ linkedin-resume config --path
71
+
72
+ # Open the config file in VS Code for editing
73
+ linkedin-resume config
74
+ ```
75
+
76
+ ## How it works
77
+
78
+ 1. **Login check** - Ensures you are logged in to LinkedIn via a persistent Chrome profile.
79
+ 2. **Scrape** - Opens multiple LinkedIn pages in parallel (profile, experience, education, projects, skills, recommendations) and saves the scraped data as JSON files.
80
+ 3. **Render JSON** - Merges all scraped data into a single `resume.json` conforming to the [Resume schema](./src/resume.schema.json).
81
+ 4. **Render HTML** - Generates a styled `resume.html` from the resume data, applying any ignore filters from your config.
82
+ 5. **Render PDF** - Converts the HTML to PDF using headless Chrome and copies it to your configured output path.
83
+
84
+ ## Configuration
85
+
86
+ The config file is created automatically on first run and stored in your system's app data directory. Open it with:
87
+
88
+ ```sh
89
+ linkedin-resume config
90
+ ```
91
+
92
+ ### Config file structure
93
+
94
+ ```jsonc
95
+ {
96
+ // Your LinkedIn username (from your profile URL)
97
+ "linkedInUsername": "johndoe",
98
+
99
+ // Where to save the generated PDF. Supports environment variables.
100
+ "outputFilepath": "$USERPROFILE/Desktop/resume.pdf",
101
+
102
+ // Additional profiles to display in the resume header
103
+ "profiles": [
104
+ {
105
+ "network": "GitHub",
106
+ "username": "johndoe",
107
+ "url": "https://github.com/johndoe",
108
+ },
109
+ ],
110
+
111
+ // Selectively ignore sections or specific entries when rendering
112
+ "ignore": {
113
+ // Set to true to hide the entire section, or an array to hide specific entries
114
+ "work": [{ "name": "Company Inc.", "position": "Intern" }],
115
+ "education": false,
116
+ "projects": [{ "name": "Old Project" }],
117
+ "skills": [{ "name": "Microsoft Word" }],
118
+ "languages": false,
119
+ "recommendations": false,
120
+ },
121
+ }
122
+ ```
123
+
124
+ ### Ignore filters
125
+
126
+ Each section in `ignore` accepts either:
127
+
128
+ - **`true`** - Hides the entire section from the rendered resume.
129
+ - **An array of partial objects** - Hides only entries whose primitive fields match all specified values. For example, `{ "name": "Acme Corp", "position": "Intern" }` ignores only the entry where both fields match.
130
+
131
+ Supported fields per section:
132
+
133
+ | Section | Matchable fields |
134
+ | ----------------- | ---------------------------------------------------------------------------------------- |
135
+ | `work` | `name`, `location`, `position`, `startDate`, `endDate`, `duration`, `summary`, `logoUrl` |
136
+ | `education` | `institution`, `area`, `studyType`, `startDate`, `endDate`, `score`, `logoUrl` |
137
+ | `projects` | `name`, `description`, `startDate`, `endDate`, `entity`, `type`, `url`, `logoUrl` |
138
+ | `skills` | `name` |
139
+ | `languages` | `language`, `fluency` |
140
+ | `recommendations` | `name`, `headline`, `date`, `relationship`, `logoUrl` |
141
+
142
+ ## Requirements
143
+
144
+ - **Node.js** >= 18
145
+ - **Google Chrome** - Required for PDF generation (Windows only; uses headless Chrome at the default install path).
146
+ - **LinkedIn account** - You will be prompted to log in on first run.
147
+
148
+ ## Uninstall
149
+
150
+ ```sh
151
+ npm uninstall -g linkedin-resume
37
152
  ```
38
153
 
39
154
  ## License