agentsclimarketplace

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

Install
npx -y skills add himanisharrma/finverge-sales-skills --skill post-studio

Assembled 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?

  1. Product-feature — explain one product/module (e.g., 'how Lightning Onboarding works')
  2. Positioning — category framing (e.g., 'why hybrid matters for enterprise')
  3. 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. .pptx is 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:

  1. Load voice rules from content-campaign/campaign_meta.py
  2. Load product KB (for product-feature posts) via shared/kb_loader.py
  3. Write a LinkedIn draft following references/product-feature-patterns.md
  4. Run audit_post.audit() on the draft — block on hard-fail
  5. Render selected graphics (v1: stubbed)
  6. Compress to X / expand to Blog / re-format to WhatsApp (v1: stubbed)
  7. 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

FeatureStatus
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 access
  • shared/brand.py — design tokens (for when design is implemented)
  • skills/content-campaign/campaign_meta.py — PERSONA_TAGS, CTA_FRAMEWORK, FINVERGE_VOICE_RULES, OWNER_MAP
  • skills/content-campaign/scripts/audit_post.py — the 4-criteria + strategy-doc auditor

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.