diff --git a/commands/profile.md b/commands/profile.md index ff2319c..fe9468d 100644 --- a/commands/profile.md +++ b/commands/profile.md @@ -2,8 +2,9 @@ name: linkedin:profile description: | profile/topic-relevance optimization checklist for LinkedIn's 2026 algorithm update. - LinkedIn now validates your profile BEFORE distributing content. This command audits - and optimizes your profile for maximum reach. Use when the user mentions "profile", + A coherent, on-topic profile reinforces the topic-relevance signal LinkedIn uses to decide + how widely your content is distributed. This command audits and optimizes your profile + for that signal. Use when the user mentions "profile", "topic-relevance", "profile optimization", "why is my reach low", or wants to improve their LinkedIn presence. Triggers on: "optimize profile", "profile/topic-relevance check", "profile audit", "linkedin profile help", "fix my profile". @@ -21,32 +22,37 @@ You are a LinkedIn profile optimization specialist. Help the user optimize their Read `references/algorithm-signals-reference.md` for algorithm mechanics. **The Fundamental Shift:** -- **In the older feed model:** Post something -> Goes to 10% of audience -> Algorithm tracks engagement -- **In the 2026 relevance model:** profile/topic relevance is weighed alongside engagement — content matched to your demonstrated expertise is distributed more widely (including beyond your network), so an off-topic post from a misaligned profile tends to underperform. +- **In the older feed model:** Post something → a slice of your network sees it → the algorithm tracks engagement to decide wider reach +- **In the 2026 relevance model:** topic/interest relevance is weighed alongside engagement — content matched to a viewer's interests is distributed more widely (including beyond your network), so an off-topic post from a profile that sends no clear topic signal tends to underperform. -**Profile/topic alignment is a real ranking input — content matched to your demonstrated expertise is distributed more widely (see `references/algorithm-signals-reference.md`).** +**Profile/topic alignment is a real ranking input — content matched to a viewer's interests is distributed more widely, including beyond your network (see `references/algorithm-signals-reference.md`). LinkedIn confirms no off-topic reach-reduction figure — treat alignment as a real input, not a quantified penalty.** ## The Profile/Topic Relevance Factors -The 2026 relevance-ranking model evaluates five criteria (see `references/algorithm-signals-reference.md`): +Topic alignment is a confirmed ranking input, but LinkedIn does **not** publish a +profile-scoring breakdown — there is no official "five criteria" weighting (see +`references/algorithm-signals-reference.md`). The factors below are practitioner heuristics +for sending a coherent, on-topic expertise signal; treat the priority as directional, not a +measured coefficient: -| Criteria | What It Checks | Impact if Missing | -|----------|----------------|-------------------| -| **About Section** | Does it establish expertise on your topics? | HIGH - first signal of credibility | -| **Experience Section** | Relevant background with impact statements? | HIGH - proves you've done the work | -| **Content History** | Have you posted about this topic before? | MEDIUM - consistency signal | -| **Network** | Connected to professionals in this space? | MEDIUM - social proof | -| **Engagement Patterns** | Do you comment on posts about your topics? | MEDIUM - active participation | +| Factor | What it signals | Priority (heuristic) | +|--------|-----------------|----------------------| +| **About Section** | Establishes your expertise on your topics | High — first thing a reader (and a topic-matcher) sees | +| **Experience Section** | Relevant background with impact statements | High — evidence you've done the work | +| **Content History** | You've posted on this topic before | Medium — consistency signal | +| **Network** | Connected to professionals in this space | Medium — social proof | +| **Engagement Patterns** | You comment on posts in your topics | Medium — active participation | ## Profile SEO — your profile is also a search surface Topic-relevance ranking (above) governs **content distribution**. Separately, your profile is **indexed by LinkedIn search** — when someone searches a topic, a role, or a skill, LinkedIn keyword-matches profile fields to decide who surfaces. -The two reinforce each other: the same keywords that tell the relevance model -what you're expert in are the ones that make you findable. Optimize for both. +The two reinforce each other: the same keywords that make your topic legible — to +readers and to topic-relevance distribution — are the ones that make you findable in +search. Optimize for both. -**The headline is your highest-weight search field.** It is keyword-matched, shown +**The headline is widely regarded as your highest-leverage search field.** It is keyword-matched, shown in every search result and connection suggestion, and renders under your name across the site — so it does the most SEO work per character. Lead with the plain words people actually search (the role, the domain, the audience), not a clever @@ -58,8 +64,8 @@ words they'd type them — not synonyms only you use): | Section | Keyword target | Why it ranks | |---------|----------------|--------------| -| **Headline** | 3–4 primary topic terms + audience + role | Highest-weight search field; always visible | -| **About** | Same primary terms, front-loaded in the first 2–3 lines, then 5–8 supporting terms naturally across the body | Indexed for search; first lines double as the relevance model's expertise signal | +| **Headline** | 3–4 primary topic terms + audience + role | Highest-leverage search field; always visible | +| **About** | Same primary terms, front-loaded in the first 2–3 lines, then 5–8 supporting terms naturally across the body | Indexed for search; the front-loaded first lines also carry your strongest on-topic signal | | **Experience (titles + body)** | The searchable job title (not an internal-only label) + 2–3 domain terms per role | Job titles are weighted in search; an internal title nobody searches is invisible | | **Skills** | Your top 3 skills = your 3 core content topics, exact-match to common search terms | Matched directly against recruiter/search skill filters | | **Featured** | Posts whose titles carry your topic terms | Reinforces the topic association for both search and relevance | @@ -96,7 +102,7 @@ Guide the user through each section using AskUserQuestion for interactive feedba ### Section 2: About Section (2,600 characters max) -**Critical:** This is the first signal telling topic-relevance what you're qualified to discuss. +**Critical:** Your About opener is the clearest place to state, in plain on-topic terms, what you're expert in — the strongest single contribution to a coherent topic signal. **Structure:** @@ -158,7 +164,7 @@ Guide the user through each section using AskUserQuestion for interactive feedba ### Section 5: Skills Section -**Critical for profile/topic-relevance validation.** +**Your top skills are a strong, searchable topic signal.** **Ask the user:** What skills are listed on your profile? @@ -170,7 +176,7 @@ Guide the user through each section using AskUserQuestion for interactive feedba ### Section 6: Network Quality -**profile/topic-relevance checks if you're connected to professionals in your expertise area.** +**A network concentrated in your expertise area reinforces your topic signal and your social proof** (a practitioner heuristic — LinkedIn does not publish network as a profile-ranking factor). **Ask the user:** Who are you primarily connected with? (peers, clients, random connections?) @@ -227,7 +233,7 @@ Based on the audit, provide a prioritized action list: Before posting, the user should ask themselves: -> "If LinkedIn's AI read my profile, would it believe I'm an expert on the topics I post about?" +> "Does my profile make it obvious — to a human and to LinkedIn's topic-matching — that I'm an expert on the topics I post about?" If the answer is no, fix the profile FIRST before posting. diff --git a/docs/hardening/log.md b/docs/hardening/log.md index ce64912..fd9b5ac 100644 --- a/docs/hardening/log.md +++ b/docs/hardening/log.md @@ -1613,3 +1613,80 @@ source so the B2 rewrite can't be re-rendered from a stale reference).** non-scope follow-up (the command calls the mutation correctly). --- + +### /linkedin:profile — profile/topic-relevance + profile-SEO audit walkthrough (7 sections → prioritized action plan); self-contained, no agent/routing/state (S23) + +**INTENT.** Grow-tier **atomic execution command**, prose-heavy + guided (`AskUserQuestion`). +**Self-contained** — no agent delegation, no `/linkedin:Y` routing, no state mutation. Audits the +profile for the topic-relevance ranking signal + profile search-SEO. + +**SIMULATE (adversarial cold quality-reviewer; grounded prose-trace — pure prose, NO fixture: command +reads/mutates no state).** Headline section (`:79-96`) traced against operator input +`"AI-rådgiver | KI-transformasjon | Innholdsprodusent"` → checklist `:85-88` yields NO audience / NO +outcome / vague titles → concrete non-generic rewrite direction. Every mechanical claim (grant grep, SSOT +read, pattern greps) from a tool, never by reasoning. + +**EVALUATE (relevant axes; mechanical predicate each).** +- **(a) intention: PASS** — desc + Grow-journey role coherent; 3 refs (`algorithm-signals-reference.md`, + `troubleshooting-guide.md`, `SKILL.md`) resolve. +- **(b) algorithm-bar (axis-b′): 1 systemic FINDING (B1) + 1 minor (B2).** **B1 — "profile-as-validated-object" + overclaim, 9 sites:** the file repeatedly asserts the relevance model **reads & validates your profile** + and gates distribution on it — `:5` "validates your profile BEFORE distributing content"; `:31` "the model + **evaluates five criteria** (see SSOT)" (**false SSOT attribution** — SSOT has no such breakdown); `:35-39` + "Impact if Missing: **HIGH/HIGH/MEDIUM…**" (postulated coefficients SSOT forbids, `:14/:23`); `:99` "first + signal telling … what you're **qualified** to discuss"; `:161` "relevance **validation**"; `:173` "**checks + if** you're connected"; `:230` "if LinkedIn's AI **read my profile**, would it **believe**"; `:51/:67` SEO + conflation ("**tell the relevance model** what you're expert in" / "the **relevance model's expertise + signal**"). SSOT (`algorithm-signals-reference.md:25-30/:85-90`) confirms ONLY: topic/interest relevance is a + ranking input — content matched to a **viewer's interests** is distributed incl. beyond your network (Jurka, + high); **no off-topic magnitude figure; no weighted profile criteria**. File was **internally inconsistent** — + its own soft, SSOT-true framing already at `:17/:25/:27`. Same class as follow-up #1 (`audit.md:61`) + + v4.0.0 "reconcile to one sourced statement". **B2** `:24` "Goes to **10% of audience**" — postulated + old-model number (`:131` "40%" is an illustrative impact-bullet example → PASS). +- **(c) quality rules: PASS** — no post emission (audit prose only); buzzword list cited correctly (`:73` + steers away from "thought leader/guru/ninja"). +- **(d) grants + graceful + wiring: PASS.** **Grant-hygiene REN (two-way):** `allowed-tools` = `Read` + + `AskUserQuestion` (`:11-13`), both used (`:21/:27/:31/:236` Read; `:77` AskUserQuestion); WebFetch / Write / + Bash / Task / subagent_type / .mjs → **NONE** (no orphans, no missing node/Bash grant). No agent/routing. + Graceful degradation OK (Q&A runs regardless of ref availability). +- **P3 — profile-SEO honesty (`:41-73`): largely defensible** (about LinkedIn *search*, not the ranking + model; correctly does NOT cite SSOT). One practitioner-claim-as-fact: "**highest-weight** search field" + (`:52` prose + `:61` table) — self-justified mechanically, softened not removed. + +**HARDEN (12 edits, 1 file — `commands/profile.md`; all surgical re-source to SSOT framing).** +1. [REWORK · b′] `:5` desc — "validates your profile BEFORE distributing content" → "a coherent, on-topic + profile reinforces the topic-relevance signal LinkedIn uses to decide how widely your content is distributed". +2. [REWORK · b′] `:24` (B2) — "Goes to 10% of audience" → "a slice of your network sees it". +3. [REWORK · b′] `:25/:27` — "content matched to **your demonstrated expertise**" → "**a viewer's interests**" + (SSOT wording) + added "LinkedIn confirms no off-topic reach-reduction figure — not a quantified penalty". +4. [REWORK · b′] `:31` + table `:33-39` — dropped "the model evaluates five criteria (see SSOT)" + HIGH/MEDIUM + "Impact if Missing" weights → "LinkedIn does **not** publish a profile-scoring breakdown … practitioner + heuristics", column → "Priority (heuristic)", High/Medium relabeled directional. +5. [REWORK · b′] `:99` — "first signal telling … qualified to discuss" → "the clearest place to state … the + strongest single contribution to a coherent topic signal". +6. [REWORK · b′] `:161` — "Critical for profile/topic-relevance validation" → "Your top skills are a strong, + searchable topic signal". +7. [REWORK · b′] `:173` — "relevance checks if you're connected" → "a network concentrated in your expertise + area reinforces your topic signal and social proof (heuristic — LinkedIn doesn't publish network as a + profile-ranking factor)". +8. [REWORK · b′] `:230` — "If LinkedIn's AI read my profile, would it believe I'm an expert" → "Does my + profile make it obvious — to a human and to LinkedIn's topic-matching". +9. [REWORK · b′] `:51/:67` SEO conflation — "tell the relevance model what you're expert in" → "make your + topic legible … to topic-relevance distribution"; "the relevance model's expertise signal" → "carry your + strongest on-topic signal". +10. [NICE · P3] `:52/:61` — "highest-weight search field" → "highest-leverage" (×2; rest self-justified, kept). + +**VERIFY.** +- Re-grepped final file. All overclaim/conflation patterns (`validates your profile before | evaluates five + criteria | first signal telling | qualified to discuss | checks if you're connected | relevance validation | + if linkedin's ai read | 10% of audience | highest-weight | demonstrated expertise | Impact if Missing | tell + the relevance model | relevance model's expertise signal`) → **NONE**. New SSOT text present (`:26/:28/:33/ + :38/:54/:178/:235`). +- Grant-hygiene unchanged: `allowed-tools` = Read + AskUserQuestion (`:11-13`); WebFetch/Write/Bash/Task/.mjs → **NONE**. +- `git diff --stat` = 1 file, **+28 / −22**. +- `bash scripts/test-runner.sh` → `Passed: 81 · Failed: 0 · Warnings: 0`, **exit 0**; counts **29/19** + unchanged (.md-only edits — node hook/analytics tests not triggered). +- Disposition: **FIXED** (12 edits, 1 file) · 0 deferrals · axis-b′ **FIXED**, axes a/c/d **PASS** · no + fixture needed (pure prose, no state). + +---