Generate
PMM Content Distribution Engine — Newsletter scraper, Obsidian knowledge brain, multi-format content generation powered by Claude Code
npx -y skills add raven-sourav/pmm-content-engine --skill generateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.8 KB, as published. Nobody here has run it
Skill: Generate Content
Trigger
User provides a theme and asks for content. Supports multiple formats.
Trigger patterns:
- "Write about {theme}" → LinkedIn (default)
- "Write a newsletter about {theme}" → Newsletter format
- "Write a thread about {theme}" → Twitter/X format
- "Write about {theme} for all formats" → Newsletter first (pillar), then distribute
- "Create a carousel about {theme}" → Carousel format
Format Parameter
| Format | Target | Key Reference |
|---|---|---|
linkedin (default) | 800-1200 characters, 3 angles | references/linkedin-practices.md |
newsletter | 1500-3000 words, 3 angle variants | references/newsletter-practices.md |
twitter | 7-10 tweets, 280 chars each, 3 angle variants | references/twitter-practices.md |
carousel | 5-10 slides, 1 point per slide | references/carousel-practices.md |
all | Newsletter first (pillar), then run skills/distribute/SKILL.md | references/format-adaptation-matrix.md |
Process
Step 1: Load references (tiered)
- Always load:
references/generation-angles.md - Format-specific:
- LinkedIn:
references/linkedin-practices.md - Newsletter:
references/newsletter-practices.md+experts/ogilvy-headlines.md+experts/brunson-storytelling.md - Twitter:
references/twitter-practices.md - Carousel:
references/carousel-practices.md - All:
references/format-adaptation-matrix.md+references/newsletter-practices.md(start with pillar)
- LinkedIn:
- Load if research done: The research brief and gap map from the research step
- Load for critique:
references/rubber-duck-escalator.md
Step 2: Load Brain context
Read data/brain/pmm_brain.json and extract:
- For drafting:
synthesized_mental_models,argumentation_playbook,insight_generation_patterns - For voice:
voice_profile_sourav(differentiators, forbidden_patterns, visual_signature) - For critique:
quality_bar_examples
Step 3: Generate 3 drafts
For each angle (contrarian, framework, story), generate in the target format:
LinkedIn (default):
- Follow the structure in
references/generation-angles.md - Use the assigned evidence anchors from the research brief
- Write in Sourav's voice (data-driven, specific, teardown-oriented, startup-focused)
- Think at Pierri's depth (nuanced, anti-dogmatic, framework-rich)
- Apply LinkedIn best practices from
references/linkedin-practices.md - Target 800-1200 characters
Newsletter:
- Follow
references/newsletter-practices.mdstructure (opening → bridge → deep section → practitioner callout → landing → P.S.) - Use Epiphany Bridge (from
experts/brunson-storytelling.md) for story-led angles - Minimum 3 evidence anchors, 2 newsletter source cross-references
- Generate 5 subject line variations (Ogilvy headline principles)
- Target 1500-3000 words
Twitter/X:
- Map each angle to a thread type (see
references/twitter-practices.md) - Write hook tweet first — compress best hook to 280 chars
- One idea per tweet, tweet 2 = strongest insight
- Vary rhythm, include line breaks within tweets
- Verify EVERY tweet ≤280 characters
- Target 7-10 tweets
Carousel:
- Extract framework/progression from each angle
- One key point per slide, max 3-4 lines
- Cover slide with adapted hook, close slide with CTA
- Follow visual design rules from
references/carousel-practices.md - Target 5-10 slides
All formats:
- Generate newsletter first (pillar)
- Run
skills/distribute/SKILL.mdto atomize into LinkedIn + Twitter + Carousel
Step 4: Critique each draft (Rubber Duck Escalator)
Run all 5 phases from references/rubber-duck-escalator.md:
- MIRROR → PROBE → CHALLENGE → ILLUMINATE → CRYSTALLIZE
- Each phase sees prior phase results (cascading context)
- Score 1-10 per phase
- If any phase < 8: rewrite addressing failures, protecting passes
- Max 3 iterations before surfacing to user with notes
Step 5: Present to user
For each draft that passes (or after max iterations):
- Show the draft
- Show the scorecard (5 phase scores + composite)
- If any phase failed, show the critique notes
- Ask: APPROVE / TWEAK / SKIP
Step 6: Generate visual
LinkedIn framework posts: If the post contains a framework, matrix, comparison, progression, or structural concept → follow skills/visual/SKILL.md to produce a visual brief and image.
Carousel format: Generate visual brief for all slides using carousel-practices.md design rules. Produce Pillow-based images.
Newsletter: No visual unless explicitly requested.
Twitter: No visual (text-only threads perform best).
Output Format
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ANGLE 1: CONTRARIAN REFRAME
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Draft text]
SCORECARD
Mirror: 8 | Probe: 9 | Challenge: 8 | Illuminate: 8 | Crystallize: 9
Composite: 8.4 | Status: PASS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ANGLE 2: FRAMEWORK / MENTAL MODEL
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Draft text]
SCORECARD
Mirror: 8 | Probe: 8 | Challenge: 9 | Illuminate: 8 | Crystallize: 8
Composite: 8.2 | Status: PASS
VISUAL BRIEF
Layout: [Pattern]
Title: [Header]
[Sections with colors]
[Generated image]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
See also: skills/research/ (runs before generate) → skills/critique/ (runs after generate) → skills/distribute/ (atomizes pillar output)
See also: skills/research/ (runs before generate) → skills/critique/ (Rubber Duck gate) → skills/distribute/ (atomize to other formats) | skills/_index.md for full data flow