Crier:跨平台发布您的内容
Source: Dev.to
(请提供需要翻译的正文内容,我才能为您完成简体中文翻译。)
概述
crier 是一个命令行工具,用于将内容跨平台同步发布。
它让你只需编写一次帖子,即可同时发布到 dev.to、Ghost、WordPress、Hashnode、Medium、Bluesky、Mastodon、Threads、Telegram、Discord 等多个平台。
pip install crier
问题
维护博客并在多个平台上触达受众通常涉及繁琐的手动步骤:
- 将内容复制到 dev.to
- 创建带链接的 Bluesky 帖子
- 在 Mastodon 上发送嘟文
- 在 Discord 等平台发布公告
每个平台都有其独特的界面、API 和怪癖。
解决方案:一条命令发布到所有平台
crier publish post.md --to devto --to bluesky --to mastodon --to discord
该命令:
- 将完整文章发布到 dev.to
- 创建包含标题、描述和链接的 Bluesky 帖子
- 在 Mastodon 上发送嘟文,使用从标签中提取的主题标签
- 向你的 Discord 服务器发送嵌入式公告
支持的平台
| 平台 | 类型 | 备注 |
|---|---|---|
| dev.to | 博客 | 完整文章支持 |
| Hashnode | 博客 | 完整文章支持 |
| Medium | 博客 | 仅发布 |
| Ghost | 博客 | 完整文章支持 |
| WordPress | 博客 | 自托管或 .com |
| Buttondown | 通讯 | 邮件订阅者 |
| Bluesky | 社交 | 带链接卡的帖子 |
| Mastodon | 社交 | 带标签的嘟文 |
| Threads | 社交 | 短帖子 |
| 社交 | 专业网络 | |
| Twitter/X | 社交 | 复制粘贴模式 |
| Telegram | 频道 | 机器人帖子 |
| Discord | 频道 | Webhook 嵌入 |
Markdown 输入格式
crier 读取带有可选 YAML 前置内容的标准 Markdown 文件:
---
title: "My Post Title"
description: "A brief description"
tags: [python, cli, automation]
canonical_url: https://myblog.com/my-post
---
- 对于博客平台 – 完整文章将被发布。
- 对于社交平台 – 将创建一个带有返回
canonical_url链接的简短公告。
GitHub Actions 集成
将 crier 与 GitHub Actions 结合,以在每次推送时自动跨平台发布。
初始化 Action
crier init-action
此命令会创建工作流文件并将 API 密钥设置为 GitHub Secrets。
示例工作流 (.github/workflows/crosspost.yml)
name: Cross-Post Content
on:
push:
branches: [main]
paths:
- 'posts/**/*.md'
jobs:
crosspost:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: pip install crier
- name: Cross-post to platforms
env:
CRIER_DEVTO_API_KEY: ${{ secrets.CRIER_DEVTO_API_KEY }}
CRIER_BLUESKY_API_KEY: ${{ secrets.CRIER_BLUESKY_API_KEY }}
run: |
crier backfill ./posts --yes
- name: Save publication state
run: |
git config user.name "github-actions[bot]"
git add .crier/
git diff --staged --quiet || git commit -m "Update publication registry"
git push
发布登记
crier 会维护一个登记文件(.crier/registry.yaml),记录已发布的内容:
posts:
"posts/my-article.md":
title: "My Article"
publications:
devto:
id: "12345"
url: https://dev.to/user/my-article
bluesky:
id: "abc123"
以后添加新平台时,系统会自动为已有内容进行回填。
CLI 参考
| Command | Description |
|---|---|
crier publish FILE [--to PLATFORM]... | 发布到一个或多个平台 |
crier backfill PATH [--profile NAME] | 发布缺失的内容 |
crier audit PATH | 显示需要发布的内容 |
crier list PLATFORM | 列出您在某个平台上的文章 |
crier update PLATFORM ID --file FILE | 更新已有的发布 |
crier platforms | 显示可用的平台 |
crier config set KEY VALUE | 配置 API 密钥 |
crier init-action | 设置 GitHub Actions 工作流 |
设置 API 密钥
crier config set devto.api_key YOUR_DEV_TO_KEY
crier config set bluesky.api_key "handle.bsky.social:app-password"
crier config set mastodon.api_key "mastodon.social:access-token"
定义配置文件
创建 ~/.config/crier/config.yaml:
profiles:
blogs: [devto, hashnode]
social: [bluesky, mastodon]
all: [blogs, social]
使用配置文件:
crier publish post.md --profile all
链接
- PyPI:
- GitHub:
- 文档: