{"id":"linkedin-hook-extractor","name":"linkedin-hook-extractor","summary":"バイラルなLinkedIn投稿のURLからフックの公式をリバースエンジニアリングする。2026年に使われている16の標準的な公式(アナフォラ、R.I.P.、イヤーピボット、タイムアンカー、好奇心のギャップ、逆張り、コメントゲート、感情のコールドオープン、名前付き感謝、その他7つ)、なぜうまくいったのか、そして空白のテ…","body":"# LinkedIn Hook Extractor\n\nPaste a viral LinkedIn post URL. Get back: which hook formula it uses, the exact structure, why it worked, and a blank template mapped to your topic.\n\n## When to use\n\n- User finds a viral post they want to study\n- User wants to replicate a specific creator's pattern\n- Before `linkedin-post-writer` to seed a draft with a proven structure\n\n## Input\n\nA LinkedIn post URL (any type: activity, share, ugcPost).\n\n## Output\n\n- **Formula identified** (F1-F16 from `../../references/hook-formulas.md`) with confidence score\n- **Structural breakdown:**\n  - Hook lines (first 210 chars)\n  - Body architecture (sections + what each does)\n  - Close pattern\n  - Reaction-triggering devices (numbers, named entities, vulnerabilities)\n- **Why it worked** psychologically\n- **Blank template** filled with slot markers matched to the original, ready for the user's voice\n- **Cautions:** anything in the original post that would fail 2026 audit (em dashes, AI vocab, outdated tactics)\n\n## Steps\n\n1. **Parse URL.** `lib.url_parser.parse_linkedin_url` → `post_urn`.\n2. **Fetch post body.** If `APIFY_TOKEN` is set, call `lib.ApifyClient.fetch_post(url)`. Otherwise ask the user to paste the text.\n3. **Classify.** Match against the 16 formulas using features:\n   - First 2 lines: anaphoric? question? confession? number-led?\n   - Body: numbered list? dated receipts? ledger? teardown?\n   - Close: mirror question? identity reframe? commitment?\n   - F11-F16 cues: in-medias-res emotional scene with no setup (F11 Emotional Cold-Open); \"I don't know who needs to hear this\" reassurance (F12 Permission Slip); fake-bad-news that resolves positive (F13 Bait-and-Switch); a roll-call of named people thanked (F14 Named Gratitude); \"{jargon} explained to kids\" glossary (F15 Explain-to-Kids); \"outside I'm called X, at home none of it survives\" (F16 Status-Strip).\n4. **Score confidence.** If multiple formulas fit, return top 2 with fit scores.\n5. **Extract structure.** Pull each logical section and label it by formula role.\n6. **Generate blank template.** Replace specifics with `{slot}` markers that match the user's topic.\n7. **Audit the source.** Flag any AI tells in the original so the user doesn't copy them.\n\n## Example\n\nSee `references/examples.md` for worked examples.\n\n## Formulas reference\n\nSee `../../references/hook-formulas.md` for the 16 canonical formulas with full skeletons.\n\n## Files\n\n- `SKILL.md` — this file\n- `references/classification-rules.md` — feature extraction + scoring heuristics\n\n## Related skills\n\n- `linkedin-post-writer` — use the extracted template to draft your own\n- `linkedin-humanizer --mode audit` — audit your draft before shipping","author":"@sergebulaev","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/sergebulaev/linkedin-skills/tree/main/.codex-marketplace/linkedin-skills/skills/linkedin-hook-extractor","license":"MIT","category":"writing","lang":"en","tokens":657,"stars":0,"calls30d":1,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"references/classification-rules.md","size":3381,"sha256":"a936a09b9ff8c9336112f0364c096d74a9c74ca4bb624149aba60cdf3f930203"},{"path":"references/examples.md","size":959,"sha256":"b346c97edeaa0c51f02e27d7ca26a2aaf0afb629c93d0b16e3d642419be68256"}],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":["www.linkedin.com"]}}