ChatGPTの回答をWordPressに整形テキストとして貼り付ける方法

Explains how to automate pasting ChatGPT outputs into WordPress using Pandoc. Supports MS-Word, with code optimized for the Enlighter plugin to streamline tasks.

On the left side of the image, a robot named 'ChatGPT' is speaking, while another robot named 'Pandoc' is taking notes in a notebook. Next to them, a single Japanese businessman, dressed in a suit, is sitting with his legs crossed, holding a cup of coffee and showing a relaxed demeanor. The overall style is flat and minimalist, using soft, muted color tones. The background is simple and calm, emphasizing the technological theme and the relaxed atmosphere of the scene.

相模原市で 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("&", "&amp;")
    :gsub("<", "&lt;")
    :gsub(">", "&gt;")

  -- 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 として出力できます。便利ですね!

ぜひ、皆様も快適なコピペ生活(?)をお楽しみください。

お問い合わせはお気軽に!

お問い合わせを頂いた後、継続して営業活動をしたり、ニュースレター等をお送りしたりすることはございません。
御返答は 24時間以内(営業時間中)とさせて頂いております。もし返答が届かない場合、何らかの事情でメールが不達となっている可能性がございます。大変お手数ですが、別のメールアドレス等で督促頂けますと幸いです。

コメントを残す