Building an Automated Multi-Platform Blog Pipeline with GitHub Actions and AI
These articles are AI-generated summaries. Please check the original sources for full details.
자동화된 블로그 발행 파이프라인 — GitHub Actions로 다중 플랫폼 콘텐츠 배포하기
Developer Jidong implemented a cross-platform publishing system using GitHub Actions to sync markdown files to DEV.to, Hashnode, and Blogger. The system utilizes specific logic to filter content, such as restricting Korean posts to DEV.to while distributing English content globally.
Why This Matters
In reality, cross-posting content manually is a high-friction task that leads to fragmented updates and inconsistent formatting across platforms like Blogger, which requires HTML conversion and inline CSS. Automating this via GitHub Actions reduces the operational overhead from hours to minutes while ensuring state consistency through a simple publish-log.txt tracking system.
Key Insights
- Conditional distribution: Korean files (-ko.md) are routed only to DEV.to, while English files target three platforms simultaneously (2026).
- OAuth2 Management: Blogger integration requires automated refresh token handling via GitHub Secrets to maintain access without manual intervention.
- Graceful Failure: The pipeline uses continue-on-error: true and matrix strategies to ensure one platform’s API failure does not halt the entire deployment.
- Content Filtering: Low-quality or temporary content is excluded using regex patterns for build-log tags and draft: true frontmatter status.
- State Tracking: A flat-file publish-log.txt (Filename|Platform|Status|ID) prevents duplicate postings more reliably than checking git history.
Working Examples
OAuth2 refresh token logic for Blogger API integration within GitHub Actions.
response=$(curl -s -X POST "https://oauth2.googleapis.com/token" -H "Content-Type: application/x-www-form-urlencoded" -d "client_id=${{ secrets.BLOGGER_CLIENT_ID }}" -d "client_secret=${{ secrets.BLOGGER_CLIENT_SECRET }}" -d "refresh_token=${{ secrets.BLOGGER_REFRESH_TOKEN }}" -d "grant_type=refresh_token")\naccess_token=$(echo $response | jq -r '.access_token')
GitHub Actions matrix strategy for parallel platform deployment with error tolerance.
strategy:\n matrix:\n platform: [devto, hashnode, blogger]\n fail-fast: false\nsteps:\n - name: Publish to ${{ matrix.platform }}\n continue-on-error: true\n run: |\n ./scripts/publish-${{ matrix.platform }}.sh
Practical Applications
- Use Case: Automating multi-platform tech blogging where different platforms like Blogger require specific formatting like inline CSS and HTML conversion.
- Pitfall: Hard-coding API keys instead of using GitHub Secrets, leading to security vulnerabilities or manual rotation overhead.
- Use Case: Quality control automation where posts with low view counts or specific tags are automatically unpublished after a set duration.
- Pitfall: Sequential execution of API calls, which increases workflow duration and risks timeout failures compared to parallel matrix jobs.
References:
Continue reading
Next article
12 Essential DevOps Lessons for System Stability and Reduced On-Call Fatigue
Related Content
Automating AquaChain: Building a Robust CI/CD Pipeline with GitHub Actions
Learn how AquaChain transitioned from manual SSH deployments to an automated GitHub Actions pipeline that completes in under 5 minutes.
Automating Production: Setting Up a CI/CD Pipeline in 10 Minutes
Learn how to implement a GitHub Actions and Render-based CI/CD pipeline that automates testing and deployment to reduce bugs by 90% in under 10 minutes.
Implementing 32-bit CI Pipelines in 64-bit GitHub Actions Environments
David Cantrell implements a custom 32-bit CI pipeline using GitHub's API to bypass 64-bit-only action limitations for cross-platform Perl testing.