name: multi-platform-crosspost description: Automatically cross-post blog content to 7+ platforms (LinkedIn, Dev.to, Hashnode, Twitter/X, Reddit, Substack, Pinterest) with tracking, deduplication, and platform-specific formatting. Production-tested pipeline. tags: [cross-posting, content-distribution, seo, blog, linkedin, devto, hashnode, automation, marketing] author: mhmalvi version: 1.2.0 license: CC BY-NC-SA 4.0 metadata: clawdbot: emoji: "๐ก" requires: n8nCredentials: [google-sheets-oauth2, smtp, linkedin-oauth2] os: [linux, darwin, win32]
Multi-Platform Cross-Post Pipeline ๐ก
Automatically distribute your blog content across 7+ platforms with a single command. Built for Hugo blogs but adaptable to any static site generator or CMS.
Problem
You write a great article. Then you spend 45 minutes manually posting it to LinkedIn, Dev.to, Hashnode, Reddit, Substack, and Twitter. Every. Single. Time.
This skill eliminates that entirely.
What It Does
- Takes a blog post slug as input
- Fetches the full article content from your blog admin API
- Formats content for each platform (HTML โ Markdown, character limits, image handling)
- Posts automatically to platforms with API access (Dev.to, Hashnode, LinkedIn)
- Emails formatted content for platforms without API (Twitter, Reddit, Substack)
- Tracks all cross-posts in Google Sheets (deduplication via slug + source matching)
- Handles auth, rate limits, and error recovery
Supported Platforms
| Platform | Method | Automation Level |
|---|---|---|
| API (OAuth) | Fully automated | |
| Dev.to | API (token) | Fully automated |
| Hashnode | API (token) | Fully automated |
| API | Fully automated | |
| Twitter/X | Email digest | Content formatted, manual post |
| Email digest | Content formatted, manual post | |
| Substack | Email digest | Content formatted, manual post |
Architecture
Blog Post Published
โ
โผ
Webhook Trigger (n8n)
โ
โโโ Validate auth (_secret)
โโโ Fetch post content from blog-admin API
โโโ Parse frontmatter + body
โ
โโโโบ IF LinkedIn enabled โ Format + Post via API
โโโโบ IF Dev.to enabled โ Format + Post via API
โโโโบ IF Hashnode enabled โ Format + Post via API
โโโโบ IF Pinterest enabled โ Format + Pin via API
โโโโบ IF Twitter enabled โ Format + Email to owner
โโโโบ IF Reddit enabled โ Format + Email to owner
โโโโบ IF Substack enabled โ Format + Email to owner
โ
โผ
Google Sheets Tracker (appendOrUpdate, no duplicates)
Required n8n Credentials
You must create these credentials in your n8n instance before importing:
| Credential Type | Used For | Placeholder in JSON |
|---|---|---|
| Google Sheets OAuth2 | Cross-post tracking and deduplication | YOUR_GOOGLE_SHEETS_CREDENTIAL_ID |
| SMTP (Gmail or custom) | Email digests for manual platforms | YOUR_SMTP_CREDENTIAL_ID |
| LinkedIn OAuth2 | Auto-posting to LinkedIn | YOUR_LINKEDIN_CREDENTIAL_ID |
| OpenAI (optional) | AI-powered content formatting | YOUR_OPENAI_CREDENTIAL_ID |
Configuration Placeholders
Replace these placeholders in the workflow JSON before deploying:
| Placeholder | Description |
|---|---|
YOUR_BLOG_ADMIN_API_KEY |
API key for your blog admin panel |
YOUR_CROSSPOST_SECRET |
Webhook authentication secret |
YOUR_TRACKER_SHEET_ID |
Google Sheet ID for cross-post tracking |
YOUR_GOOGLE_SHEETS_CREDENTIAL_ID |
n8n Google Sheets credential ID |
YOUR_SMTP_CREDENTIAL_ID |
n8n SMTP credential ID |
YOUR_LINKEDIN_CREDENTIAL_ID |
n8n LinkedIn OAuth credential ID |
YOUR_LINKEDIN_PERSON_ID |
Your LinkedIn profile URN |
YOUR_OPENAI_CREDENTIAL_ID |
n8n OpenAI credential ID |
YOUR_BLOG_DOMAIN |
Your blog's public URL |
YOUR_FROM_EMAIL |
Sender email for digests |
YOUR_NOTIFICATION_EMAIL |
Where to send cross-post summaries |
YOUR_BLOG_ADMIN_HOST:3000 |
Blog admin hostname (Docker or URL) |
Quick Start
1. Prerequisites
- n8n instance (v2.4+)
- Blog with an API endpoint that returns post content
- Google Sheets OAuth2 credentials
- Platform API keys (at least one)
2. Configure Platforms
Set your API credentials in the workflow's Platform Config node:
{
"devto_api_key": "your-dev-to-api-key",
"hashnode_token": "your-hashnode-token",
"hashnode_publication_id": "your-pub-id",
"linkedin_credential_id": "your-linkedin-oauth-id"
}
3. Set Up Tracking Sheet
Create a Google Sheet with columns:
slug(text) โ Post identifiersource(text) โ Blog name (for multi-blog support)date(date) โ Cross-post dateplatforms(text) โ Comma-separated list of platforms posted tostatus(text) โ success/partial/failed
4. Trigger
# Via webhook
curl -X POST https://your-n8n.com/webhook/blog-crosspost \
-H "Content-Type: application/json" \
-d '{"slug": "my-article", "lang": "en", "platforms": "all", "_secret": "your-secret"}'
# Or via blog admin (auto-triggers on first publish)
Platform-Specific Formatting
Dev.to
- Converts HTML to Markdown
- Adds canonical URL pointing to original
- Maps categories to Dev.to tags (max 4)
- Prepends cover image
Hashnode
- Markdown with frontmatter
- Canonical URL backlink
- Tag mapping to Hashnode tags
- Publication-scoped posting
- Plain text with line breaks (no markdown)
- Truncated to 3,000 chars
- Includes link to full article
- Hashtag injection from tags
- Creates pin with featured image
- Title from post title
- Description from meta description
- Link to original article
Deduplication
The tracker uses Google Sheets appendOrUpdate with matching on slug + source. This means:
- First post โ creates new row
- Re-trigger same slug โ updates existing row (no duplicates)
- Different blogs with same slug โ separate rows (source differentiates)
Multi-Blog Support
Run multiple blogs through the same pipeline by setting different source values:
- Blog A:
source: "my-tech-blog" - Blog B:
source: "my-business-blog"
Each gets tracked separately in the same sheet.
Use Cases
- Solo blogger โ Write once, distribute everywhere
- Content agency โ Manage cross-posting for multiple client blogs
- SEO strategy โ Build backlink network across 7 platforms automatically
- Newsletter growth โ Each platform drives subscribers to your newsletter
Requirements
- n8n v2.4+ (self-hosted or cloud)
- At least one platform API key
- Google Sheets API credentials
- Blog admin API or file system access to post content
Tips
- Start with Dev.to + LinkedIn (highest ROI, easiest setup)
- Add platforms incrementally
- Monitor the tracking sheet for failed posts
- Canonical URLs prevent duplicate content penalties
- Schedule cross-posts 1-2 hours after original publish for better engagement