セルフホスト型SNS投稿マルチ投稿ポスト（X、Bluesky、Threads、Mastdon、Misskey）

セルフホスト型のSNS投稿マルチ機能アプリが欲しかったので、
AIと相談しながら作成しました。

ということで出来上がったアプリはこちらになります。

<iframe width="560" height="315" src="https://www.youtube.com/embed/YELQIJ0GTEY?si=OEAYDtLfgJvGss0o" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

（X、Bluesky、Threads、Mastdon、Misskey）に対応しています。
他にもSNS対応してくれ、と思う方はぜひコードを見ながら、追加していただけると幸いです（人任せ

## テキストのみ投稿する場合（軽量版）

こちらをご活用ください。

- **複数SNSへの同時投稿**: 5つのプラットフォーム（Bluesky、X/Twitter、Threads、Misskey、Mastodon）対応
- **文字数制限チェック**: 各SNSの文字数制限に合わせたリアルタイムチェック
- 一括/個別投稿モード: 全プラットフォームに同じ内容を投稿するか、プラットフォームごとに異なる内容を投稿するかを選択可能
- **プラットフォーム選択UI**: チェックボックスでSNSを個別に選択可能
- **Docker対応**: コンテナ化されており、環境に依存せず簡単に起動可能
- **DarkMode対応**: 使いやすいUIに設計しています。

https://github.com/naomina121/sns-multi-post

## 画像とか、予約投稿機能も欲しい人向け（若干、動作が重いです。）

上記に加え、
- **画像投稿**: 最大4つまでのメディアファイルをアップロードして投稿可能(一部のSNSでは制限されるため投稿ができないため注意が必要です。)
- **予約投稿機能**: 指定した日時に自動投稿するスケジュール機能

https://github.com/naomina121/sns_poster_app

## APIキー／アクセストークン取得方法

各プラットフォームにてプログラムからのアクセスに必要な認証情報（APIキー、アクセストークン、App Passwordなど）の取得方法について説明します。

### X (旧Twitter) APIキー取得方法

XのAPIを利用するには、X Developer Platformへの登録および開発者アカウントの申請が必要です。

1. **X Developer Platformへのアクセス**:
Webブラウザで下記にアクセスしてください。

https://developer.twitter.com

2. **開発者アカウントの申請**:
サイトの案内に従い、開発者アカウントの申請を行います。
利用目的（個人利用、ビジネス利用、研究目的など）や、開発するアプリケーションの詳細（どのような機能を持つか、APIをどのように使用するか）について、具体的に記述する必要があります。主に英語での記述なので、DEEPLなどの翻訳ツールを使って記述するとよいでしょう。
2. **申請の承認**:
X側での審査が行われ、承認されると開発者アカウントが有効になります。審査には時間がかかる場合が、あります。
プロジェクトおよびAppの作成:
開発者ポータルにログイン後、新しいプロジェクトを作成します。
作成したプロジェクト内で、APIを利用するためのAppを作成します。App名や設定を行います。
3. **APIキーとトークンの取得**:
Appの作成が完了すると、以下の情報が発行されます。

**API Key (Consumer Key)**
**API Secret (Consumer Secret)**
**Bearer Token**

OAuth 1.0aでの認証を行う場合は、さらにAccess TokenおよびAccess Token Secretを生成する必要があります。Appの設定画面から生成してください。
これらのキーとトークンは非常に重要です。外部に漏洩しないよう厳重に管理してください。


### Bluesky (AT Protocol) App Password取得方法

Blueskyでは、APIキーの代わりにApp Passwordを発行して利用することが一般的です。

1. **Blueskyへのログイン**:
Webブラウザまたは公式クライアントから、ご自身のBlueskyアカウントにログインしてください。
設定画面への移動:
ログイン後、アカウントの設定画面に移動します。


2.**App Passwordsの選択**:
設定メニューの中から「App Passwords」（アプリパスワード）またはそれに類する項目を選択してください。


3.**新しいApp Passwordの生成**:
「Generate New App Password」（新しいアプリパスワードを生成）ボタンなどをクリックします。
どのアプリケーションで利用するか分かりやすいように、パスワードに名前（ラベル）を付けることを推奨します。
App Passwordの取得:
生成されたApp Passwordと、ご自身のBluesky Identifier（did:plc:...から始まるDID、または@yourhandle.bsky.socialのようなハンドル名）を記録してください。
App Passwordは一度しか表示されないため、必ず控えてください。

### Mastodon アクセストークン取得方法

Mastodonでは、利用しているインスタンスごとにアクセストークンを発行します。

1. **利用しているMastodonインスタンスへのログイン**:
APIを利用したいMastodonインスタンスのWebサイトに、ご自身のアカウントでログインしてください。


2. **設定画面への移動**:

ログイン後、設定画面に移動します。

3. **「開発」または「Development」の選択**:

設定メニューの中に「開発」または「Development」という項目がありますので、それを選択してください。
「アプリケーション」または「Applications」の選択:
「開発」メニューの中に「アプリケーション」または「Applications」という項目がありますので、それを選択してください。

4. **新しいアプリケーションの登録**:
「New Application」（新しいアプリケーション）ボタンなどをクリックし、APIを利用するアプリケーションを登録します。

アプリケーション名、リダイレクトURI（必要な場合）、そしてAPIで許可する権限（スコープ、例: read, write, followなど）を設定します。必要な最小限の権限を選択することを推奨します。


5. **アクセストークンの取得**:
アプリケーションの登録が完了すると、クライアントID、クライアントシークレット、そしてアクセストークンが発行されます。

このアクセストークンがAPIアクセスに使用するキーとなります。クライアントシークレットなども含め、これらの情報は外部に漏洩しないよう厳重に管理してください。

## Misskey アクセストークン取得方法

Misskeyでも、利用しているインスタンスごとにアクセストークンを発行します。

1. **利用しているMisskeyインスタンスへのログイン**:
APIを利用したいMisskeyインスタンスのWebサイトに、ご自身のアカウントでログインしてください。

2. **設定画面への移動**:
ログイン後、設定画面に移動します。

3. **「API」の選択**:
設定メニューの中に「API」という項目がありますので、それを選択してください。

4. **新しいアクセストークンの生成**:
「アクセストークンを発行」ボタンなどをクリックし、新しいアクセストークンを生成します。
Mastodonと同様に、APIで許可する権限（スコープ）を細かく設定できますので、必要な権限を選択してください。

5. **アクセストークンの取得**:
生成されたアクセストークンを記録してください。
このアクセストークンがAPIアクセスに使用するキーとなります。外部に漏洩しないよう厳重に管理してください。

## Threadsアクセストークン取得方法

1.**アプリ作成ページにて、「アプリ作成」をクリックします**

https://business.facebook.com/business/loginpage/?next=https%3A%2F%2Fdevelopers.facebook.com%2Fapps#


2.**「ビジネスポートフォリオをリンクしない。」を選択し、「次へ」をクリックします。**

3.**次に、ユースケースを選択します。ここでは「Threads APIにアクセス」を選択して次へをクリックします。**

4.**アプリ名とアプリの連絡先メールアドレスを設定します。「次へ」をクリックします。**

5.**アプリを作成をクリックします。**

6.**アプリ作成一覧から、先ほど作成したアプリを選択します。**

https://developers.facebook.com/apps/

7.**トップの「Threads APIにアクセス」をクリックします。**

8.**サイドバーの「Settings（設定）」をクリックします。**

9.**「Threadsテスターを追加または削除」→「メンバーを追加」をクリックします。**

10.**「Threadsテスター」をクリックし、Threadsユーザーを登録をします。**

この時連携させたいThreadsのユーザーを選択してください。

ステータスが承認待ちになれば完了です。

11.**Threadsアプリを操作します。設定ボタンをタップし、アカウントから「ウェブサイトのアクセス許可」をタップします。**

先ほど作成したアプリの名前の同意するをタップします。**

12.**次にブラウザのダッシュボードにもどり、ユースケースをクリックします。**

13.**カスタマイズをクリックします。**

14.**画面下部の先ほど追加したThreadsユーザーの「アクセストークンの生成」をクリックします。**

15.**セキュリティの注意書きを読み、チェックボックスにチェックを入れてください。
アクセストークンがコピーできます。**

## cloudinary

https://cloudinary.com/

新規アカウントを作成します。
ダッシュボード画面でpythonを選びます。

下のほうに、VIEWAPIKEYが載っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304752/d4403e60-8eec-4b5f-9f05-58bc10aa3e60.png)