自分の投稿データをバックアップしたくて。
前回まで
BlueSky CARファイル 展開方法
- 自分の投稿CARファイルをDLする
- CAR展開ツール
goskyをビルドする - 2でファイルを展開するとJSONファイル入手
- 出力ファイル確認
1. 自分の投稿CARファイルをDLする
- BlueSkyにアクセス&ログインする
- 設定→アカウント→私のデータをエクスポートする
- CARファイルをダウンロード
2. CAR展開ツールをビルドする
git clone https://github.com/bluesky-social/indigo
cd indigo
go build ./cmd/gosky/
cd /tmp/work/indigo
go build ./cmd/gosky
./gosky --help ./gosky car --help
3. 2でファイルを展開するとJSONファイル入手
$ ./gosky car unpack --out-dir /tmp/work /tmp/repo.car SetupSlog time=2025-08-02T21:48:54.447+09:00 level=INFO source=:0 msg="INFO writing output system=gosky topDir=/tmp/work"
4. 出力ファイル確認
- did:plc:自分のDID/
- _commit.json
- app.bsky.actor.profile/
- https://app.bsky.feed.like/
- https://app.bsky.feed.post/
- app.bsky.graph.follow/
4-1. post
投稿内容は...post/ディレクトリ直下にあるjsonファイル内にあった。
jsonファイルは投稿数だけ存在する。とりあえず以下に一つだけ抽出してみた。
did:plc:ffttrlkbljhdeoypveptm4sj/app.bsky.feed.post/3luwd6sosum2q.json
{ "$type": "app.bsky.feed.post", "createdAt": "2025-07-27T05:17:11.088Z", "embed": { "$type": "app.bsky.embed.external", "external": { "description": "", "thumb": { "$type": "blob", "ref": { "$link": "bafkreib43dnkzsbr3vkmpd5gkspuqijhsgvlyqjebwazqo4nxulok6wd6e" }, "mimeType": "image/jpeg", "size": 229402 }, "title": "Bluesky - Wikipedia", "uri": "https://ja.wikipedia.org/wiki/Bluesky" } }, "facets": [ { "features": [ { "$type": "app.bsky.richtext.facet#link", "uri": "https://ja.wikipedia.org/wiki/Bluesky" } ], "index": { "byteEnd": 207, "byteStart": 178 } } ], "langs": [ "ja" ], "text": "BlueSkyのアカウントを作ってみた。\nツイッターの分散型版らしい。安心して使えそう。\n300字まで書けるっぽい。詳しくはウィキで。\nja.wikipedia.org/wiki/Bluesky\nしばらくは使い方を覚えるため投稿してみようかな。" }
私が投稿した内容は一番下のtextキーの値。それ以外はサムネイル画像やメタデータっぽい。
4-2. プロフィール画像
プロフィールなど画像の取得が一筋縄ではいかなそう。
profileの画像ファイルを示した"$link"キーの値ってどう使えばいいの?
短いからBase64というわけでもなさそう。
この値をキーにして別のHTTPSリスクエストをせねばならないのでは?
画像データの取得は構造を理解しないとできなそう。
資料を探そう。
did:plc:ffttrlkbljhdeoypveptm4sj/app.bsky.actor.profile/self.json
{ "$type": "app.bsky.actor.profile", "avatar": { "$type": "blob", "ref": { "$link": "bafkreihhi6plfofevmb3fdm63conhnkxbfybirn4rljhokeyv3htf4qiqm" }, "mimeType": "image/png", "size": 3442 }, "banner": { "$type": "blob", "ref": { "$link": "bafkreico52tvtalxvfk2t2jusiiejchy3nkkiyeqtvj4tl7n2ld35wftki" }, "mimeType": "image/jpeg", "size": 555640 }, "createdAt": "2025-07-27T05:06:09.685Z", "description": "趣味プログラマ。", "displayName": "ytyaru" }