markdown-tweet-scheduler 项目教程
1. 项目的目录结构及介绍
markdown-tweet-scheduler/
├── github/
│ └── workflows/
│ └── go.yml
├── pkg/
├── tweets/
├── .env-SAMPLE
├── .gitignore
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── go.mod
├── go.sum
├── go.yml
└── main.go
github/workflows/go.yml
: GitHub Actions 的工作流配置文件。pkg/
: 存放项目的包文件。tweets/
: 存放要发布的推文文件。.env-SAMPLE
: 环境变量示例文件。.gitignore
: Git 忽略文件配置。CONTRIBUTING.md
: 贡献指南。LICENSE
: 项目许可证。README.md
: 项目说明文档。go.mod
: Go 模块文件。go.sum
: Go 模块校验文件。go.yml
: 项目配置文件。main.go
: 项目启动文件。
2. 项目的启动文件介绍
main.go
是项目的启动文件,负责初始化配置和启动推文发布流程。以下是 main.go
的简要介绍:
package main
import (
"fmt"
"os"
"time"
"github.com/reidjs/markdown-tweet-scheduler/pkg"
)
func main() {
// 初始化配置
config := pkg.LoadConfig()
// 读取推文文件
tweets := pkg.ReadTweets(config.FilePath)
// 发布推文
for _, tweet := range tweets {
pkg.PostTweet(tweet, config)
time.Sleep(1 * time.Minute) // 防止推文发布过快
}
fmt.Println("推文发布完成")
}
3. 项目的配置文件介绍
github/workflows/go.yml
是项目的配置文件,用于配置 GitHub Actions 的工作流。以下是配置文件的简要介绍:
name: Schedule Tweets
on:
schedule:
- cron: '2 7 * * *' # 每天早上 7:02 AM PT (2:02 UTC)
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16
- name: Build
run: go build -v ./...
- name: Run tweet scheduler
env:
TWITTER_API_KEY: ${{ secrets.TWITTER_API_KEY }}
TWITTER_API_SECRET_KEY: ${{ secrets.TWITTER_API_SECRET_KEY }}
TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
run: go run main.go
name
: 工作流的名称。on
: 触发工作流的事件,这里配置为定时任务。jobs
: 工作流中的任务。steps
: 任务中的步骤。env
: 环境变量配置,用于存储 Twitter API 的密钥。
通过以上配置,项目可以定时从指定的 Markdown 文件中读取推文并发布到 Twitter。