Notionページの1翻訳手段としてCLIのNotion Translatorを試してみた

Notionページ上のテキストに対して正常機能する拡張は余り多くない感覚です。Notion上の翻訳についても同じことが言える状況ですが、DeepLに通して翻訳結果を自動追加するCLIがあったので紹介します。
2022.08.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Notion上でChrome拡張を使っていると次第に気がつくかもしれませんが、テキスト編集系拡張での正常動作は期待し難いかもしれません。所謂フォーム内で編集する仕組みではないのが大きな要因でしょう。既にリリースされているNotion用ツールを見る限りでは、APIを使ってテキストを取得、編集するスタイルとなっています。

これの影響が結構大きめに出ていそうなのは翻訳系です。最近だとDeepL翻訳での部分テキスト翻訳が便利ですが、これもNotion上では正常に動作してくれません。

翻訳系の自動処理は諦めざるえないとの結論に至りそうですが、Notionページ上でワンボタン翻訳とはいかないものの、DeepL翻訳の処理を通した結果を新規ページとして追加するCLIがありました。

DeepL APIを使いますが、お試し程度であればいつでも無料です。実際にやってみた結果を書いてみました。

DeepL APIの登録

本人確認のためクレジットカード登録が必要な点だけ注意しましょう。既に登録済みであれば次のステップへ飛ばします。

認証キーを取得にてDeepL上での作業は完了です。

Notion APIトークンの発行

連携を追加します。気をつけるべき箇所はCLIの求める権限が読み取り挿入の2点であること。よって以下の組み合わせで指定します。

環境設定

CLIをインストールします。

npm install -g notion-translator

夫々取得した認証キーとトークンを環境変数に指定します。

NOTION_API_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
DEEPL_API_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXX

翻訳実行する

翻訳対象ページに先程追加した連携を共有します。

以下のコマンドで行います。

 % notion-translator \
  --from ja \
  --to en-us \
  --url https://www.notion.so/XXXXXXXXXXXXXXXXXXXXXXXXX

Wait a minute! Now translating the following Notion page:
https://www.notion.so/XXXXXXXXXXXXXXXXXXXXXXXXX

(this may take some time) ....... Done!

Disclaimer:
Some parts might not be perfect.
If the generated page is missing something, please adjust the details on your own.

Here is the translated Notion page:
https://www.notion.so/en-us-XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

今回翻訳用テキストとして、暁月秘話「或る友人たちの記録」を使ってみました。結構な分量ですが、それが問題なく通せるのか試す意味もあります。

結果、翻訳元ページの小ページとして翻訳結果が追加されました。ただしタイトルだけは翻訳されません。

注意すべき点としては、DB内のページを翻訳対象にしようとするとタイトルが取得出来ずにエラーとなります。

% notion-translator \
  --from ja \
  --to en-us \
  --url https://www.notion.so/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Wait a minute! Now translating the following Notion page:
https://www.notion.so/XXXXXXXXXXXXXXXXXXXXXXXXXXXX

(this may take some time) ..../opt/homebrew/lib/node_modules/notion-translator/index.js:340
  const originalTitle = originalPage.properties.title.title[0];
                                                      ^

TypeError: Cannot read properties of undefined (reading 'title')
    at createNewPageForTranslation (/opt/homebrew/lib/node_modules/notion-translator/index.js:340:55)
    at /opt/homebrew/lib/node_modules/notion-translator/index.js:386:25
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Node.js v18.7.0

一度独立したページとして移動し、翻訳を掛けた後に元の位置へ戻す作業が必要です。

あとがき

最近はNotion系ツールも色々と出てきているものの、Web公開されているものを組み合わせることが前提だったりと制約があることも確かです。今回のCLIはGitHub上にてあくまでDeepL API利用手続きを第三者介さずのスクリプト化となっていたため紹介しました。

翻訳するたびにCLIを通す必要があるところだけ手間かもしれませんが、一度通せばあとは箇所修正で対応という手もあります。翻訳する際の一選択肢にはなるはずです。