☑️ X2Scb: 自分のツイート・RTをScrapboxに自動的に転載する仕組みを作る
public.icon
2025/5/24
templateで使えるようにした
https://gyazo.com/754e811cd2de53ad715da3afe89969f3
templateで使った瞬間に、https://github.com/tkgshn/X2Scb/actions/workflows/template-setup.yml が発火する
個別のrepoに合わせてurlなどが変更できる
次は、envの設定だな〜
github action側がrepoのenvを参照するので、それを追加しないといけない
一旦0xcommuneのgithubでtemplateとして使ってみる
repoの名前は同じにする: X2Scb
tampermonkey側の自動スクリプトはいけそう
現在のTampermonkeyのコードで、直書きされているページ( https://inoue2002.github.io/X2Scb/public/2025-05-23.json ) に対して取得することはできた
☑️ Tampermonkeyのenvを設定する
あー、でもこのトリガー自体も、結局はrepoを指定するのかtkgshn.icon
ってことは、github templateを使って自分の環境に持ってくる→env設定→
https://gyazo.com/f8ede3884da4b9bd1dc554b296721a42
@inoue2002.icon
https://github.com/inoue2002/X2Scb/commit/11a355f2e7e71cb2ee0f440a00ec855786fae11a
これ、GitHub Actionが上書きしてるwtkgshn.icon
https://gyazo.com/dad0ccbd162798615e6194636d695def
☑️ inoue2002.icon's pagesに、自分のツイートをscrapbox表記で持つことができた
https://inoue2002.github.io/X2Scb/public/2025-05-23のツイートまとめ-import.html
https://zenn.dev/s7/articles/42aef0bd2dae80
https://tech.iimon.co.jp/entry/2023/08/07/000000
https://github.com/x-delete?tab=repositories
https://x.com/Rank334/status/1801197833296433615
/yuki-2021/ScrapboxのCSP制限による外部API接続エラーはTampermonkeyのGM xmlhttpRequestで超えらえる
/forum-jp/Content Security Policyをカスタマイズしたい
inoue2002.icon
# 🚨 **現在の問題とその解決策について**
## 📋 **問題の概要**
### **なぜ動かないのか:CSP(Content Security Policy)制限**
現在のUserScriptは github.io からデータを取得しようとしていますが、ScrapboxのCSPによってブロックされています。
**エラー内容:**
`
Refused to connect to 'https://inoue2002.github.io/X2Scb/public/2025-05-23.txt'
because it violates the following Content Security Policy directive: "connect-src ..."
`
### **CSPとは?**
- Webページのセキュリティ機能
- 外部リソースへのアクセスを制限
- XSS攻撃などを防ぐため
- **サーバー側(Scrapbox)が設定するため、ユーザー側では変更不可能**
## ✅ **Scrapboxが許可しているドメイン**
CSPエラーメッセージから、Scrapboxが許可している接続先:
`
connect-src 'self'
i.gyazo.com
t.gyazo.com
wss://scrapbox.io
api.openai.com
*.openai.azure.com
maps.googleapis.com
bedrock.ap-northeast-1.amazonaws.com
bedrock-runtime.ap-northeast-1.amazonaws.com
bedrock-agent.ap-northeast-1.amazonaws.com
bedrock-agent-runtime.ap-northeast-1.amazonaws.com
https://upload.gyazo.com
https://storage.googleapis.com    ← 🎯 これが重要!
https://sentry.io
www.google.com
`
**👆 https://storage.googleapis.com が許可されています!**
## 🔧 **解決策:Google Cloud Storage利用**
### **現状の流れ**
`
GitHub Actions → GitHub Pages → ❌ CSPブロック
`
### **推奨する新しい流れ**
`
GitHub Actions → Google Cloud Storage → ✅ 正常動作
`
### **実装方法**
1. **Google Cloud Storageバケットを作成**
2. **GitHub Actionsを修正**
- 既存の daily.yml はそのまま維持
- 新しく deploy-to-gcs.yml を追加(すでに作成済み)
3. **GitHub Secretsに追加**
`
GCP_SA_KEY: Google Cloud Serviceアカウントの認証キー
GCS_BUCKET_NAME: x2scb-data (デフォルト)
`
### **UserScriptの変更点**
現在のUserScriptは既に対応済みです:
- Google Cloud Storageを **最優先** で使用
- GitHub Pagesは **フォールバック** として残存
- 複数の代替手段を自動で試行
## 📊 **メリット**
1. **✅ CSP制限を回避** - Scrapboxが公式に許可
2. **✅ 確実な動作** - エラーが発生しない
3. **✅ 高速アクセス** - Google Cloud Storageは高性能
4. **✅ 既存コードの活用** - GitHub Actionsはそのまま使用可能
## 🚀 **次のステップ**
1. Google Cloud Storageのセットアップ
2. GitHub Secretsの設定
3. deploy-to-gcs.yml の有効化
これで **根本的に** CSP問題が解決され、安定してスクリプトが動作するようになります!
2025/5/23
これはなんのためのツール?
自分のツイートを毎日の日記ページ(例: 2025/5/23)に反映させるためのツール
1. TwitterのAPIを叩いて、自分のツイートを取得する
2. それらをRTと、ツイートで分けて、毎日自分のツイートを簡易的なWebページに転載する(Github Actionで実行中)
https://tkgshn.github.io/X2Scb/public/2024-05-01のツイートまとめ-import.html
本当はこのページ内にあるはず
実際には、Twitter APIの取得制限に引っかかっているので出来てない
https://uithub.com/tkgshn/X2Scb/tree/main/public
元々公開情報なのでこれを公開することには問題ないはず
3. tempermonekyで、自分の日付ページ(これは別のuser script)そのwebページの情報を取得してdaily pageに自分のツイート反映する機能が一応ある
tkgshn.iconのtwitter APIが制限に引っかかったので、誰か自分でAPIをbearerに設定してdebugしてくれることを頼みますtkgshn.icon*4
2025/5/23
TwitterのAPIリクエストの制限が厳しくて全然回って ない
https://uithub.com/tkgshn/X2Scb/tree/main/public
見ての通り全部失敗している
https://github.com/tkgshn/X2Scb
from 2025/5/18
自分のツイート・RTをScrapboxに自動的に転載する仕組みを作る
Twitter APIを使うと実現できそう
$ curl --request GET \--url 'https://api.twitter.com/2/tweets/search/recent?max_results=10&query=from%3A0xtkgshn' \--header 'Authorization: Bearer {}'
これで以下のフローが生成できる
code:mermaid
graph TD
AGitHub Actions at 07:55 JST -->|Twitter API v2 + OpenAI API| BJSON生成
B -->|public/raw.json| CGitHub Pages
DScrapbox 日誌ページを開く -.->|Tampermonkey UserScript| C
C -->|fetch & format| Eページに追記