| name | scbe-article-posting |
| description | Publish articles and content across all platforms — GitHub Discussions, Dev.to, X/Twitter, Buffer, YouTube, and more. Use when posting, scheduling, or managing content distribution for SCBE/Aethermoore. |
SCBE Article Posting
Publish governed content across all distribution channels from the terminal.
Quick Post Commands
One-liner commands for each platform:
python scripts/publish/publish_discussions.py --file content/articles/YOUR_ARTICLE.md
python scripts/publish/post_to_x.py --text "Your tweet text here"
python scripts/publish/post_to_x.py --thread content/articles/x_thread_FILE.md
python scripts/publish/post_to_buffer.py --file content/articles/YOUR_ARTICLE.md
python scripts/publish/post_all.py --file content/articles/YOUR_ARTICLE.md
python scripts/publish/article_to_video.py --input content/articles/YOUR_ARTICLE.md --output artifacts/youtube/
python scripts/publish/post_to_youtube.py --file artifacts/youtube/YOUR_VIDEO.mp4 --title "Title" --privacy unlisted
python -m hydra content scan
python -m hydra content stage
python -m hydra content review
python -m hydra content approve
python -m hydra content publish
python -m hydra content stats
Content Pipeline (HYDRA 5-Stage)
Scan -> Stage -> Review (QA gate) -> Approve -> Publish
State persists at artifacts/content_pipeline/pipeline_state.json.
QA gate: scripts/publish/content_qa.py (checks length, citations, formatting, SEO).
SEO Best Practices Checklist
Run through this checklist before publishing every article:
Title and Headlines
Meta and Open Graph
Content Structure
Keywords and Readability
Technical SEO
Platform-Specific Notes
| Platform | Key SEO Factor |
|---|
| GitHub Discussions | Use Discussion category labels; first line is indexed as summary |
| Dev.to | Set canonical_url to your primary URL; use 3-4 tags max |
| X/Twitter | First tweet of thread carries all the weight; include image |
| YouTube | Title keyword in first 3 words; description first 2 lines matter |
| Medium | Subtitle field is the meta description; 5 tags max |
| Substack | Subject line is the SEO title; preview text is meta description |
Article Source Locations
| Location | Content Type |
|---|
content/articles/ | Markdown articles ready for publishing |
content/articles/x_thread_*.md | X/Twitter thread formatted posts |
docs/research/ | Research notes (convert to articles before publishing) |
artifacts/content_pipeline/ | Pipeline state and QA reports |
Key Files
| File | Purpose |
|---|
scripts/publish/post_all.py | Multi-platform publisher |
scripts/publish/publish_discussions.py | GitHub Discussions publisher |
scripts/publish/post_to_x.py | X/Twitter OAuth 2.0 publisher |
scripts/publish/post_to_buffer.py | Buffer scheduled posting |
scripts/publish/content_qa.py | QA gate (38+ article checks) |
scripts/publish/enrich_from_arxiv.py | Auto-add arXiv citations to fix QA failures |
hydra/content_pipeline.py | 5-stage governed conveyor |
artifacts/content_pipeline/pipeline_state.json | Pipeline state |
Guardrails
- All articles pass
content_qa.py before publishing.
- Cross-posted articles must set
canonical_url to avoid duplicate content penalties.
- Never publish API keys, tokens, or secrets in article content.
- Rate limits: X (300 tweets/3hr), GitHub API (5000/hr), Buffer (per plan).
- Keep
pipeline_state.json committed after each publish run for audit trail.