From content-vault
Builds generous, on-brand lead magnets in any format (Notion, PDF, Google Doc/Sheet, GitHub repo, custom GPT, video, vault bundle). Logs to Notion, mirrors to Drive, chains into LinkedIn copywriter.
How this skill is triggered — by the user, by Claude, or both
Slash command
/content-vault:lead-magnet-creatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Build a free asset you can give away on LinkedIn / X / your website
Build a free asset you can give away on LinkedIn / X / your website without holding anything back. Generosity is the brand. The asset answers the question. The CTA at the end is soft.
Format is a decision, not a default. A lead magnet can be:
.claude/skills/)Voice anchors live in corpus.md. Creative magnet ideas live in
ideas.md. If you have an existing vault, paste 2-4 of its strongest
components into corpus.md so the skill grounds new magnets in your
voice.
Triggers:
Skip for:
/proposal-creator/linkedin-copywriter or /x-copywriter/launch-video/video-useIf the user asks for the magnet AND the launch post, do the magnet here,
then chain to /linkedin-copywriter at step 7.
Hard rules that hold across every format:
Stuck? Hit me up: <YOUR_EMAIL> · <YOUR_CAL_LINK>
If a brief asks you to gate the middle, push back once. Then comply.
The envelope is the same regardless of format. Step 2 forks into the per-format pipelines below.
Quick brief.
1. What's the magnet about? Outcome promise in one sentence. Not the
topic, the result. ("Book 14 sales calls in 2 weeks on LinkedIn"
beats "LinkedIn outbound guide".)
2. The single specific story or number that anchors it. ("85 calls /
80k emails / 1 client / Claude Code repo.")
3. Format. Pick one or stack: Notion page · Google Doc · PDF · Sheet ·
Claude Code Skills repo · GitHub starter · custom GPT · web tool ·
video / Loom · vault bundle.
4. Distribution: ungated public link, gated comment-keyword DM, or both?
5. Voice: operator-voice body (default) or AUTHOR-voice throughout?
6. Anything off-limits (NDA, pre-launch features, client names)?
If the user already gave enough context, skip the prompt and parse. Only ask follow-ups for missing fields.
See Format catalogue below. Multiple formats stack into a vault bundle (e.g., "PDF + Notion template + GPT" is fine, treat as a bundle). There is no default; ask if it isn't in the brief.
Create one folder per magnet at lead-magnets/<magnet-slug>/. The
folder holds the source files (HTML, .md, .py, .json, etc.) and any
local renders. The slug is kebab-case, descriptive, no date.
mkdir -p lead-magnets/<magnet-slug>
See the per-format pipelines below. Apply the voice rules from
corpus.md. Run the slop scrub before report-done.
Each format has its own destination. The skill should always end with a single canonical public URL that you can paste into LinkedIn, the website, or a comment-keyword DM. That URL goes in the Notion row and in the launch post.
Drive (when the format produces a file):
<YOUR_DRIVE_LEAD_MAGNETS_FOLDER>)<YOUR_BRAND> · <Title> · YYYY-MM-DD.<ext>mcp__claude_ai_Google_Drive__create_file. Capture the
viewUrl.For formats that don't produce a file (live Notion page, GPT, repo, web tool), skip the Drive step. The Notion row holds the public URL directly.
Notion Content DB (always):
<YOUR_NOTION_CONTENT_DB_ID>Lead MagnetLinkedIn default · ask if multi-channelEducational / Tactical default · see ideas.md for
the full pillar mapIdea if no launch yet · Scripting if launch post in
draft · Scheduled if launch post queuedviewUrl if Drive-backed, else the canonical
public URL of the assetOnce the magnet is live, ask:
Want me to draft the launch post?
/linkedin-copywritercan pick the right hook (R.I.P. for vault drops, "concrete result + tool" for playbooks). I'll seed it with the magnet's outcome promise, the public URL, and the comment-keyword if gated.
Same offer for /x-copywriter and /repurpose.
Closing summary, max 5 lines:
Each format is fully self-contained: its own authoring path, its own distribution, its own publish step. Pick the format that fits the content. None of these is the default.
The most native long-form format. If you have an existing Notion-based vault, link it here so new magnets inherit its structure.
Pick when: the content is naturally hyperlinked, includes screenshots inline, references other Notion pages, or is going to be updated as state changes. Long-form playbooks are very natural here.
Authoring:
lead-magnets/<slug>/page.md (markdown so
the source is reviewable in git and the LLM can refactor it without
hitting Notion's API for every paragraph).corpus.md (outcome-promise headers,
empathy opener, stats blocks, two-tier framings, verbatim prompts).Publish:
mcp__claude_ai_Notion__notion-create-pages to create the
Notion page under a parent you control (your Marketing Content
parent: https://www.notion.so/<YOUR_NOTION_MARKETING_PARENT_ID>).Drive logging: export the page to PDF (Notion UI) once it's stable and upload that PDF as a snapshot. The live URL is the canonical asset; the PDF is just a backup.
Notion row Drive Assets: the public Notion URL (not the PDF).
Pick when the magnet wants to feel like a Doc you can scribble in. Comments enabled, version history visible. Reads as collaborative.
Authoring:
lead-magnets/<slug>/doc.mdPublish:
.docx via python-docx (the same
library proposal-creator uses for clean-text proposals).mimeType: application/vnd.google-apps.document so Drive converts
to a native Google Doc on ingest.permissions API.viewUrl. That's the canonical public URL.Drive logging: the Doc itself lives in Drive.
Notion row Drive Assets: the Drive view URL.
Designed brand asset. Use this when the magnet doubles as a portfolio piece (cover that looks great in a screenshot, dot-grid backdrop, brand mark in the header, accent moment per page).
Authoring:
lead-magnets/<slug>/magnet.html plus
_print.css. If you have a proposal/print template, mirror it.<section class="page"> each.<YOUR_BRAND_TOKENS_PATH> if you have a
tokens file (cards, kicker rules, mini table, pills, two-col,
three-col).Publish:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--headless --disable-gpu --no-pdf-header-footer \
--print-to-pdf-no-header \
--print-to-pdf="lead-magnets/<slug>/magnet.pdf" \
--virtual-time-budget=2000 \
"file://$PWD/lead-magnets/<slug>/magnet.html"
grep -c '—' lead-magnets/<slug>/magnet.html must be 0grep -n '{{' lead-magnets/<slug>/magnet.html must be emptyDrive logging: the PDF file.
Notion row Drive Assets: Drive view URL of the PDF.
Brand defaults (cover page):
<YOUR_BRAND> Vault · NN[outcome].<br/><em>[mechanism].</em>
(period at end of each line)Pick for calculators, scorecards, signal trackers, ICP definers, acquisition models · anything where the value is "punch in your numbers and see your answer".
Authoring:
lead-magnets/<slug>/sheet.py builds the .xlsx via
openpyxl. Sheet structure (column headers, formulas, validation,
named ranges) lives in code so it's diffable.Publish:
python3 sheet.py → produces <slug>.xlsx.mimeType: application/vnd.google-apps.spreadsheet so Drive converts
to a native Google Sheet.viewUrl.Drive logging: the Sheet lives in Drive.
Notion row Drive Assets: the Drive view URL.
A public GitHub repo of installable Claude Code skills. The most
operator-grade magnet for the AI-engineering ICP. Reader runs git clone
into their ~/.claude/skills/ and instantly has the same patterns you
use.
Pick when: the value is repeatable behavior, not a one-off
artifact. Examples: a /cold-email skill that drafts cold emails in a
specific style, a /icp-audit skill that scores a website against a
checklist, a /gtm-stack-picker skill.
Authoring:
lead-magnets/<slug>/skills/<skill-name>/SKILL.md per skill,
plus a top-level README.md explaining the install and the
catalog.SKILL.md follows the standard structure (frontmatter name +
description, body with When-to-invoke, Workflow, Voice rules, Don'ts,
Reference files).LICENSE (MIT or 0BSD) so reuse is unambiguous.Publish:
<YOUR_EMAIL> for support.git clone … ~/.claude/skills/<name>), version tags.Drive logging: none. The repo URL is the canonical asset.
Notion row Drive Assets: the GitHub repo URL.
Code drop. Different from Skills repos: this is one project the reader clones, sets up, and runs (e.g., a cold-email system, an n8n template, a Trigger.dev agent template, a Notion-to-LinkedIn syncer).
Authoring:
lead-magnets/<slug>/repo/..env.example, no real keys.Publish:
Drive logging: none. Repo URL is the asset.
Notion row Drive Assets: the repo URL.
A repeat-use tool the reader pins in their ChatGPT sidebar. Audits, rewriters, coaches, idea generators.
Authoring:
lead-magnets/<slug>/gpt-spec.md with all OpenAI fields:
lead-magnets/<slug>/knowledge/)<YOUR_DOMAIN>, and end with the soft Cal CTA.Publish:
gpt-spec.md you copy-paste into the GPT builder. After
you hit "Publish", paste the GPT URL back into the magnet's
notes file (or the Notion row directly).Drive logging: upload gpt-spec.md as a backup to Drive.
Notion row Drive Assets: the live GPT URL once published.
Small interactive page hosted at a public URL. Examples: cold-email score, acquisition calculator, profile audit submit-form, "battle royale" rewrite-vote.
Authoring:
lead-magnets/<slug>/web/ (single-page or a tiny app).<YOUR_BRAND_TOKENS_PATH>.Publish:
<YOUR_DOMAIN>/free/<slug> or a subdomain.*.vercel.app in production).Drive logging: none. Public URL is the asset.
Notion row Drive Assets: the production URL.
The asset is the video. Examples: a 5-minute Loom walkthrough of a system, a 30-minute recorded webinar, a "roast my profile" Loom each applicant gets back.
Authoring:
/launch-video instead, that's
the right tool.script.md outline (hook, beats, close) and a thumbnail brief./video-use instead.Publish:
Drive logging: upload the MP4 to your Videos folder
(folder id <YOUR_DRIVE_VIDEOS_FOLDER>) for archival. The live
URL (Loom / YouTube / Vimeo) is the canonical asset.
Notion row Drive Assets: the public video URL.
3-5 of the formats above behind one comment-keyword. A classic vault shape is 5 PDFs (or a mix of PDF + Notion + GPT) gated behind one comment-keyword.
Authoring:
lead-magnets/<vault-slug>/. E.g.,
lead-magnets/vault-v2/{playbook-pdf, signal-library-notion, stack-picker-sheet, audit-gpt-spec, content-system-skills}/.index.md (or one wrapping Notion page) lists all
components with one-line outcome promises and public URLs.Publish:
Drive logging: mirror each component to Drive per its format. Add a top-level "vault index" PDF or Notion page as the wrapper.
Notion row Drive Assets: the wrapper URL. Add per-component URLs in the page body.
The voice has two registers. Switch happens between sections, not mid-paragraph.
linkedin-copywriter corpus. Personal. Story-led. Hook-driven.
Use this on the cover, the opening page, and the closing CTA.Read corpus.md first. Pull the hook pattern from a matched anchor
magnet. Default patterns:
The body is closer to a runbook than a LinkedIn post. Anchor on the
operator-voice register from corpus.md.
-, →, or • and stay
consistent within the magnet.Steal verbatim:
Stuck? Hit me up.
<YOUR_EMAIL>·<YOUR_CAL_LINK>
Optionally append :) if the magnet has a casual register.
Run the linkedin-copywriter blacklist against the magnet content.
Highlights: no em dashes (—), no "leverage", no "robust", no "delve",
no "powerful", no curly quotes, no … ellipsis, no TL;DR headers, no
keycap emoji as numbered headers (1️⃣).
When the format renders into a designed surface (PDF, web tool, Sheet
header, video thumbnail, Notion cover image), inherit from
<YOUR_BRAND_TOKENS_PATH> if you have a tokens file. Recommended token
set if starting from scratch:
| Token | Hex | Use |
|---|---|---|
--bg | #fafafa | page bg |
--surface | #ffffff | cards, callouts |
--ink | #0a0a0a | primary text + numerals |
--ink-soft | #3f3f46 | body copy |
--muted | #71717a | captions, micro-labels, "em" half of two-line headlines |
--line | #e4e4e7 | borders |
--accent | #10b981 | the one accent, used once per surface |
Adapt the palette to your brand. The pattern that matters is one accent moment per surface, used for meaning.
For non-designed formats (Google Doc, plain GitHub README), don't try
to brand the body. Brand stamps are the title, the closing CTA, and
the link to <YOUR_DOMAIN>.
If you have a brand mark SVG, inline it when needed (PDF, web, Sheet header image, video).
Ungated public link (default for "be generous" briefs):
<YOUR_DOMAIN>/free
once that route exists.Gated comment-keyword DM:
Claude GTM, BOOKS, GROWTH VAULT).
Bot or you DM the canonical URL.Both (recommended default for launch posts):
The skill records the comment-keyword and the canonical URL in the
Notion row's page body so /linkedin-copywriter can pull both into the
launch post draft.
| Field | Default |
|---|---|
| Edition pill (PDF / Notion cover) | <YOUR_BRAND> Vault · NN (count Notion Content rows where Format=Lead Magnet, increment) |
| Date | Today's ISO date on file names; written-out date on cover |
| Cal link | <YOUR_CAL_LINK> |
<YOUR_EMAIL> | |
| Distribution | Both (ungated link + comment-keyword) |
| Voice mix | AUTHOR voice on opening + close, OPERATOR voice on body |
| Banned-word check | Mandatory before report-done |
| Repo license | MIT or 0BSD for Skills / starter repos |
<YOUR_DOMAIN>/free/<slug>). Use the actual host until the route is
live.corpus.md. Voice anchors pulled from your existing vault. Re-read
before drafting. If empty, see corpus.md.example for the format.ideas.md. 30+ magnet ideas, indexed by format.proposal-creator/SKILL.md for the .docx + Drive upload pattern.linkedin-copywriter/SKILL.md for hook patterns and the slop
scrub.launch-video/SKILL.md for motion-graphics videos.video-use/ for talking-head edits of raw footage.<YOUR_BRAND_TOKENS_PATH> (if you have one).<YOUR_BRAND_DOC> (if you have one).Offer (don't auto-do):
/linkedin-copywriter/x-copywriter/repurpose/schedulegit add lead-magnets/<slug>/ && git commit)npx claudepluginhub timscheuerai/content-vaultCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.