nishio/from_scrapbox
PythonとかDenoとか、色んな人のリポジトリとかに散っているScrapbox関連コードを繋ぎ合わせて僕がやりたいことをやるためのリポジトリnishio.icon
方針
できなさそうなら参考にしたり一部切り出したりして作る
pythonで書くなら
Rustで書き直してpython/TypeScriptどちらからでも使えるようにする……のは面倒か
プロジェクトルートをカレントディレクトリとして、タスクごとに単一のエントリーポイントを起動すれば動くようにしたい
Github Actionsで動かしたりローカルで動かしたりがどちらもやりやすい形にしたいから
目標(2023-11-21)
https://gyazo.com/bf2806af9675c8fb72d8bf392480f6f2
今日の進捗(2023-11-29)
https://gyazo.com/43ba64904109893cbb215c07b4fb9c1b
実装ずみtasks(11/23)
export_json
ScrapboxのExport APIでJSONをエクスポートする
自分がadminである必要がある
json_to_markdown
ScrapboxのJSONからMarkdownを得る
その後、下記markdown_to_static_siteのために少し変更した src 実装ずみtasks(11/29)
crawl_scrapbox
自分がadminではないプロジェクトからJSONを取得する
対象プロジェクトと出力ファイルがハードコードされている
これをコマンドライン引数から取るようにすれば複数プロジェクト対応もできるだろう
出力は一旦はJSONLになる
markdown_to_static_site
実装予定tasks
フィルタの概念が詳細になった
https://gyazo.com/b3dae1821f8a82976cef85f14b0a0d08
今まで考えていた「フィルター」は「自分が書いたところのフィルター」と漠然と思ってたけど本当に必要だった「自分が関与したもののフィルター」だ(A)
自分の個人ページの投稿は全部「自分が関与したもの」
共同編集のプロジェクトでは自分が関与しないまま書かれたページが大量にある
一方でそのフィルターをした後にも別のフィルターBが必要
例えば「コンパイル済みTSのコードが貼り付けられているページ」など、過去の経緯やScrapboxの仕様によって公開状態になってるけど、別に積極的に配信したいわけではないものがある
最近AIによる生成実験で生成してたページとかもこれ?
これ/nishioでやってしまったのでフィルターAを通過した状態にあるけど、本質的には「共同編集プロジェクトにAIが書いている」なので、僕が積極的に関与してないものはフィルターAで除外されるべきだった
フィルターCは英訳前フィルター
これはAI生成ページを翻訳するかどうかという観点でつけるつもりだった
フィルターAで先に弾かれるべきかもしれない
フィルターDはExternal linksなどの情報をQuartzに届ける
話が複雑になってしまった
フィルターの話が複雑になってしまったが、井戸端などの自分の更新をマージするのの優先度は高くなかったので保留でいいや
優先度
自分の個人プロジェクト
自分が管理者の共同プロジェクト
自分が管理者でない他のプロジェクト
そうすると、BとCだけでよくなるし、なんならフィルター対象がそんなに多くないと思うのでどちらも素通しで良い
分量の多いページと、1行の文字列の多いページだけチェック
translate
翻訳
最終的には1日1回、過去1日の更新を翻訳する形になると思う
が、まずは1件で試すところからスタート
エクスポートは重たいので、URLを渡したらAPI経由で取得するのが良い
翻訳結果はまずはローカルファイルに吐く
今の自作の実装
行単位でキャッシュしている
僕の和英もGPT3.5ベースにしようと考えている
とりあえず単純に翻訳する
(markdown_to_static_site)の後で対訳を指定する機能をつける
これは「質の改善」なので「0→1のリリース」が優先されるべきだから
v1にすでにあると思うので読んで理解して自分が扱いやすいようにリファクタする
「リンクを翻訳」と呼称されてるが、それは「リンクは翻訳揺れが起きると繋がらなくなって不利益が大きいから対訳指定が必要」ということ
リンクになってなくても例えば西尾泰和とか川喜田二郎とかは安定した翻訳がされて欲しい
Quartz?Obsidian?のリンクの仕組みはどうなってるのだろう
これを実装する前にLangChainの勉強をした方がいいのではという気がしたが、デッドロックになるからやめた方がいいな
kaiharada
意味不明な英文になってるなどの時にこれがアラートを出す
アラートの手段は?
メール送信?
Slackのincoming Webhook?
Discord?
Slackは使ったことがあるからDiscordでやるかな
「有用な感想」が書かれる必要がある
なにが「有用」かは未定
その他omniやai-qualia-sanなどが活動することもあり得る
これらのAIはScrapboxのプライベートプロジェクトに書き込む
僕はそのプロジェクトを直接見に行ってもいいし、External Linksでたまたま目にしてもよい
https://gyazo.com/c9819e1dd2a93ec63d41943519d9f96c
omniもこれに統合される?blu3mo.icon
将来的にはされるnishio.icon
最初の一歩としてスモールスタートの方がいいからKaiでは一旦切り離した
現状のKaiは「知識はGPTのもの」「読んで感想を書く」
omniが統合されると2パターンありえる
「知識は/nishioのもの」「過去にこんなページがあったよね、と感想に書く」
「知識はつっこめるものすべて(書籍や他人のScrapbox)」「他のところにこんな記述があったよ、と感想に書く」
後者の方が有益だと思う、僕にとっての「新しい関連する視点の発見」の効果として
公開の場でできないなとか、検索結果をScrapboxに書き込まれるとウザいなとか思っていたのだが、その部分をAIが書き込む専用のプライベートプロジェクトにすることで解決
この後者を実現する上で、上の方に出てきた「他のプロジェクトをクロールする」が有用になってくる
ビューに関してのアイデアメモ
作成日時順表示、更新日時順表示が「プロジェクトを跨いで」作れるとあちこちのプロジェクトに書いている場合に自分のアクティビティログの振り返りに有用
各ページからScrapboxへのリンクが欲しいな
その他のアイデアメモ