NISHIO Hirokazu[日本語][English]

機械翻訳したScrapboxをQuartzで公開2024-11-24

from/villagepump/機械翻訳したScrapboxをQuartzで公開2024-11-24

何をしようとしているのか言語化する/villagepump/nishio.icon

  • いまScrapbox(Cosense)からの自動英訳がGitHub Actionで動いてる
  • しかし翻訳後のScrapboxへのインポートでこけている
  • QuartzでObsidian Vaultを公開という事例がある
  • ScrapboxToObsidianでScrapboxのJSONをObsidianのMarkdownに変換する事例がある
  • これを組み合わせて「Scrapbox→JSON→英訳JSON→Markdown→Quartzで公開」ってやればいいのでは?と思っている

Quartzはv4になってPreactベースになったらしい/villagepump/nishio.icon

  • まず少し調べるか
  • Welcome to Quartz 4
  • とりあえずやってみる
  • Choose how to initialize the content in /Users/nishio/quartz/content
  • │ Empty Quartz
  • ◆ Choose how Quartz should resolve links in your content. This should match Obsidian's link format. You can change this later in quartz.config.ts.
  • │ ● Treat links as shortest path ((default))
  • │ ○ Treat links as absolute path
  • │ ○ Treat links as relative paths
    • うーん、defaultにしておくか
  • $ npx quartz build --serve
  • 動きはしてる 次の調査
  • ScrapboxToObsidian
  • /villagepump/nishio/from_scrapboxこんなのあった
    • なんかいっぱい色々書いてて未コミットの編集まであるなぁ
    • これどういう状況なの?
  • MarkdownからQuartzで静的生成してGithub Pagesでserveする読んでる
  • 当時でもQuartzはv4に見える
  • 一方で当時はCosenseではなくScrapboxだった Quartz
  • https://github.com/nishio/quartz
  • This branch is 3 commits ahead of, 564 commits behind jackyzha0/quartz:v4
  • コンテンツの更新も同じリポジトリなのでカオス!
  • $ git pull --rebase upstream v4
  • CONFLICT (content): Merge conflict in package-lock.json

  • 564コミットもあるから全体像がよくわからん
  • 自分のリポジトリとupstreamとでそれぞれ別々の更新がされてる??
  • いやー、わけがわからなくなった、無理だ
  • image
    • GitHub Actionを無料のサーバレス実行環境として使うの、僕もOmoikane Embedとかでやっちゃってるし便利なんだけど、Gitはそんな用途のために設計されてないんだよな
    • 上流のOSSは当然更新される
    • 一旦このリポジトリはリネームして、新しくやり直そう
      • あー、だめかも
        • 同一リポジトリから複数forkできないってGitHubの制約
        • archiveしたらできるかな?→できない
        • 消すしかないか
        • /villagepump/gpt.iconGitHub サポートに連絡して、nishio/A2023 の fork 関係を解除してもらう必要があります。
          • いやいや/villagepump/nishio.icon
        • renameしたものをcloneしてからdeleteする
  • やれやれ
  • 改めてfork https://github.com/nishio/quartz
    • 今後ここにcontentを入れないようにしたい
    • これは部品であってコンテンツホルダーではない、としたい
    • % git submodule add git@github.com:nishio/quartz.git quartz
  • % git clone --depth 1 git@github.com:nishio/etude-github-actions.git
    • 最新だけとったら早いかと思いきやめっちゃ遅いな
  • 疲れてきたのでまずお風呂に入る
  • とりあえず自動化の前に1回走らせる
    • etude-github-actions/nishio/data.jsonは日本語版だな〜
    • 現在の英語JSONがなぜかリポジトリにないがetude-github-actions/nishio/data_en_prev.jsonが取りあえず英語JSONか
    • tmp_0.shtasks/json_to_markdown/run.shって書いてある
      • tasks/json_to_markdownの中にGit SubmoduleでScrapboxToObsidianが入っている
      • 前回も細かい実験的作業をこれでやったんだな

tmp_1.sh

cp etude-github-actions/nishio/data_en_prev.json nishio.json
tasks/json_to_markdown/run.sh
- quartzPagesができた
    - これをquartzからみる
    - `$ npx quartz create`

:

Choose how to initialize the content in `/Users/nishio/from_scrapbox/quartz/content`
│  ● Empty Quartz
│  ○ Copy an existing folder
│  ○ Symlink an existing folder
    - ここでsymlinkにすればいいわけだな

:

  2 | title: '"I can\'t shake it" and "I won\'t shake  ...
 ---------------------^
     at Object.yaml [as parse] (../plugins/transformers/frontmatter.ts:55:35)

fixed: https://github.com/nishio/from_scrapbox/commit/5374c3dc25148f6c70a2ace62b4e5396f68146c9

:

Cleaned output directory `public` in 4ms
Found 20937 input files from `content` in 196ms
Parsed 20937 Markdown files in 6m
Filtered out 0 files in 4ms
Emitted 20949 files to `public` in 5m
Done processing 20937 files in 11m
Started a Quartz server listening at http://localhost:8080
hint: exit with ctrl+c

image

  • ガーン
  • あー、これあれか、Scrapbpxのexport時にメタデータをつけてるとlineがobjectになるやつか

from MarkdownからQuartzで静的生成してGithub Pagesでserveする

  • Github Wikiをコメントフォーム的に利用できるか?

  • 記事に対する質問や誤りの指摘をGithub Issuesにするか?

  • なるほど
    • 英訳の質がイマイチなときに「このページをもっと改善して欲しい」という情報を送れるようにしようかと思ったがIssuesでいいか

:

Failed to process `content/Infinite sum compression using the inverse of a formal power series.md`: URI malformed
     at decodeURI (<anonymous>)
     at transformInternalLink (../util/path.ts:89:38)
     at transformLink (../util/path.ts:207:20)
     at ../plugins/transformers/links.ts:104:49

もうちょっと詳しいこと書いてくれてないとなおし方がわからん

あーー、ダメだー

  • base64エンコードされてるURLが翻訳プロセスで壊れてるケースが無数にあるのか

無数にあるかと思ってげんなりしてたが意外と3個に収まった

  • ローカルで見れた

これをえいやとGitHub Pagesで公開すればまあ公開はできる

  • 翻訳の質がイマイチだなぁと思っている
    • でもそれは今でもイマイチだからいいのか
  • 公開プロセスを自動化しようとすると上記のエラーを自動で解消しないといけない
    • 根本的にはリンクはリンクと判定してからタイトル部分だけの翻訳にすべき

Setting up your GitHub repository

  • これはsyncするとGitHubにpushする設計なのでコンテンツをこのリポジトリに置くことになる
    • コードとコンテンツが一括管理
    • 詳しくない人向けに提供するとそうなっちゃうし実際僕もomoikane-embedなどではそうした
    • が、コンテンツの更新でコードの更新が覆い隠されて長期的には良くない
  • Hosting
    • これもコードとコンテンツが一括管理の状態で、更新されたらbuildするGitHub Action

buildするとpublic/が作られる

  • image
    • 前回も同じ話した気がするw
    • Component.ExplorerとComponent.TableOfContentsはもうコメントアウトしてあるのだが
    • Component.Graphかな?
    • Component.Searchかもしれない
    • Component.Graphを止めた結果
      • 54.58GB
    • Component.Searchを止めた結果
      • たいして変わらず
    • bodyの下に巨大なscriptタグがある
      • これをなんとかしないことにはどうしようもない感じ

Quartz 4.0は静的HTMLの末尾に巨大なscriptタグがあり1ページ2.5MBある。20000ページあると50GB程度になり問題である。この問題の解決方法はないか?GitHub Issuesなどがないか検索して

  • /villagepump/gpt.iconQuartz 4.0の生成ファイルサイズに関する問題は、GitHubでIssue #1607として報告されています。この中で、以下の解決策が挙げられています:
    • 主な原因
      • 最近の更新でMermaid.jsのサポートが追加され、JavaScriptがHTMLファイルに直接埋め込まれるようになったことが原因。
    • 解決策
      • Mermaidの無効化: quartz.config.tsで以下のように設定を変更することで、Mermaid.jsを無効化できます。
    • Mermaidを無効化するだけで、ビルドサイズが通常のサイズに戻ったとの報告があり、これは現在利用可能な最も簡単な解決策です。
  • マジかよw/villagepump/nishio.icon/villagepump/takker.icon
  • 330.4 MBになったwww/villagepump/nishio.icon 一旦build結果のpublic以下を別リポジトリにおいてdeploy
  • https://nishio.github.io/quartz_deploy/
  • 一応できた
  • なんか微妙だなぁ…

(C)NISHIO Hirokazu / Converted from Markdown (ja)
Source: [GitHub] / [Scrapbox]