Explains how to automate pasting ChatGPT outputs into WordPress using Pandoc. Supports MS-Word, with code optimized for the Enlighter plugin to streamline tasks.
相模原市で IoT 設計を受託しているファームロジックスです。
最近、ChatGPT との対話をブログで御紹介する機会が増えています。皆様の中にも、ChatGPT の出力を整形してレポートにペーストする機会が増えていらしゃる方が多いのではないでしょうか。
このような処理は、手作業だと非常に面倒ですし間違いもしがちです。コンピュータ技術者の基本スタンスは「面倒なことは機械に任せよう」ですので、これを自動化する方法を考えてみましょう。
今回は、以下の 2つのケースを考えてみたいと思います。
- ChatGPT の出力を整形(フォーマット済み)テキストとして WordPress に貼り付けたい
- 同様に、整形テキストとして MS-Word やリッチテキスト(RTF)メールに貼り付けたい
後者の方が簡単ですので、まずは後者から御紹介しましょう。
Pandoc が必要です
今回の作業では、Pandoc という無償ツールが必要です。今までも何回かブログで御紹介してきましたが、Pandoc は、HTML や Markdown、リッチテキストフォーマット(RTF)などのテキストを相互に変換することのできる強力なツールです。この機会に、是非インストールをお勧めいたします。
以下では、コマンドラインから Pandoc が利用できることを前提にお話したいと思います。
ChatGPT の出力を RTF 整形テキストとしてペーストしたい
以前にはなかった機能かも知れませんが、現在、ChatGPT の出力は Markdown としてコピーすることができるようになっています。
まず、ChatGPT の出力の下にある以下のようなアイコン群から、コピーアイコン(左から 2つめ)をクリックします。
そうしたら、PC の端末エミュレータ(ターミナルあるいは cmd.exe)のコマンドラインで、以下のように Pandoc を実行します。
macOS の場合
pandoc --standalone --to=rtf | pbcopy
そうしたら、先ほどコピーした Markdown テキストを端末エミュレータにペーストします。最後に Ctrl-d をクリックして、ペーストを終了させます。(終了しない場合は、改行してから Ctrl-d してみてください。)
すると、リッチテキストが macOS のバッファ(クリップボード)に入りますので、任意の GUI アプリ(MS-Word、Gmail など)上でペーストすれば、整形済みテキストが貼り付けられます。
Windows の場合
Windows の場合、RTF の内容をクリップボードに送り込むのは難しいようです。以下が参考にすると HTML 経由で可能のようですが、現在 Windows の評価環境がないので試せていません。申し訳ございません。
ChatGPT の出力を WordPress の記事にペーストしたい
WordPress には、Markdown の入力ができるプラグインも提供されていますが、私は利用していません。(試してみたけど、好みに合わなかった。)
シンプルな代替策として私が思いついた方法は(誰でも思いつくけど)、Pandoc で Markdown を HTML に変換後、WordPress のクラシックエディタで HTML 編集モード(テキスト編集モード)に切り替えて HTML をペーストする、という方法です。クラシックエディタの右上には「ビジュアル」「テキスト」というタブがあるので、右のタブ(テキスト)をクリックすれば、HTML 編集モードになります。
先ほどと同様に Pandoc を実行しますが、今度はこうします。
macOS の場合
pandoc --to=html | pbcopy
Windows の場合
こちらは、HTML をプレインテキストとして扱えるので、以前から Windows にある clip.exe
が使えるようです。(これも私の手元では試せておりません。申し訳ございません。)
pandoc --to=html | clip
ChatGPT からコピーした Markdown を Pandoc にペーストしたら、同様に Ctrl-d(Windows ならば Ctrl-Z)で終了し、結果のテキストを WordPress の HTML 編集エディタに貼り付けます。
それだけです。簡単ですね。
macOS の場合の工夫
Pandoc で pbcopy や clip コマンドを使うと、変換結果を OS のバッファ(クリップボード)に取り込めて便利ですが、Pandoc へのペースト入力も簡単にしたいですね。macOS の場合は、pbpaste というコマンドがあるので、次のように実行できます。
pbpaste | pandoc --to=html | pbcopy
こうすることで、ChatGPT の出力を OS のクリップボードにコピーした内容を、そのまま HTML に変換し、再度 OS のクリップボードに取り込むという作業を一度に実行できます。
プログラムコードを Enlighter 形式の HTML にしたい
私は WordPress でプログラムコードを引用するとき、Enlighter というプラグインを使っています。可能ならば、ChatGPT の出力をペーストするとき、プログラムコードを Enlighter 形式で貼り付けたいですね。
その場合は、Pandoc のテンプレート機能を使うことができます。まず、次のような Lua スクリプトを custom_code_block.lua
という名前で作成します。
function CodeBlock(elem) -- Get the language from the class if available, else set it to an empty string local language = "" if #elem.classes > 0 then language = elem.classes[1] -- The first class is typically the language end -- Escape &, <, >, ", and ' characters in the code block content local code_content = elem.text :gsub("&", "&") :gsub("<", "<") :gsub(">", ">") -- Construct the <pre> tag with the necessary attributes local pre_tag = string.format('<pre class="EnlighterJSRAW" data-enlighter-language="%s">', language) -- Return the properly escaped HTML block return pandoc.RawBlock('html', pre_tag .. code_content .. '</pre>') end
そうしたら、次のように実行します。(macOS の場合)
pbpaste | \ pandoc -f markdown \ -t html \ --lua-filter=custom_code_block.lua | \ pbcopy
こうすることで、Markdown で書かれたコードブロック(プログラム)が、Enlighter 形式の HTML として出力できます。便利ですね!
ぜひ、皆様も快適なコピペ生活(?)をお楽しみください。