Contrails Fork版では初期設定手順が増えました。このページでは初期設定の手順を一から載せます。
前提条件
GitHubとCloudflareにアカウントを作成してください。英語ですが頑張ってください。
Cloudflareはログイン後、右上の言語で「日本語」を選ぶと日本語化できます。
Cloudflare APIの作成
下記にアクセスします。
https://dash.cloudflare.com/profile/api-tokens
「トークンを作成する」をクリックします
APIトークンテンプレートの中から「Cloudflare Workersを編集する」の右の「テンプレートを使用する」をクリックします
アクセス許可の一番下の「+さらに追加する」をクリックします
追加された行を「アカウント」「D1」「編集」とします
アカウントリソースを「包含」「ご自身のAccount Id ‘s Account」にします。Account’s Idはおそらくはご自身のメールアドレスになっていると思います。
ゾーンリソースを「包含」「アカウントにあるすべてのゾーン」「ご自身のAccount Id ‘s Account」にします。
下の方の「概要に進む」をクリックします
「トークンを作成する」をクリックします
表示されるトークンを、ご自身でメモ帳などにコピーします。後で使います。忘れるとやり直しです。また、誰かにバレたら必ず削除してください。
CloudflareのAccount Idを確認します。下記にアクセスします
Workers & Pagesの概要をクリックし、右端に表示されるアカウントIDの右のボタンを押してコピーします。のちに使いますのでメモ帳にコピーします。
GitHubにアクセスして、右上の「Use this template」の「Create a new repository」をクリックします
https://github.com/usounds/Contrails
Repository Nameにお好きな名前を入力し、「Create Repository」をクリックします
Settingタブをクリックします
Secret and variablesのActionsをクリックし、右側のSecretの「New repository secret」をクリックします
3つのSecretを登録します。
Name | Secret |
BLUESKY_APP_PASSWORD | ご自身のBlueskyのApp Password |
CLOUDFLARE_API_TOKEN | この手順で作ったCloudflareのAPIトークン |
CLOUDFLARE_D1_ID | DUMMY |
3つの登録完了を確認してください。3つ登録されていたら、タブの「Variables」をクリックします
3つのVariablesを登録します。「New repository variables」をクリックします。
Name | Secret |
BLUESKY_HANDLE | ご自身のBlueskyのHandle. dummy.bsky.socialや独自ドメインの方はドメインそのもの |
CLOUDFLARE_ACCOUNT_ID | CloudflareのアカウントID(メールアドレスではなく画面からコピーしてメモ帳にあるランダム文字列) |
CLOUDFLARE_WORKER_NAME | 半角英数の小文字を指定します。内部的に使用するだけで外には出ません |
3つ登録されたことを確認します。
Actionsタブをクリックし、1. Check Requirementsをクリックし、右のRun WorkflowsのRun workflowをクリックします
Check Requirementをクリックして結果を見ます
成功した場合は下記のようになります。赤いバツがついた場合は、未設定または設定値が間違っているので、設定内容を確認してください。
次にActionの「4. Create D1 Schema」を実行します
「Create D1 Schema」をクリックします
Create schema and tablesをクリックします
Create D1 Schemaをクリックし、さらにRunning Wrangler Commandsの左の▶️をクリックして開いて、database_idの値をメモ帳にコピーします。ダブルクオート(””)はコピー不要です。
コピーした値をGitHubに設定します。再度SettingsのSecret and variablesのActionsをクリックし、CLOUDFLARE_D1_IDの右の鉛筆アイコンをクリックします。
コピーした値をValueに貼り付け、「Update secret」をクリックします。ダブルクオートは不要ですよ(自分でハマったのでしつこくリマインド)
再度Actionsに戻り、「2. Deploy to Cloudflare」のWorkflowを実行します
処理を待つと、必ずエラーになります。Deploy to Cloudflareをクリックします。
下記のように、Annotationsの2番目がFailed to upload secretsになっていることを確認します。
右上のRe-run jobsのRe-run failed jobsをクリックします
Re-run jobsをクリックします
しばらく待つと成功します。
引き続き、Actionsに戻り、「3. Publish Feed Generators」のWorkflowを実行します
しばらく待つと成功します。
Blueskyのご自身のページのフィードに、Emotional Support Petsが増えています。これをクリックしてフィードが動作することを確認します。
これであなたのフィードに不要なものが増えてしまったので、削除します。
Actionsの「Delete Feed Generator」のWorkflowを実行します。今までと異なり、recordNameの入力を求められるので、「emotional-suppo」を入力し「Run Workflow」をクリックします。
しばらく待つと成功します。成功しない場合は、後続のトラブルシュートを参照してください。
再度Blueskyのフィードをリロードすると消えているはずです。
準備の手順は以上です。
ご自身向けのフィード作成手順
ルートにあるCONFIG.mdを修正します。例えば「F1jp」という文字列で検索する場合は下記のようにします。
- recordName:任意の半角英数字を15文字以内で入力します。フィードのURLになります
- displayName:フィードの名前になります。24文字です。
- description:フィードの説明文です。改行可能です。
- searchTerms:検索する文字列を入力します。今回は「F1jp」を検索するのでそれをそのまま入力します。
- 除外ワードは-を指定します。
FF14 -ネタバレ
- OR条件は|で繋げます
(Contrails|SkyFeed)
- denyList:検索対象外にするユーザーを、アットマークを含むハンドル(@xxx.bsky.social)かDID(did:plc:1234)のいずれかで指定します
※2024/3/14 除外ワードではなく除外したいユーザーの指定だったので修正しました - safeMode:Cloudflareに課金したくない場合はtrueのままにします
- avatar:フィードの説明のアイコンになります。説明にある通り、「JPGかPNG」以外では失敗します。あらかじめCONFIG.mdと同じルートディレクトリにJPGかPNGの画像をアップロードし、そのファイル名に変更します。
# recordName
> This is the feed's ID which can be letters, numbers, or dashes. Spaces are not allowed. Maximum length is 15 characters.
aaajpwvum4ejo
# displayName
> This is the title of the custom feed. Maximum length is 24 characters.
#F1JP
# description
> This is the description of the feed.
F1jpが含まれる投稿を拾います。
# searchTerms
> There are three types of search terms:
>
> - Keywords: Test these in [https://bsky.app/search](https://bsky.app/search). `AND` is implicit, so `cat dog` on one line will require both `cat` and `dog`. You can use quotes as well `"hot dog"`.
> - Users: links such as `https://bsky.app/profile/why.bsky.team` will pull in the user's posts. To include replies and reposts, you can add the following flags: `https://bsky.app/profile/why.bsky.team +replies +reposts`.
> - Pinned posts: links such as `https://bsky.app/profile/saddymayo.bsky.social/post/3jxju2wwap22e` will pin at the top of the feed. One link per line, please.
- f1jp
# denyList
> Deny list will exclude any results from a given user. You can provide the username or DID.
>
> - did:plc:1234
> - @spamspamspam.bsky.social
# safeMode
> Safe mode limits the total number of API calls coming from Cloudflare.
>
> Set to `false` if you have higher limits via a paid Cloudflare plan.
true
# avatar
> This must link to an image (PNG or JPEG) in the same directory as this CONFIG.md. It doesn't have to be called `avatar.png`, but just be sure this CONFIG.md points to the correct file.
![](formula-1-logo.png)
変更が終わったら、「2. Deploy to Cloudflare」を実行します。正常に終了したら、「3. Publish Feed Generators」を実行します。
今後、recordName、description、avatarを変更した場合は「2. Deploy to Cloudflare」と「3. Publish Feed Generators」を実行します。それ以外の、searchTerms、denyList、safeModeのみを変更した場合は、「2. Deploy to Cloudflare」のみを実行します。
2個目のフィードを作る
2個目以降は再度レポジトリは作らなくて良いです。configsフォルダにCONFIG.mdをコピーして2個目を作ります。configsフォルダに新たに作る場合は、ファイル名は「CONFIG.md」以外でも認識しますが、拡張子は必ず.mdとします。
2個目のフィードが不要になったら
不要になった場合は、下記のブロックを追加します。
# isEnabled
> Whether this feed should be published by the "Publish Feed Generators" step. Set to `true` or `false`.
false
追加した上でActionsの「Delete Feed Generator」を実行してください。あくまでもisEnabledは「今後使用しませんよ」という宣言のみであり、Blueskyのプロフィールのフィードから削除されません。Blueskyのプロフィールから削除する場合は、「Delete Feed Generator」Actionを実行してください。
トラブルシュート
Delete Feed Generatorでエラーになる
Fork版のv2024.02.21でこの問題の恒久対応を仕込みました。レポジトリ作り直すか、下記のソースをご自身のソースに反映してください。
https://github.com/usounds/Contrails/blob/main/feed-generator/deleteFeedGenerator.ts
Check Requirementsでエラーになる
一個だけエラーになる場合は、GitHubの設定上は問題ないことが多く、APIトークンの設定ミスの可能性が高いです。
中身は開くもののの大体エラー内容よーわからんですが、「The CLOUDFLARE_API_TOKEN secret needs to be set.」ではない場合はAPIトークン作り直してください。