Markdown からコードブロックだけ抜き出す
AI回答や議事録の Markdown から、JavaScript / Python / SQL などのコードフェンスを抽出します。
言語別サマリー
使い方と AIO クエリ例
- ```lang 形式の fenced code block を対象にします。言語タグなしブロックは
plaintext扱いです。 - URLクエリ例:
code_fence_extractor.html?input=%23%23%20sample%0A%0A%60%60%60js%0Aconsole.log(1)%0A%60%60%60&action=extract&format=json format=jsonはブロック配列つきJSON、format=rawは抽出したコードテキストのみを返します。
コードフェンス抽出は、ChatGPTやClaudeなどAIの回答やMarkdown文書から、```で囲まれたコードブロック(コードフェンス)だけを抜き出すツールです。AIの回答には説明文とコードが交互に含まれることが多く、実装に必要なコード部分だけをコピーするのに余計な行を手作業で削る手間が発生します。本ツールはMarkdown内のすべてのコードフェンスを検出し、言語タグ(```js や ```python など)ごとに集計したうえで、言語フィルタによる絞り込みや、複数ブロックをまとめたraw/JSON形式での出力に対応しています。
使い方・サンプル・結果例・注意点
使い方
「入力Markdown」欄にAIの回答やMarkdown文書を貼り付け、必要であれば「言語フィルタ」にカンマ区切りで言語名(例: javascript, python)を入力して「抽出」を押すと、「抽出結果」欄に該当するコードだけが表示されます。
サンプル入力
# 実行例 ```js console.log("hello"); ``` ```python print("world") ``` ```sql SELECT * FROM users WHERE id = 1; ```
結果例
言語フィルタを空欄のまま「抽出」を押すと、3つのコードブロック(javascript、python、sql)すべてが対象となり、複数ブロックのため各ブロックの先頭に`----- [番号] 言語名 -----`という区切り行を付けて連結された結果が表示されます。言語フィルタに「python」とだけ入力すると、`print("world")`の1ブロックのみが抽出され、ブロックが1件のときは区切り行なしでコードのみが出力されます。言語別サマリーには javascript:1件、python:1件、sql:1件のように集計結果が表示されます。
注意点
対象となるのは```や~~~で囲まれたfenced code blockのみで、インラインコード(`code`のようなバッククォート1つの記法)は抽出対象外です。言語タグが指定されていないコードブロックは「plaintext」として扱われます。`js`は`javascript`、`py`は`python`、`sh`・`bash`・`zsh`は`shell`のように、よく使われる略称は正式名称にエイリアス変換されたうえでフィルタ照合・集計されます。言語フィルタはカンマまたは空白区切りで複数指定でき、大文字・小文字は区別されません。入力は100,000文字までです。コードフェンスが1つも見つからない場合や、フィルタに一致するブロックがない場合はエラーメッセージが表示されます。処理はブラウザ内で完結し、貼り付けたMarkdownは外部へ送信されません。
こんなときに使えます
- ソフトウェアエンジニアが、ChatGPTの長い回答からPythonとJavaScriptのコードだけを抽出し、エディタにそのまま貼り付けて実行する
- 技術ライターが、AIにレビューしてもらったMarkdown原稿から、複数言語のサンプルコードを言語別に整理してドキュメントへ転記する
- QAエンジニアが、AIが生成したテストコードとSQLセットアップ文が混在する回答から、SQL部分だけを抽出してテストデータ投入用に利用する
- 勉強会の参加者が、AIとのやり取りの議事録(Markdown)から、説明文を除いたコード部分だけをまとめてリポジトリのサンプル集に保存する
よくある質問
言語タグがないコードブロック(``` だけで始まるもの)も抽出されますか?
抽出されます。言語タグが省略されている場合は「plaintext」として扱われ、言語フィルタを空欄にすれば抽出結果や言語別サマリーに含まれます。フィルタで`plaintext`と指定して絞り込むことも可能です。
言語フィルタに「js」と入力した場合、`javascript`タグのブロックも抽出されますか?
はい。`js`、`node`、`nodejs`は`javascript`に、`ts`は`typescript`に、`py`は`python`に、`sh`・`bash`・`zsh`は`shell`にエイリアス変換されたうえで照合されるため、略称・正式名称のどちらで指定しても該当ブロックが抽出されます。
抽出結果が複数ブロックのとき、区切り行はどのような形式ですか?
`----- [1] javascript -----`のように、ブロックの通し番号と言語名を含む区切り行がコードの直前に挿入されます。抽出結果が1ブロックのみの場合は区切り行なしでコードだけが出力されます。
コードブロックの中に```という文字列が含まれている場合は誤認識されませんか?
コードフェンスは行頭の```(または~~~)の連続と、対応する終了行のペアとして検出されるため、通常のコード内容に```という文字列が単独行として含まれていない限り正しく1つのブロックとして認識されます。コード内に同じ記号列を含む場合はご注意ください。