Install
$ agentstack add skill-organvm-a-i-skills-essay-publishing-pipeline ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo 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 No
- ● Filesystem access Used
- ✓ 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.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Essay Publishing Pipeline
Move written content from draft through editing, formatting, and multi-platform distribution.
Pipeline Architecture
Draft → Edit → Format → Metadata → Build → Publish → Distribute
↑ │
└──────────── Feedback Loop ───────────────────────────┘
Stage Definitions
| Stage | Input | Output | Tools | |-------|-------|--------|-------| | Draft | Ideas, notes | Raw markdown | Editor, voice notes | | Edit | Raw markdown | Polished markdown | Linter, peer review | | Format | Polished markdown | Structured content | Frontmatter, templates | | Metadata | Structured content | Enriched content | Tags, categories, SEO | | Build | Enriched content | HTML/PDF output | SSG, Pandoc | | Publish | Built output | Live content | Deploy, CMS API | | Distribute | Published URL | Cross-posts | RSS, social, newsletter |
Content Structure
Markdown with Frontmatter
---
title: "On the Architecture of Automated Systems"
subtitle: "Why eight organs beat one monolith"
author: "Author Name"
date: 2026-03-20
updated: 2026-03-20
status: published
tags: [architecture, automation, organvm]
category: systems-thinking
series: "Orchestration Essays"
series_order: 3
abstract: >
A 2000-word exploration of why modular organ-based
architecture outperforms monolithic automation.
canonical_url: "https://example.com/essays/architecture-of-automated-systems"
---
# On the Architecture of Automated Systems
Opening paragraph that hooks the reader...
Essay Taxonomy
| Field | Purpose | Example | |-------|---------|---------| | status | Workflow state | draft, review, published, archived | | tags | Topic classification | [architecture, automation] | | category | Primary category | systems-thinking | | series | Multi-part grouping | "Orchestration Essays" | | canonical_url | SEO canonical | Primary publication URL | | abstract | Summary for feeds/cards | 1-2 sentence summary |
Markdown Processing
Conversion Pipeline
# Markdown → HTML with Pandoc
pandoc essay.md \
--from markdown+yaml_metadata_block \
--to html5 \
--template template.html \
--highlight-style tango \
--toc \
--toc-depth=2 \
--output essay.html
# Markdown → PDF
pandoc essay.md \
--pdf-engine=weasyprint \
--css style.css \
--output essay.pdf
Static Site Generator Integration
# Build script for essay collection
from pathlib import Path
import yaml
import markdown
def build_essays(source_dir: str, output_dir: str):
essays = []
for md_file in sorted(Path(source_dir).glob("*.md")):
text = md_file.read_text()
frontmatter, content = text.split("---\n", 2)[1:]
meta = yaml.safe_load(frontmatter)
if meta.get("status") != "published":
continue
html = markdown.markdown(content, extensions=["fenced_code", "tables", "toc"])
essays.append({"meta": meta, "html": html, "slug": md_file.stem})
for essay in essays:
output = Path(output_dir) / f"{essay['slug']}/index.html"
output.parent.mkdir(parents=True, exist_ok=True)
output.write_text(render_template(essay))
build_index(essays, output_dir)
build_rss_feed(essays, output_dir)
RSS/Atom Feed Generation
from datetime import datetime
import xml.etree.ElementTree as ET
def build_rss_feed(essays: list[dict], output_dir: str):
rss = ET.Element("rss", version="2.0")
channel = ET.SubElement(rss, "channel")
ET.SubElement(channel, "title").text = "Essay Collection"
ET.SubElement(channel, "link").text = "https://example.com/essays"
ET.SubElement(channel, "description").text = "Long-form writing on systems and culture"
for essay in essays[:20]:
item = ET.SubElement(channel, "item")
ET.SubElement(item, "title").text = essay["meta"]["title"]
ET.SubElement(item, "link").text = f"https://example.com/essays/{essay['slug']}"
ET.SubElement(item, "description").text = essay["meta"].get("abstract", "")
ET.SubElement(item, "pubDate").text = essay["meta"]["date"].strftime(
"%a, %d %b %Y 00:00:00 GMT"
)
tree = ET.ElementTree(rss)
tree.write(f"{output_dir}/feed.xml", xml_declaration=True, encoding="utf-8")
Cross-Posting Strategy
POSSE (Publish on Own Site, Syndicate Elsewhere)
Own site (canonical) → Medium → Dev.to → LinkedIn → Newsletter
↗ ↗
RSS feed triggers automation
Cross-Post Formatting
| Platform | Format | Limits | Notes | |----------|--------|--------|-------| | Own site | Full HTML | None | Canonical URL | | Medium | Markdown import | None | Set canonical URL | | Dev.to | Markdown + frontmatter | None | Use API for automation | | LinkedIn | Plain text + link | 3000 chars | Excerpt + link to full | | Newsletter | HTML email | Images inline | Adapt layout for email |
Automated Cross-Posting
async def cross_post(essay: dict):
canonical = essay["meta"]["canonical_url"]
# Dev.to
await devto_api.create_article(
title=essay["meta"]["title"],
body_markdown=essay["content"],
canonical_url=canonical,
tags=essay["meta"]["tags"][:4],
published=True,
)
# Newsletter
await newsletter_api.create_campaign(
subject=essay["meta"]["title"],
html=render_email_template(essay),
)
Quality Gates
Pre-Publish Checklist
- [ ] Spell check and grammar review
- [ ] Links verified (no 404s)
- [ ] Images optimized and alt-text present
- [ ] Frontmatter complete (title, date, tags, abstract)
- [ ] Canonical URL set
- [ ] Open Graph / social card metadata present
- [ ] RSS feed validates
- [ ] Mobile rendering verified
SEO Metadata
Anti-Patterns
- Publishing without canonical URL — Leads to duplicate content SEO penalties
- Manual cross-posting — Automate with APIs and RSS triggers
- No RSS feed — Essential for syndication and discoverability
- Draft content leaking — Always check
statusfield before building - No versioning — Track
updateddate for revised essays - Platform-first publishing — Always publish on own domain first (POSSE)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: organvm
- Source: organvm/a-i--skills
- License: Apache-2.0
- Homepage: https://organvm.github.io/a-i--skills/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.