Post studio
Skill himanisharrma/finverge-sales-skills/plugins/finverge-sales-skills/skills/post-studio
FinVerge Sales Skills — Claude Code plugin that automates sales/marketing collateral (proposals, product decks, content campaigns) with a dual public/internal knowledge-base architecture
npx -y skills add himanisharrma/finverge-sales-skills --skill post-studioAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 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.
What its author says it does
Copied from the file, not written here
Generate ad-hoc FinVerge product-led content (product-feature, positioning, product-launch posts) across LinkedIn / X / Blog / WhatsApp Business with typographic cards and multi-slide carousels. Use whenever Himani (or the marketing team) wants a one-off post that is NOT part of the scheduled 10-week campaign. Triggers on phrases like "draft a LinkedIn post about [feature]", "make a product-feature post for [product]", "positioning post on [topic]", "we're launching [X], draft the announcement", "create a carousel on NACH failure rates", "post for the sales head on [objection]". Inherits voice rules, persona tags, CTA framework, and the 4-criteria filter from content-campaign. Produces ready-to-post drafts + branded visuals + audit report.
SKILL.md
8.4 KB, as published. Nobody here has run it
Post Studio Skill — FinVerge Ad-Hoc Product Content
Use this skill when you need a one-off post outside the scheduled campaign. Examples:
- the NACH owner wants to explain NACH ML-scoring to NBFC CFOs this week
- Swapnesh needs a positioning post about why most PGs can't do hybrid
- A new partnership just signed — we need a launch announcement today
When to use
Triggering phrases (non-exhaustive):
- "Draft a post about [product/feature]"
- "Make a product-feature post for [NACH / PG / Collect / Orchestrate]"
- "Positioning post on [topic]"
- "We're launching [X] — write the announcement"
- "Create a carousel on [topic]"
- "Post for [owner] on [topic]"
Do NOT use this skill for:
- Scheduled campaign posts (W1–W10) — use
content-campaign+ its Friday batch - Hiring / event / employer-brand posts — not in scope for v1
- Bank proposals — use
bank-proposal-generator - Per-product demo decks — use the relevant product skill
The 7-step conversational flow
When triggered, walk through these 7 questions one at a time. Do NOT ask them all at once — teammates using this for the first time need the steps spaced out.
Step 1 — Post type
Ask:
"What kind of post is this?
- Product-feature — explain one product/module (e.g., 'how Lightning Onboarding works')
- Positioning — category framing (e.g., 'why hybrid matters for enterprise')
- Product-launch — announce a new product, module, or partnership"
Capture choice → sets post_type in the meta scratchpad.
All three post types are fully wired in v1.1 — each has its own structure guide (references/product-feature-patterns.md, positioning-patterns.md, product-launch-patterns.md) and its own carousel template.
Step 2 — Topic
Ask:
"What's the topic or angle? Paste any supporting context (URL, transcript snippet, raw notes) if you have it."
Capture: topic (free text), supporting_context (optional paste).
Step 3 — Owner voice
Ask:
"Whose voice? Default for a product-feature post is the feature owner: the NACH owner (NACH/onboarding), the PG owner (PG/settlement), the Collect owner (Collect/Orchestrate), Chaitanya (FRM), or PruthviRaj (Product Head / architecture). For positioning, default is PruthviRaj or the CBO. For launch, default is the founder or Himani."
Capture owner → pulls voice_tag from content-campaign's OWNER_MAP.
Step 4 — Persona tag
Default per OWNER_MAP[owner]["default_persona"]. Offer to override from the 5-tag taxonomy:
[For NBFCs]·[For D2C Founders]·[For Enterprise CFOs]·[For Fintechs]·[For Payments Leaders]
Step 5 — Platforms
Ask:
"Which platforms? LinkedIn is always on. Multi-select: X / Twitter, Internal newsletter / blog, WhatsApp Business."
All four platforms are wired via fanout.py in v1.1:
- LinkedIn — primary draft (Claude writes against the brief)
- X / Twitter — auto-compressed from LinkedIn (20-50 words, 1-2 hashtags)
- Blog / Newsletter — auto-expanded from LinkedIn (H2 sections, email-based CTA, 800-1500 word target)
- WhatsApp Business — auto-reformatted from LinkedIn (3-5 short lines, plain text, finverge.in link)
Step 6 — Design output
Ask:
"Any visuals? Multi-select:
- No graphic
- Quote card (1200×627 typographic)
- Stat card (big-number hero)
- Headline card (clean title + subhead)
- Carousel (5–7 slide deck)"
Design rendering is fully implemented in v1.1:
- Cards — PIL-based 1200×627 PNGs (quote / stat / headline) with FinVerge brand frame + white logo
- Carousels — python-pptx decks (1080×1080 square format) + PIL-rendered PNG preview sequence.
.pptxis editable in Keynote/PowerPoint; PNGs are LinkedIn-ready - Composite — "quote card + positioning carousel" (positioning default) and "launch deck + headline card" (launch default)
For carousel renders you'll need to provide design_inputs.sections in meta.json with the per-slide content. If missing, the script writes a template explaining what's needed.
Step 7 — CTA type
Default per OWNER_MAP[owner]["default_cta_type"] + post-type:
- Product-feature → Authority CTA ("DM the sales head")
- Positioning → Soft CTA (open question)
- Product-launch → Soft CTA
- Can override: Soft / DM / Authority / Comment
Then: generate
Once inputs are collected, run:
python3 skills/post-studio/scripts/generate_post.py \
--meta <path-to-scratchpad.json> \
--output-dir ~/Downloads/ad-hoc-posts/
(Or call it directly from Claude — it's a simple Python module.)
It will:
- Load voice rules from
content-campaign/campaign_meta.py - Load product KB (for product-feature posts) via
shared/kb_loader.py - Write a LinkedIn draft following
references/product-feature-patterns.md - Run
audit_post.audit()on the draft — block on hard-fail - Render selected graphics (v1: stubbed)
- Compress to X / expand to Blog / re-format to WhatsApp (v1: stubbed)
- Save everything to
~/Downloads/ad-hoc-posts/YYYY-MM-DD_<topic-slug>/
Output structure
~/Downloads/ad-hoc-posts/
└── 2026-04-21_nach-mandate-failures/
├── meta.json # the 7-step inputs + resolved defaults
├── linkedin.md # the LinkedIn post (ready to copy-paste)
├── x.md # X/Twitter variant (v1: stubbed)
├── blog.md # Long-form blog expansion (v1: stubbed)
├── whatsapp.md # WhatsApp broadcast (v1: stubbed)
├── audit.json # structural + strategy-doc audit results
├── graphic.png # Rendered card (v1: stubbed)
└── carousel.pptx # Multi-slide deck (v1: stubbed)
Inherited rules (from content-campaign)
All posts produced by post-studio MUST follow the same rules as campaign posts:
- Persona tag mandatory — first line of every post
- No fabricated numbers — approved quantification only (1.4M cash counters, RBI PA-O/PA-P, 10 years, 2× revenue)
- No weak openers — "I'm excited to announce…" is hard-fail
- "Hybrid" is the hero word — lead with it when framing FinVerge differentiation
- "Bharat" for inclusion framing / "India" for regulatory framing
- Hashtag bounds — LinkedIn 3-5, X 1-2
- CTA framework — every post closes with one of the 4 CTA types
- All inbound routes to the sales head — regardless of CTA type, the ultimate destination is a discovery call
These are enforced by scripts/audit_post.py (same module used by content-campaign).
v1.1 status — full feature set
| Feature | Status |
|---|---|
| Product-feature post → LinkedIn | ✅ Working |
| Positioning post → LinkedIn | ✅ Working |
| Product-launch post → LinkedIn | ✅ Working |
| X / Blog / WhatsApp fanout | ✅ Working (structural transforms, no LLM) |
| Quote / Stat / Headline cards | ✅ Working (PIL, 1200×627, brand frame) |
| Carousels (feature 5 / positioning 5 / launch 7) | ✅ Working (python-pptx + PNG preview) |
| Auditor integration | ✅ Working |
| Voice rules inheritance | ✅ Working |
Coming in v1.2+
- AI-assisted image generation (hero illustrations, not just typography)
- Canva/Figma MCP integration for per-user template customisation
- Direct-to-LinkedIn scheduler API (Buffer / native)
- Additional post types (use-case stories, deal stories, poll posts)
Shared code reused
shared/kb_loader.py— product KB accessshared/brand.py— design tokens (for when design is implemented)skills/content-campaign/campaign_meta.py— PERSONA_TAGS, CTA_FRAMEWORK, FINVERGE_VOICE_RULES, OWNER_MAPskills/content-campaign/scripts/audit_post.py— the 4-criteria + strategy-doc auditor