Entry point for driving LinkedIn work through the Curviate CLI: which skill answers which task, how to resolve the `curviate` binary, the retrieval-mode concept
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-curviate-add1d9ab78fa ,按照其中的说明把「curviate」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
Curviate is a LinkedIn API for agents. The curviate CLI is its command surface, and this skill is
the dispatcher: it says which skill to read, and carries the few rules that apply everywhere. It
carries no command syntax: every command, flag and worked example lives in the area skill that owns
it.
Established against CLI 0.33.0.
| Task | Skill |
|---|---|
| First run on a new machine: install, authenticate, connect an account, prove it works. | curviate-quickstart |
| A member profile or a company page. Resolving a human search term into the filter id a search needs. Sessions, stored profiles and connected accounts. | curviate-profile |
| Finding people, companies, posts, jobs, services or groups. Running a pasted LinkedIn search URL. | curviate-search |
| Reading conversations, sending and managing messages, InMail, company-page inboxes. | curviate-inbox |
| Publishing posts, commenting, reacting, the home feed, notifications. | curviate-engage |
| Connection invitations, follows, relations, followers. | curviate-network |
| Job postings: creating, publishing, budgets, applicants. | curviate-jobs |
| Sales Navigator and Recruiter. | curviate-premium |
When a task spans two areas (find someone, then message them), read both. They are self-sufficient and repeat what they need to; nothing is hidden behind a third skill.
curviate --version # needs Node 18 or newer
If that fails, install it: npm install -g @curviate/cli. Do not substitute a raw HTTP call for a
command you could not find. The command surface is the contract, and hand-rolled requests miss the
projections, the retry contract and the exit-code mapping that every one of these skills is written
against.
Credentials resolve flag > environment > stored profile. For a scripted run prefer
CURVIATE_API_KEY in the environment or a stored profile: a key passed as a flag is visible to other
processes through ps and is saved in shell history.
Every command exits with a code that says what to do next, and under --json an error prints
{"error": {"code", "message", …}}. The code is the contract. The wording is not: it is written
for a human reading a terminal and it changes between releases.
Two consequences worth internalising before the first failure:
error.code before deciding on a
remedy. Exit 5 alone means three unrelated things whose fixes have nothing in common.Some reads can be answered from a stored copy instead of a live call to LinkedIn, and --mode /
--max-age choose between them. Two rules matter everywhere:
profile me, profile <id>, inbox get and
inbox messages. The mechanics (what each mode does, what a store miss returns, and why
cache_only and --max-age cannot be combined) are in curviate-profile and curviate-inbox.unknown flag `--mode`
at exit 2, before any network call. That is the good failure. A retrieval-mode habit carried onto
a search fails loudly instead of quietly serving you a freshness you did not ask for. The two
exceptions below are not retrieval commands either: they refuse retrieval values.Two commands take a --mode that is a different flag wearing the same name, and both spend real
money: job publish and recruiter job publish, each --mode FREE|PROMOTED|PROMOTED_PLUS. They
select how a posting is published. No retrieval value is valid there, and on both the flag is
required rather than optional, so a retrieval habit is refused at exit 2 rather than silently
promoting a posting. See curviate-jobs and curviate-premium.
--json on anything you parse. It is already the default when stdout is not a terminal;
ask for it explicitly when a human might also be watching.--verbose asks for them, including a few that
read exactly like "this member published nothing". Each area skill names its own.--preview before a write renders the resolved request without sending it. On a read command
it is refused at exit 2.