AgentStack
SKILL verified MIT Self-run

Blog Post

skill-broomva-skills-blog-post · by broomva

Full-stack blog post production — turns a topic, idea, or brief into a complete publishing package across written, social, and multimedia surfaces. Generates broomva.tech .mdx posts (or Substack/other long-form), X posts and threads, LinkedIn posts, Instagram posts and reel scripts, plus multimedia asset plans (images, video, audio, GIFs). Outputs a structured content package to /broomva/posts/.…

No reviews yet
0 installs
13 views
0.0% view→install

Install

$ agentstack add skill-broomva-skills-blog-post

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Blog Post? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Blog Post — Full-Stack Content Production

Turn a topic into a complete, strategy-aware publishing package: long-form post + social adaptations + multimedia assets.

Compounding Skills

This skill orchestrates — it does not re-implement what already exists:

| Skill | Role in Pipeline | |-------|-----------------| | /content-creation | Storytelling frameworks, visual content strategy, social distribution patterns, AI asset generation (Imagen 4.0, Veo 3.1, TTS), Remotion video | | /deep-research | Multi-source research when topic requires verified claims or data | | /agent-browser | Screenshots, reference extraction, web research | | /pencil | Design social cards, carousel slides, diagrams | | /arcan-glass | BroomVA brand styling for visual assets | | /remotion-best-practices | Video composition, spring animations, sequencing | | /google-veo | Veo 3.1 cinematic prompting — camera vocabulary, shot composition, style direction | | /subtitle-generation | Burn-in subtitles for reels (80% watch muted) | | /prompt-library | Reusable prompts for content generation | | /competitor-intel | Market context when writing about products or strategy |

Rule: Before generating content for any phase, check if a compounding skill handles it better. Delegate, don't duplicate.

Modes

Full Pipeline (default)

BRIEF → RESEARCH → ANGLE → OUTLINE → LONG-FORM → ADAPT → MEDIA → STRATEGY → PUBLISH

9 phases, each produces a file or action in the output package.

X-First Mode

BRIEF → ANGLE → X CONTENT → MEDIA → PUBLISH

Lightweight mode for standalone X content — not derived from a blog post. Use when: building in public, reacting to news, sharing a demo, shipping a contrarian take, or posting a terminal screenshot with context. Produces x-post.md and/or x-thread.md with growth-optimized patterns. See [references/x-growth-strategy.md](references/x-growth-strategy.md).

Triggers: "x post about", "tweet about", "x thread about", "post on x", "ship to x", "build in public"

X-First pipeline:

  1. Brief — Topic + intent (1 line is enough)
  2. Angle — Apply the angle test (specificity, tension, evidence) even for short content
  3. Generate — Use growth-optimized templates: visual proof, native media, engagement hooks, strategic tags
  4. Media — Terminal screenshot, architecture diagram, demo GIF, or native video (60-90s)
  5. Publish — Via xurl post or xurl reply (thread). Always attach media natively (never external links)

X-First content types (see [references/x-growth-strategy.md](references/x-growth-strategy.md)):

  • Terminal screenshot + insight (3-5x/week)
  • "How I built X" thread (1x/week)
  • Demo video, 60-90s native (1x/week)
  • Contrarian take (1-2x/week)
  • Before/after comparison (1-2x/week)
  • "Day N of building X" update (daily optional)
  • Strategic reply to big accounts (3-5x/day)

Phase 0: Content Brief Intake

Gather or construct a content brief. See [templates/brief.md](templates/brief.md) for the template.

Required fields:

  • topic — What this post is about
  • intent — Why this post exists (educate, persuade, announce, reflect, document)
  • audience — Who reads this (developers, founders, general, specific community)

Optional fields:

  • platforms — Target channels (default: all). Options: broomva-tech, substack, x-post, x-thread, linkedin, instagram-post, instagram-reel
  • tone — Voice (default: confident-technical). Options: conversational, academic, provocative, reflective, storytelling
  • references — URLs, papers, prior posts to build on
  • media — Desired outputs: png, mp4, gif, mp3 (default: all)
  • cta — What should the reader do after? (follow, subscribe, try, share, discuss)
  • destination — Primary long-form target (default: broomva-tech). Options: substack, medium, dev-to, hashnode
  • slug — URL-friendly identifier (auto-generated from topic if omitted)

If the user provides only a topic, infer reasonable defaults and confirm before proceeding.

Phase 1: Research & Enrichment

When to research: If the brief includes references, data claims, or the topic requires external validation.

How to research:

  1. Use /deep-research for topics needing 5+ verified sources
  2. Use /agent-browser to extract content from reference URLs
  3. Use web search for current data, trends, or competitor context
  4. Use /competitor-intel if topic involves market positioning

Output: research.md — key findings, sources, data points, quotes. Keep it factual and citable.

When to skip: Personal reflections, opinion pieces, internal documentation — research is optional, not mandatory.

Phase 2: Angle & Narrative Selection

The angle is what makes content intentional rather than generic. It answers: "Of all the things I could say about this topic, what specific lens am I using and why?"

Angle selection criteria:

  1. Audience gap — What does this audience need that isn't being said?
  2. Unique evidence — What data or experience do I have that others don't?
  3. Contrarian potential — Is there a widely-held belief I can challenge with evidence?
  4. Timeliness — Is there a current event or trend that makes this relevant now?
  5. Story potential — Is there a transformation narrative (before → after)?

Framework selection (from /content-creation storytelling references):

| Content Type | Best Framework | When to Use | |-------------|---------------|-------------| | Case study / results | PSI (Problem-Solution-Impact) | Showing quantified outcomes | | Industry take / opinion | ABT (And-But-Therefore) | Challenging conventional wisdom | | Technical deep dive | 1-3-1 (One idea, three evidence, one takeaway) | Teaching a concept | | Product / launch story | Pixar Spine | Transformation narrative | | Data-driven insight | Data Arc (Context-Tension-Resolution) | Leading with surprising numbers | | Decision documentation | So-What (What-Why-Action) | Internal or reflective posts |

Output: Update outline.md with the chosen angle, framework, and rationale.

Phase 3: Outline Generation

Build a structured outline from the angle. This is the architectural blueprint — all downstream content derives from it.

Outline structure:

# Title Options (3 candidates, pick best)

## Hook (1-2 sentences — the "why should I care" opener)

## Sections
1. [Section name] — [1-line purpose]
   - Key point A
   - Key point B
   - Evidence/data to include
   - Media placement: [image/video/gif opportunity]

2. [Section name] — [1-line purpose]
   ...

## Closing
- Memorable takeaway (one line)
- CTA alignment with brief

## Media Inventory
- Hero image concept
- Supporting images (one per ~300 words)
- Video opportunity (if applicable)
- GIF opportunity (if applicable)
- Audio narration (y/n)

Output: outline.md

Phase 4: Long-Form Content Generation

Write the primary long-form post. Target platform determines format.

broomva.tech (default)

Use the [templates/broomva-tech-post.mdx](templates/broomva-tech-post.mdx) template.

Frontmatter schema:

---
title: "Post Title"
summary: "One-sentence summary for cards and SEO"
date: YYYY-MM-DD
published: true
tags:
  - tag1
  - tag2
audio: /audio/writing/{slug}.mp3  # if audio generated
---

Content conventions:

  • Use standard Markdown (GFM) — the engine renders via remark + remark-gfm
  • Embed video: ``
  • Images: ``
  • Figures: Caption
  • Tables: Standard GFM tables (styled by Tailwind prose)
  • No custom MDX components needed — raw HTML works

Substack / Alternative Platforms

Use [templates/substack-post.md](templates/substack-post.md). Standard Markdown, no frontmatter beyond title/subtitle. Adjust image paths to be relative or hosted URLs.

Output: broomva-tech-post.mdx and/or substack-post.md (based on destination in brief)

Phase 5: Cross-Platform Adaptation

Critical rule: Each platform gets native content, not a copy-paste resize. The core message is shared; the expression is platform-native.

Adaptation Matrix

| Platform | Length | Format | Hook Style | Media | CTA Style | |----------|--------|--------|-----------|-------|----------| | X blog post | Freeform (no limit) | Long-form article | Narrative hook + hero image | Images, video, GIFs inline | Link + engagement | | X post | 280 chars | Single tweet | Punchy stat or claim | 1 image | Implied (engagement) | | X thread | 5-8 tweets | Numbered thread | Scale proof or contrarian | Image every 2-3 tweets | Link in final tweet | | LinkedIn | 1300 chars | Paragraphs + bullets | First 210 chars = hook | 1 image or document carousel | Direct ask | | Instagram post | 2200 chars caption | Caption + carousel (1080x1350) | Visual-first, caption supports | 1-10 carousel images | Save/share/link in bio | | Instagram reel | 15-60s script | Video script + captions | 3-second hook | 9:16 vertical video | Follow/link in bio |

Platform-Specific Content Generation

See [references/platform-adaptation.md](references/platform-adaptation.md) for detailed per-platform strategies.

X Blog Post — Full long-form article published directly on X (formerly "Twitter Articles"). Freeform length — can match or exceed the broomva.tech post. Supports inline images, videos, GIFs, and rich formatting. Unlike the broomva.tech post, the X blog post is written for X's audience and algorithm — more conversational, more opinionated, more multimedia-dense. Every section should be accompanied by a visual (image, diagram, GIF, or video clip). The hero image is critical — it's the thumbnail that determines clicks. Use Imagen 4.0 for hero + supporting images, Veo 3.1 clips for inline video, and ffmpeg GIFs for demos. See [references/x-blog-post.md](references/x-blog-post.md).

X Post — Extract the single most surprising or provocative insight. Always attach an image (terminal screenshot, diagram, before/after, or generated visual) — text-only posts get 60% less reach. No external links in post body (X suppresses them) — put links in a self-reply. Include an engagement hook: question, contrarian frame, or "reply with your experience." Tag 1-2 relevant accounts when genuinely building on their work. See [references/x-growth-strategy.md](references/x-growth-strategy.md).

X Thread — Re-tell the story in tweet-sized beats. Each tweet stands alone while building momentum. Spend 50% of effort on tweet 1 — it determines everything. Image every 2-3 tweets (increases completion by 45%). Self-reply the full chain fast (don't trickle). End with CTA: question for replies, Discord invite, or link in final self-reply. Tag the most relevant account in tweet 1 if crediting their work. See [references/x-growth-strategy.md](references/x-growth-strategy.md).

LinkedIn — Professional framing. Lead with insight or contrarian take in first 210 chars (before "See More" fold). Use bullet lists for key takeaways. 3-5 hashtags max.

Instagram Post — Design a carousel: cover slide with hook, 1 insight per slide (flashcard style, not paragraphs), stat slide, CTA slide. Caption tells the story; slides show the highlights.

Instagram Reel — Write a script with: 3-second visual hook, problem statement (5s), key insight (10-15s), evidence or demo (10-15s), CTA (5s). Vertical 9:16 format. See [references/reel-production.md](references/reel-production.md) for Veo 3.1 prompting and subtitle burn-in.

Output: x-blog-post.md, x-post.md, x-thread.md, linkedin-post.md, instagram-post.md, instagram-reel.md

Phase 6: Multimedia Production

Plan and produce media assets. See [references/multimedia-production.md](references/multimedia-production.md).

Asset Types

| Asset | Tool | When | |-------|------|------| | Hero image / social card | Nano Banana (gemini-3.1-flash-image) | Always — every post needs a hero | | Supporting images | Nano Banana or /agent-browser screenshots | 1 per ~300 words | | Animated GIF | ffmpeg from video or ImageMagick from frames | UI demos, flow previews | | Audio narration | kokoro-tts / Edge TTS / ElevenLabs | If mp3 in media targets | | Video composition | Remotion + AI clips (Veo 3.1) | If mp4 in media targets | | Instagram carousel PNGs | /pencil MCP | If Instagram in platforms |

Media Prompt Generation

For each planned asset, generate a specific AI prompt in media/image-prompts.md:

  • Describe the visual concept tied to the content it accompanies
  • Include style direction (dark theme, technical, minimal, etc.)
  • Specify dimensions and aspect ratio per platform

Audio Script

If audio is targeted, extract the post body text and write a narration-ready script in media/audio-script.md. Strip markdown formatting, add natural pauses, and note pronunciation guides for technical terms.

Video Script

If video is targeted, write a Remotion-compatible composition outline in media/video-script.md:

  • Scene breakdown (title, stats, screenshots, workflow, closing)
  • Duration per scene
  • Transition style
  • Asset references (which images/clips to use)

Output: media/ directory with prompt files and any generated assets

Phase 7: Strategy & Distribution Planning

Generate strategy documents for the content package.

Output files in strategy/:

  • audience.md — Target audience profile, what they care about, where they are
  • platform-strategy.md — Per-platform approach, posting time, format rationale
  • distribution-plan.md — Publishing sequence (which platform first, timing gaps, cross-linking)
  • cta.md — Call-to-action strategy aligned across all channels

Distribution Sequencing

Recommended order (adjust per strategy):

  1. Blog post first (canonical URL)
  2. X thread within 1 hour (drives initial engagement)
  3. LinkedIn same day (professional audience, different peak hours)
  4. Instagram carousel next day (visual audience, different consumption pattern)
  5. Instagram reel 2-3 days later (extends content lifecycle)
  6. X post (standalone) as engagement trigger mid-week

Phase 8: Publishing & Distribution

Execute the distribution plan by publishing content to each platform. Uses CLI tools and REST APIs — no third-party services.

Platform Connectors

| Platform | Tool | Auth | Capabilities | |----------|------|------|-------------| | X/Twitter | xurl CLI | OAuth2 (configured via xurl auth oauth2) | Post, thread, reply, media upload, like, repost | | LinkedIn | curl + REST API | OAuth2 bearer token | Text posts, image posts, document carousels | | Instagram | curl + Meta Graph API | Business account + access token | Photo posts, carousel posts, reel uploads | | broomva.tech | cp + git + gh | Git credentials | Copy .mdx + assets, create PR |

X Publishing (via xurl)

Prerequisite check: xurl whoami — if 401, prompt user to run xurl auth oauth2.

Single post:

# Text only
xurl post "$(cat x-post.md | head -1)"

# With image
xurl post "$(cat x-post.md | head -1)" --media media/thumbnails/x-card.png

Thread (parse x-thread.md, post sequentially):

# Extract tweet 1 (the hook), post it, capture the tweet ID
FIRST_ID=$(xurl post "Tweet 1 text" --media media/png/hero.png 2>&1 | jq -r '.data.id')

# Reply chain for remaining tweets
xurl reply $FIRST_ID "Tweet 2 text"
# ... continue for each tweet

Thread parsing logic: Read x-thread.md, split on ### N/N headers, extract text between headers, identify 📸 Image: lines for media attachment. See [references/publishing-automation.md](references/publishing-automation.md).

LinkedIn Publishing (via curl)

Prerequisite: OAuth2 access token stored in ~/.config/blog-post/linkedin-token.

LINKEDIN_TOKEN=$(cat ~/.config/blog-post/linkedin-token)
LINKEDIN_URN=$(cat ~/.config/blog-post/linkedin-urn)

# Uses Posts API v2 (ugcPosts was deprecated

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [broomva](https://github.com/broomva)
- **Source:** [broomva/skills](https://github.com/broomva/skills)
- **License:** MIT
- **Homepage:** https://skills.sh/broomva/skills

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.