DevinにUserScriptを改善させた(2024/12/31)
Devin.aiにUserScriptを改善させてて、更新されたものを手でCosenseに貼るのがめんどくさいなと思い、GitHubにDevinが直接書いて、CosenseがGitHubから読むようにできないかな〜と考えた。Tampermonkeyを使えばできるよということだったのでそれを作ってもらったnishio.icon
from 2024/12/31
DevinにUserScriptを改善させた(2024/12/31)
nishio.icon
https://github.com/nishio/concatPages READMEもいつの間にか更新されてた
https://github.com/nishio/concatPages/pull/1/commits/e9cf4d6ae4cdda01b55629f22e15f90f4e55e1a2 ここか
バグ修正
https://github.com/nishio/concatPages/pull/2
GitHubのファイルをそのままUserScriptにできないんだっけ
Refused to load the script 'https://raw.githubusercontent.com/nishio/concatPages/refs/heads/main/main.js' because it violates the following Content Security Policy directive: "script-src 'self' cdnjs.cloudflare.com maps.googleapis.com 'unsafe-eval' helpfeel-tweaks.helpfeel.com js.stripe.com www.google.com www.gstatic.com". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
できないのか〜
o1 proにどうするといいか案出ししてもらったらTampermonkeyで読めばいいよというのでそうすることにしよう
DevinがGitHubを更新したのを僕がScrapboxに貼る作業はめんどくさいからね
connect.sid持ち出してimport api叩けば自動でscrapbox更新できたはずbsahd.icon
UserScript Page Edit APIを使いたいyosider.icon
TamperMonkey経由でGithubから読み込み、スクリプト配置ページを開くと自動で更新する?bsahd.icon
DevinはAPI叩けないのかなyosider.icon
Cookie取れるならimport apiが使えるbsahd.icon
立ったらついでに他のユーザスクリプトもまとめてモノレポにするか?
https://github.com/nishio/my-cosense-scripts/pull/1
とりあえず作ってくれたのをマージしたけど、ちょっとよくわからないな
READMEにユーザー向けの導入手順と使用方法を追加してくれるそうなのでしばらく放置
fix: use GM_addElement to avoid CSP inline script violation by devin-ai-integrationbot · Pull Request #5 · nishio/my-cosense-scripts
GM_addElementで読むってよ
CSPエラーは出ないが、メニューも出ないな、タイミングの問題かな
CORSはscriptタグで通過できたけど、CSPは無理ではbsahd.icon
問題なくGMから各スクリプトのロードができて、読まれるスクリプトの側のconsole.logがちゃんと出てるのでロード周りに関しては問題ないんだけど、ロードされるタイミングでScrapboxの側がメニューの追加をできる状態になってないみたい
本物のユーザスクリプトの実行タイミングよらだいぶ早く実行されてるね
ユーザスクリプトの側からGMで読んだコードを呼ぶようにすればいいか
/takker/TamperMonkeyでScrapBubbleを使うのコードを参考にしてみてはbsahd.icon
#editorが現れるまで待つのねnishio.icon
今回は関係なさそうだけど、UserScriptはscrapboxの編集画面にアクセスしないと読み込まれない点に注意takker.icon
TamperMonkeyから注入してるなら関係ないか
たぶん早すぎるタイミングで読んでるのでメニューに追加されないnishio.icon
今コード読んでみました(おい)takker.icon
scrapbox.PageMenu.addItemがglobal scopeにあるのがやはり原因だと思います
タイミングが早いというのも同意
#editorを待つ他に、scrapboxが生えるのを待つ方法もあります
#editorに依存したコードはなさそうだから、これでもいい
Tampermonkeyからの呼び出し時点では既にscrapbox.PageMenu.addItemがあってエラーにならない、多分その後で初期化されてしまうのだと思うnishio.icon
Cosense自体もWorkerとか使って非同期に色々してるからonLoadでGMが動くとCosenseの想定外のタイミングに割り込んでしまうのだろう
おっとそうだったんですねtakker.icon
確認不足でした
自分が編集権限があるプロジェクトならUserScriptからGMが用意したentrypointを呼んでやればいいだけだなと思ったが、"TamperMonkeyでScrapBubbleを使う"は他人のプロジェクトでも使えるわけか
まあ上記の議論も含めて考えると#editorを待つのは妥当な気がするな
https://gyazo.com/5f4975687cc9f60984635afe2dbff635
https://github.com/nishio/my-cosense-scripts/pull/7
ばっちり動くようになった
最後にノウハウをドキュメント化してもらうことにしよう
✅https://github.com/nishio/my-cosense-scripts?tab=readme-ov-file#同様のシステムの実装方法
GitHubにおいた読めるコードをGitHub Actionでminifyするところまでやろうかと思ってたけど飽きた
できたったっていってるのでマージしといた、確認はしてない
https://github.com/nishio/my-cosense-scripts/issues/2
minifyはしてるけど、commitはしてないみたい?takker.icon