Distribute your content to multiple platforms from a single topic. Each platform skill independently adapts content for its target audience — developers on Dev.to, newsletter readers on Ghost, and more.
⚠️ MANDATORY: When the user has just installed this skill, run the onboarding flow IMMEDIATELY. Translate to the user's language.
The onboarding flow sets up TWO things in ONE conversation: platform roster (where to publish) and author DNA (how to write). These are NOT separate steps — they happen together during the first dispatch.
✅ Content Dispatch Hub installed!
Quick setup — which platforms do you use?
- Dev.to 2. Hashnode 3. WordPress 4. Tumblr 5. Ghost
- Beehiiv 7. Kit 8. X/Twitter 9. WeChat (公众号) 10. Qiita
(list numbers, e.g. "1, 5, 8")
After user selects:
~/.youmind/dispatch-roster.yaml → active_platformsvalidateDo NOT ask the user to fill a profile form. Instead, bootstrap the author profile from one of two paths:
Path A — User has articles in YouMind KB (preferred):
📝 I analyzed your recent articles. Here's what I see:
- Voice: Conversational-technical, first-person practitioner
- Audience: Mid-level developers (you assume REST/Git knowledge)
- Code density: High (avg 4 code blocks per article)
- Depth: Practitioner-level (how-to with real gotchas, not beginner intros)
- Languages: English primary, Chinese secondary
- Signature moves: You always lead with the problem, include a gotchas section, and end with working code
Sound right? I'll use this as your baseline across all platforms. You can adjust anytime.
~/.youmind/author-profile.yamlPath B — New user, no articles (cold start): Embed 3 targeted questions INTO the first dispatch request, not as a separate quiz:
You said: "帮我写一篇关于 AI agents 的文章发到 Dev.to 和 X"
Great! Since this is your first dispatch, 3 quick questions so I write in YOUR voice:
1. 这篇文章的风格? (a) 代码先行,先看效果再讲原理 (b) 故事驱动,用经历带出技术点 (c) 数据说话,benchmark 和对比为主 (d) 手把手教学,假设读者是入门者
2. 你的读者是谁? (a) 做产品的开发者 (b) 正在学习的学生/新人 (c) 做技术决策的 TL/架构师 (d) 泛科技读者
3. 你的内容里绝对不要出现什么? (自由回答 — 例如"不要营销话术"、"不要 AI 味"、"不要太长")
After user answers:
author-profile.yaml fieldsApproachFirst article qualityUser friction❌ No profilingGeneric, platform-defaultZero (but bad output)❌ Separate 5-question formBetter, but profile ≠ real usageHigh (feels like homework)✅ Path A: KB bootstrapExcellent — based on real writingNear-zero (confirm/adjust)✅ Path B: 3 inline questionsGood — targeted baselineLow (embedded in first dispatch)
"Add Ghost to my platforms" → update
~/.youmind/dispatch-roster.yaml"Remove X/Twitter" → update roster "I want to write more beginner content" → update~/.youmind/author-profile.yaml"Analyze my recent articles again" → re-run Path A bootstrap
User specifies one platform → dispatch directly invokes the corresponding platform skill.
text
"Write about AI agents for Dev.to" → invoke youmind-devto-article
"Write a weekly issue for Beehiiv" → invoke youmind-beehiiv-article
"Write a Tumblr post about indie hacking" → invoke youmind-tumblr-article
"Draft a public creator post for Kit" → invoke youmind-kit-article
"Post a thread about startup culture on X" → invoke youmind-x-article
"发布一篇技术文章到 WordPress" → invoke youmind-wordpress-article
User specifies multiple platforms → dispatch invokes each platform skill sequentially with the same topic.
text
"Write about AI agents and publish to Dev.to, Beehiiv, and Kit"
"把这个话题发布到 Dev.to 和 Hashnode"
User wants maximum reach → dispatch to all installed platform skills.
text
"Publish everywhere about the future of AI coding"
"全平台发布:AI 编程的未来"
Each youmind-{platform}-article skill is independently installed, independently published, and fully self-contained. They work without this dispatch hub. Dispatch is an optional orchestration layer — not a dependency, not a framework that platform skills must fit into.
youmind-*-article skills at runtime. It optionally reads a small dispatch-capabilities.yaml at each skill's root to learn what operations that skill supports (generate, adapt, condense, translate, etc.) and its hard limits. If a platform skill does not ship this file, dispatch falls back to sensible defaults and still invokes it normally.resolved_author block). Platform skills that understand these fields use them as richer context; skills that don't simply ignore the extras and work as usual.~/.youmind/author-profile.yaml — the canonical shared location defined in shared/YOUMIND_HOME.md. Uninstalling dispatch does not remove the profile; platform skills continue to work standalone with full DNA support.result_links, title, conformance_report) so dispatch can aggregate multi-platform runs. Each platform skill publishes this same result shape regardless of whether dispatch is present — it's a clean output API, not a contract with dispatch.dispatch-capabilities.yaml is opt-in metadata that lets dispatch route more intelligently. Removing it reverts to defaults; it never breaks the platform skill.The optional integration protocol is documented at shared/DISPATCH_CONTRACT.md (v1.0). Platform skills that want richer dispatch integration may follow it; those that don't, don't.
PlatformSkillAudienceBest ForDev.toyoumind-devto-articleDevelopers, OSS contributorsTechnical tutorials, tool reviews, dev experienceHashnodeyoumind-hashnode-articleDev bloggers, tech writersIn-depth technical blogs, series, developer storiesWordPressyoumind-wordpress-articleGeneral audiencesLong-form articles, SEO-optimized contentTumblryoumind-tumblr-articleBlog followers, creator audiencesVoice-driven essays, build logs, creator notesGhostyoumind-ghost-articlePublishers, newsletter writersEditorial content, premium publicationsBeehiivyoumind-beehiiv-articleNewsletter operators, creator teamsGrowth updates, newsletter essays, operator notesKityoumind-kit-articleCreators, audience buildersBroadcasts, creator updates, public newsletter feed postsX/Twitteryoumind-x-articleGeneral, viral audiencesHot takes, threads, breaking news commentaryWeChatyoumind-wechat-articleChinese audiencesStyled long-form articles, official account contentQiitayoumind-qiita-articleJapanese developersTechnical articles, tutorials, knowledge sharing
Auth: All platforms use YouMind OpenAPI. You need only a
youmind.api_key— platform credentials are stored encrypted in YouMind Connector Settings. No local platform keys.Note: Each platform skill must be installed separately. Dispatch checks your roster (
dispatch-roster.yaml) on each run.
Use these as lightweight routing clues before you open the full platform skill:
youmind-devto-article: code-first Markdown posts, TL;DR, practical developer tutorial voiceyoumind-hashnode-article: deeper developer-blog storytelling, series-friendly, canonical-aware cross-postingyoumind-wordpress-article: HTML CMS publishing, taxonomy/excerpt aware, company-blog friendlyyoumind-tumblr-article: voice-driven creator posting, one title plus one clean rich-text bodyyoumind-ghost-article: editorial publication tone, excerpt/tag aware, newsletter-style HTMLyoumind-beehiiv-article: newsletter-first writing, subject/preview/web-email surfaces matteryoumind-kit-article: creator broadcast format, inbox/feed readability, compact CTA structureyoumind-x-article: concise hooks, thread splitting, sparse hashtags, native social adaptationyoumind-wechat-article: WeChat-native rich formatting, draft-box publishing, built-in direct-send for ready articlesyoumind-qiita-article: Japanese developer Markdown, environment/setup context, note-box friendly~/.youmind/dispatch-roster.yaml for the user's active platform listactive_platforms from roster2a — Load author profile (if exists):
Read ~/.youmind/author-profile.yaml (canonical shared location — see shared/YOUMIND_HOME.md). This file captures the user's cross-platform writing DNA — voice, audience, content preferences, and per-platform overrides. See references/author-profile-spec.md for format. Fallback: if the ~/.youmind/ path is missing but skills/youmind-article-dispatch/author-profile.yaml exists (legacy), offer to migrate.
If no profile exists → skip this step; dispatch works without it (just less personalized). After the first successful dispatch, offer to help the user build one.
2b — Generate content brief (see references/content-brief-format.md):
yaml
topic: "The core topic sentence"
angle: "The specific angle or atomic insight"
keywords: ["keyword1", "keyword2", "keyword3"]
language: "en" # or zh, ja, etc.
source_material: [] # from YouMind knowledge mining (if available)
resolved_author: {} # per-platform resolved profile (computed in Step 3)
constraints: {} # any user-specified constraints
YouMind knowledge mining: If the user has a YouMind API key configured in any platform skill's config, run mine-topics ONCE and include the results in the brief. This avoids redundant YouMind calls across platform skills.
2c — Resolve author profile per platform:
For EACH target platform, merge the author profile with that platform's DNA using the rules in references/content-adaptation-matrix.md. This produces a resolved per-platform profile — NOT the raw author file. Each platform skill receives only the resolved, relevant fields for its platform. This prevents raw-profile leakage and irrelevant context bleed.
If a depth mismatch is detected (e.g., author targets "expert" but platform audience is "general"), the merge triggers a mandatory outline adaptation step — not just a warning. See matrix Priority 5.
For each target platform, invoke the platform skill with the content brief as context.
Sequential mode (default): Run each platform skill one at a time. The agent reads each skill's SKILL.md and follows its pipeline, passing the content brief as the initial topic/context.
Parallel mode (if subagents available): Spawn one subagent per platform. Each subagent independently runs its platform skill's full pipeline. Use this when the agent platform supports parallel subagents.
MANDATORY: Pass the content brief to each platform skill. When invoking a platform skill, include:
Gather results from all platform dispatches:
FieldDescriptionplatformPlatform namestatuspublished / draft / failed / skippedurlURL of published content (if available)result_linksBest clickable links for post page / dashboard / stats entrytitleFinal title usederrorError message (if failed)
Present a summary table to the user:
text
## Dispatch Results
| Platform | Status | Title | URL |
|----------|--------|-------|-----|
| Dev.to | ✅ Published | "AI Agents: A Practical Guide" | https://dev.to/... |
| Ghost | ✅ Published | "Why AI Agents Matter for..." | https://newsletter.example.com/... |
| X/Twitter | ✅ Thread posted | "🧵 AI Agents are changing..." | https://x.com/... |
After the table, add a compact Result links section for each platform so the user can click straight into the post page, dashboard, or stats entry point. If a platform has no direct analytics URL, include the best platform entry URL instead.
RuleDescriptionIsolate failuresOne platform failing MUST NOT stop other platforms. Report partial results.Progress updatesAfter each platform completes, show a brief status update to the user.Missing skillsIf a requested platform skill is not installed, skip it with a clear message.Config missingIf a platform skill's config is not set up, skip it and suggest setup instructions.Fallback to draftWhen in doubt, create as draft rather than publishing directly.
FilePurposereferences/platform-registry.mdDetailed platform capabilities, audience profiles, and constraintsreferences/dispatch-protocol.mdStep-by-step dispatch workflow with examplesreferences/content-brief-format.mdStandardized content brief format specification (v2: includes resolved author profile)references/author-profile-spec.mdAuthor profile format, cold-start guide, evolution strategyreferences/content-adaptation-matrix.mdHow author DNA × platform DNA merge (priority rules, merge algorithm)references/profile-learning.mdHow author DNA accumulates from usage (5 learning sources, diff analysis, cadence)shared/YOUMIND_HOME.mdUser-home directory convention ( ~/.youmind/ — shared across ALL YouMind skills)shared/DISPATCH_CONTRACT.mdOptional interop protocol between this hub and platform skills (v1.0)skills/youmind-{platform}-article/dispatch-capabilities.yamlPer-platform capability manifest (dispatch reads dynamically)author-profile.example.yamlExample author profile — copy to ~/.youmind/author-profile.yaml and customize