Releases: kevin-burns/linkedin-assist
Release list
v0.1.4
v0.1.3
Changelog
Bug fixes
- c4acec1: fix(cli): print the bare Chrome-not-found message, not the wrapped chain ( <>)
- d7c97bc: fix(lint): lowercase ErrChromeNotFound string (staticcheck ST1005) ( <>)
- 2de8357: fix: persist auth cookies and graceful Chrome shutdown to fix headless login loss ( <>)
Documentation
- d8dc8c5: docs: add LICENSE (MIT), CONTRIBUTING, SECURITY, and Dependabot ( <>)
Other
- b798a94: chore(precommit): sync gosec excludes with .golangci.yml and CI ( <>)
v0.1.2
A small fix release.
go install builds now report their version. Previously go install …@vX.Y.Z printed 0.0.0-dev from --version, because go install builds from source and doesn't apply GoReleaser's build-time version stamp. It now falls back to the module version Go embeds in the build (e.g. v0.1.2).
Downloaded release binaries already reported the correct version and are unchanged.
Install
go install github.com/kevin-burns/linkedin-assist/cmd/li-assist@v0.1.2v0.1.1
A maintenance release. v0.1.0's binaries work fine — this brings the published/installable version in line with the latest fixes and is the first release built by the automated GoReleaser pipeline.
Changes
- Ollama probe hardening. The reachability check now validates
LI_ASSIST_OLLAMA_HOST(parses the URL and allows onlyhttp/https) and issues the request with a context deadline. Malformed or non-HTTP hosts are rejected before any call is made. - CI / security gate fixed. The standalone
gosecstep had drifted out of sync with the project's lint policy, breaking the build. The exclude set is now defined once in.golangci.yml(with a written rationale per rule) and mirrored by the Makefile and CI, so all three tools agree. - README accuracy. Documented
--intros(the offline connection-to-job warm-intro feature) end to end, updated the Install section now thatgo installand pre-built binaries are available, and surfaced the bundled agent skill. - Automated releases. Tag pushes now build cross-platform binaries (macOS/Linux, amd64/arm64) + checksums via GoReleaser.
No user-facing behaviour changed for valid configurations.
Install
go install github.com/kevin-burns/linkedin-assist/cmd/li-assist@v0.1.1Or download a pre-built binary from the assets below (verify against checksums.txt).
li-assist v0.1.0 — first public release
li-assist is a single-user, read-only command-line tool for hunting and researching jobs on LinkedIn. It drives your own signed-in Chromium session, reads jobs through LinkedIn's internal voyager API, caches what it sees locally, and can distill noisy job descriptions into structured insights with a local or hosted LLM. Everything goes through a jittered rate limiter with a daily cap — it never posts, messages, connects, or performs any write action.
This is the first public cut.
What's in it
Job search & tracking
jobs search <keywords…>— multi-word keywords with LinkedIn boolean operators (OR/AND/NOT/"phrases"),--location,--anywhere(worldwide),--limit, and repeatable--exclude-company/--exclude-titlefilters.jobs get <urn>— full posting detail (description, apply URL, company, location). Cache-first;--refreshto force a re-fetch.jobs sweep <keywords…>— runs a search, diffs it against a local cache, and prints only what's new since last run. Always writes a one-line audit (N new / M seen / K excluded) to stderr — never silent.
Warm intros (offline)
--introsonjobs get/jobs sweepcross-references your own LinkedIn Connections.csv export against each job's employer and surfaces who you already know there (name, profile URL, current title, connection date). 100% offline — zero extra network calls. Email is dropped at import; the export path is gitignored so it can't be committed.
LLM enrichment
--enrichturns a marketing-heavy description into structured insights (real summary, genuinely-required skills, salary, seniority, condensed description). Provider-agnostic with auto-detect: Ollama → OpenAI → Gemini → Anthropic. Local models keep everything on your machine. Insights are computed once per job and cached.
Setup & health
auth login/auth status(sessions treated as stale after 14 days),doctorhealth checks, andconfig locationto set a default search location once.
Built in
- Browser-resident transport (chromedp, in-page
fetch()— no cookie/header replay), jittered rate limiter + daily cap, a capped self-evicting JSONL cache, and a 5-layer Clean Architecture with a CI-enforced dependency-direction gate. - An agent skill (
skill/SKILL.md) so Claude Code / Codex can drive the tool while respecting the read-only and rate-limit constraints.
What it deliberately does not do
- Never writes. No posting, commenting, reacting, messaging, connecting, or applying — by design, not omission.
- Deferred (read surfaces LinkedIn moved behind Server-Driven UI): company search, people search, person profiles, reading post/article bodies, and browsing the feed. These have no clean
voyagerendpoint to parse. - Distance/radius job filtering: not available — LinkedIn removed distance from the clean jobs endpoint (it now lives only in the SDUI/AI search).
Install
Build from source (requires Go; a local Google Chrome / Chromium is needed at runtime):
go install github.com/kevin-burns/linkedin-assist/cmd/li-assist@v0.1.0
# or clone + `go build -o li-assist ./cmd/li-assist`Pre-built GoReleaser binaries and a Homebrew tap are planned. See the README for macOS quarantine notes.
A note on safety
li-assist uses LinkedIn's private internal API via your own logged-in browser session. Automated access is contrary to LinkedIn's User Agreement, which is exactly why this tool is single-user, read-only, and rate-limited. Use it for your own personal job hunt; the account risk is yours.
Credits
- The browser-resident transport and several
voyagerfacts were informed byeracle/linkedin-cli(MIT). - The offline Connections.csv warm-intro approach was inspired by NetPrune (ChronoCoders), which reached the same read-only-export conclusion.