{"code":200,"data":{"id":"pokpbpq8pi","slug":"20260902182254","appearance":"norm","language":"ja","rtl":false,"created":"2026-09-02T17:20:36+09:00","updated":"2026-09-02T18:22:51+09:00","title":"WriteFreelyをカスタマイズした","body":"#WriteFreely #Fediverse #ActivityPub #サーバーいじり #ChatGPT #VibeCoding\n\n2年ほど存在を忘れていたこのブログを、ふと思い出したので色々改造なども行ってみました。\n（とはいえ僕はコードの読み書きができるわけではないので、ChatGPTを使ったVibe-Codingです。）\n\n* 独自テーマの整備 — WriteFreely標準UIをベースに、ダーク系の個人ブログらしいレイアウト・配色へカスタマイズ。\n* 記事インデックスの独自実装 — 記事情報をJSON化し、JavaScriptから記事一覧・タグなどを扱える仕組みを追加。\n* タグ機能の追加 — WriteFreelyの記事からタグを扱い、サイドバーなどから記事を辿れるようにした。\n* 記事シェアボタンの追加 — Mastodon・Misskey・Xへの共有と、URLコピー機能を記事下部に実装。\n* ActivityPub Actorアイコンの変更 — WriteFreely標準の「ブログ名先頭文字アイコン」を独自画像へ差し替え。\n* サイドバー「Links」の追加 — 外部サイトやSNSへのリンク集を独自に追加。\nリンク情報のJSON外出し — リンクを blue-note-links.json で管理し、JavaScript本体を編集せず追加・変更できるようにした。\n* リンクバナー対応 — リンクごとにバナー画像を指定でき、未指定ならテキストリンクへフォールバックするよう実装。\n* 自サイト用リンクバナーの設置 — 「リンクフリー・相互リンク歓迎」とblue note.のバナーをサイドバーへ追加。\n* カスタマイズ資産のバックアップ拡張 — JS・JSON・アイコン・バナー・テンプレート・インデックス生成スクリプト等をバックアップ対象へ追加。\n* 記事URIを日時形式へ変更 — WriteFreely本体をGoで改造し、新規記事のURIをタイトル由来ではなく YYYYMMDDHHMMSS に変更。\n* URI改造をblue note.限定に実装 — blue0a6m5c Collectionへの公開時だけ日時slugを適用し、WriteFreely本来の挙動への影響を限定。\n* WriteFreelyをソースから独自ビルド — Go 1.25環境を導入し、v0.17.2をベースに独自改造版バイナリを作成・稼働。\n* ついでに謎のスパムアカウントを調査・除去 — 過去のWriteFreely登録制御バグを突いたBotによるアカウント・投稿を特定し、証拠をバックアップしたうえでDBから削除。\n\nかなり使いやすくなったし、ブログっぽい見た目に出来たと思います。\n","tags":["WriteFreely","Fediverse","ActivityPub","サーバーいじり","ChatGPT","VibeCoding"],"paid":false,"views":238,"likes":0}}