とは夏果とは
🔖️browser🔖️design🔖️event🔖️film🔖️JS🔖️museum🔖️Rust🔖️stroll🔖️virtual🔖️Wasm🔖️Wired🔖️Zola
GitHub ActionsでTweet
2024.12.31 🔖️Wired

ブログなどを書いても自信がないからsnsへの投稿などもしないのだけれどgoogle検索が機能しなくなっている今日において私自身もtwitterなどで検索をしそこで見つかった記事を読むなどもしているので検索機能が実装されている適当なsnsにタイトルとurlを投稿するのも良いのかなと思うようになってきている

とはいえブログを書きgit pushしてgithub acrionsにbuildしてもらっている頃には書いていたことなんて忘れてしまうし覚えていたとして面倒でtweetなんてしないだろうし何よりも毎回自意識と戦っていては精神にも悪いのだからgithub acrionsにはついでにtweetまでを行ってもらおうという算段

具体的なコード
https://github.com/slnq/slnq.github.io/blob/main/.github/workflows/main.yml

Twitter

apiの発行とかで色々と面倒がある
調べても尚も微妙に躓いた点として権限を変更した後にAPI Key and SecretをRegenerateしなくては変更が適応されなかったりするという点
具体的なコードは前述のymlにありテストに用いたコードが下記

import tweepy
client = tweepy.Client(consumer_key="API Key",
consumer_secret="API Key Secret",access_token="Access_Token",
access_token_secret="Access Token Secret")
client.create_tweet(text="Hello World")

BlueSky

アカウント名とパスワードで投稿できるから楽

import atproto
client = atproto.Client(base_url='https://bsky.social')
client.login(login='ACCOUNT NAME UNDER @',password='PASSWORD')
client.send_post('Hello World')

Misskey

当初はノートの作成および削除の権限のみを有効にしていたがうまくいかなかったため全てを有効にしている

from misskey import Misskey
api = Misskey('misskey.io')
api.token = 'TOKEN'
api.notes_create(text='Hello World')%

GitHub Actions

GitHub側にもたせた環境変数は

env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
run: |
python - <<EOF
access_token=os.environ.get("ACCESS_TOKEN")
EOF

のように使えるのだがrun内で定義したものは

run: |
tweet_content="${second_line_content} ${post_url}"
echo "TWEET_CONTENT=$tweet_content" >> $GITHUB_ENV
export TWEET_CONTENT="$tweet_content"
python - <<EOF
tweet_text = f"{os.environ.get('TWEET_CONTENT')}"
EOF

のようにする必要がある気がする
exportの行はいらない気がするのだがいれてからはうまくいったし取り敢えずこのままにしている


apiとかwebサービスとかって調べることばかりに時間がとられて本当に嫌い

一応2024年のうちに自動でtweetしてしまう機能が追加されてしまったから25年は納得できる文章を書けるようにするか納得のラインを下げるかのどちらかが起こる