Web の表を Markdown・JSON にする(ChatGPT や GitHub、メモに貼る)
このガイドは TablePick を作っている Quillfold が公開しています。
Web の表をコピーして、テキストだけを受け取る入力欄(多くのフォーム、コードエディタ、チャットの入力欄など)に貼ると、列の区切りが失われて列が崩れることがあります。値がつながって 1 行になったり、セルが 1 つずつ別の行に分かれたりします。あるいは、プログラムで使うために表を JSON にしたいこともあるでしょう。
Markdown も JSON もただのテキストなので、どんな入力欄に貼っても形が残ります。このページでは、貼ると崩れることがある理由、それぞれの形式で表せること・表せないこと、変換の方法を順に書きます。
貼ると表が崩れる理由
Web ページの一部をコピーすると、ブラウザはクリップボードに複数の形を入れます。W3C の Clipboard API の草案には、ページの内容が選ばれているときは text/html と text/plain の形式を作るべきだ、と書かれています。
どちらを使うかは、貼り付け先が決めます。
- 表計算ソフトやリッチテキストのエディタは、HTML のほうを使えます。HTML には表の行とセルの区切りが残っています。
- プレーンテキストの入力欄(多くのチャットの入力欄、コードエディタ、Issue のフォームなど)には、テキストのほうが入ります。表の構造はなく、文字だけです。セルの境目がどうなるかは、ブラウザとページ次第です。結合セルやリンク、脚注があると、さらに崩れます。
そのため、貼る前に、構造を文字で持てる形式に変えておくのが確実です。
Markdown の表で表せること
GitHub Flavored Markdown(GFM)の仕様では、表は「見出しの行が 1 つ、見出しとデータを分ける区切りの行、0 行以上のデータの行」でできています。
| 都道府県 | 人口(2025年) |
| --- | --- |
| 東京都 | 14,236,627 |
| 神奈川県 | 9,193,922 |
数字は Wikipedia「都道府県の人口一覧」より(2026年10月16日確認)。
GitHub では、Issue、プルリクエスト、コメント、README で表として表示されます。GitHub Docs によると、見出しの下の区切りは各列 3 つ以上のハイフンが必要で、表の前には空行が要ります。
Web の表を変えるときに効いてくる制約は次のとおりです。
- 見出しは 1 行だけ。 「2024年」の下に「上半期」「下半期」が並ぶような 2 段の見出しは、先に 1 行にまとめる必要があります。
- 結合セルは表せない。 行や列をまたがせる書き方がありません。3 行にまたがる値は、各行に繰り返すか、最初の行にだけ入れるかのどちらかです。
|はエスケープが要る。 セルの中の|はセルの区切りとして読まれるので、\|と書きます(GitHub Docs)。- セルの中で改行できない。 1 行が 1 つの行で、GFM の仕様には「ブロック要素は表の中に入れられない」とあります。GitHub では、セルの中に HTML の
<br>を書けます。2026年10月16日に GitHub の Markdown API で| Line<br>break | a\|b |を変換したところ、1 つ目のセルは改行され、2 つ目はa|bと表示されました。 - 列の数。 GFM では、セルが足りない行は空のセルで埋められ、多い行は余りが捨てられます。結合セルのせいでセルが 1 つ少ない行は、何も言われずに左に詰まります。
JSON にするときに決めること
プログラムで使うなら、1 行を 1 つのオブジェクトにし、列の見出しをキーにした配列がよく使われます。
[
{ "都道府県": "東京都", "人口(2025年)": "14,236,627" },
{ "都道府県": "神奈川県", "人口(2025年)": "9,193,922" }
]
変換の道具が決めていることで、結果を見て確かめたいのは次の点です。
- 同じ名前の見出し。 「人口」という列が 2 つあると、1 つのオブジェクトに同じキーは置けないので、片方が消えます。キーを別の名前にする必要があります。
- 空の見出し。 見出しのない列にも、何かキーが要ります。
- 数字。 「14,236,627」「−0.18%」「1,200円」は、ページ上では文字です。文字列のまま出すかどうかは道具によって違うので、結果を確かめてください。数値にするのは別の作業で、国によって書き方が違うので(ヨーロッパの表では
1.234,5が 1234.5 を表すことがあります)、決まった正解はありません。 - 結合セルと 2 段の見出し。 Markdown と同じです。
変換の方法
GitHub の入力欄に貼る
GitHub の 2022年5月19日の更新情報(Changelog)によると、プルリクエスト・Issue のコメント・Wiki では、貼り付けたスプレッドシートのセルや HTML の表が Markdown の表になります。この変換をせずに貼るには Ctrl+Shift+V(Mac は Cmd+Shift+V)です。コメント欄に貼って「Preview」で確かめてください。GitHub はこのためのオープンソースのライブラリ paste-markdown も公開しています。以下は github.com での動作を試した結果ではなく、このライブラリのソース(2026年10月16日に確認)での処理です。1 行目を見出しにし、2 行目以降は <td> のセルだけを拾うので、<th> のセルは行のどこにあっても抜け、<th> だけの行(2 段目の見出しなど)は空の行になります。セルの文字は textContent で読むので、Wikipedia の非表示の並べ替え用の文字も入ります。ほかに | のエスケープ、改行の空白への置き換えをし、rowspan・colspan は展開しません。単純な表なら、いちばん手早い方法です。
変換サイト
tableconvert.com などには「HTML Table to Markdown」のページがあります。表を右クリックして「検証」を開き、<table> の要素の HTML をコピーして貼ると、Markdown が出てきます。サイトは「Convert HTML Table to Markdown Table Online」のページで、変換はブラウザ内で行い、データは端末から出ないと説明しています(2026年10月16日確認)。社外に出せないデータでは、その説明と通信の有無を確かめてから使ってください。
拡張機能
表を Markdown としてコピーする Chrome 拡張機能はいくつかあり、AI に貼ることを目的にしたものもあります。そのひとつ「Copy as Markdown for AI」は、ストアの説明に、結合セル(rowspan・colspan)を展開して GFM の表にすること、データがブラウザの外に出ないことを書いています(2026年10月16日確認)。結合セルの扱いを説明していない拡張機能もあります。使う前に、結合セルと 2 段の見出しがある表で、値が正しい列に入るか、セルの中の | がエスケープされるかを確かめてください。
プログラム
Python を書けるなら、pandas.read_html でページの表をすべて DataFrame として読めます。pandas 3.0 のドキュメントには「colspan と rowspan を正しく扱うよう試みる」とあります。そのあと DataFrame.to_json(orient="records") で、上の形の JSON になります。
AI に表を貼るとき
社内システムの表を外部のサービスに貼れば、データは手元から出ていきます。先に社内の決まりを確かめてください。
TablePick でできること
TablePick は私たちの拡張機能で、開いているタブの表を読み、選んだ表を Markdown や JSON(ほかに XLSX・CSV・TSV)で書き出します。書き出しのプログラムとそのテストで確かめている、現在の動作は次のとおりです。
- Markdown: GFM の表です。見出しの行が 1 つ、
| --- |の区切りの行、そのあとにデータが続きます。セルの中の|は\|に、\は\\にします。セルの中の改行は、初期設定では空白にします。整形オプションの「セル内の改行を保持」をオンにすると<br>で書きます。 - JSON: 列の見出しをキーにしたオブジェクトの配列で、2 文字の空白で字下げします。同じ見出しには
_2のような番号を付け(名前、名前_2)、空の見出しは位置に応じてcolumn_1、column_2などにします。値はすべて文字列で、ページに表示されているとおりです。 - レポート(任意): 「レポートを含める」をオンにすると、JSON は
{ "report": …, "rows": [ … ] }の形になり、取得元の URL・日時・ページ数・件数チェック・終了理由が入ります。レポートが付くのはファイルに書き出すときだけで、コピーには付きません。Markdown には入りません。 - 変換の前に: 結合セルはまたがる各行に値を入れて展開し(切り替えできます)、複数行の見出しは「2024年 / 上半期」のように 1 行にまとめ、初期設定では非表示の行は外します。「[1]」のような脚注記号も外せます。パネルで列の名前変更・並べ替え・非表示ができます。
- コピー: 形式に Markdown か JSON を選んでいるときは、その文字がクリップボードに入るので、チャットの入力欄やエディタにそのまま貼れます。
- 手元で処理: 表は、ブラウザの中で読み取って変換します。表のデータはどこにも送りません。
ここまではすべて無料プランで使えます。複数のページにまたがる表は 1 つにまとめて書き出せます。無料プランでは 1 回 3 ページまでで、Pro ではそれ以上取り込めます。Pro の「数値を整形」(1,234.5 → 1234.5)も使えますが、JSON では整形後も文字列のままです。
これが要らない場合
- 見出しが 1 行で結合セルもない小さな表を GitHub に載せたい:コメント欄に貼って、プレビューで確かめれば十分です。
- 表がもう Excel や Google スプレッドシートに入っている:そこからセルをコピーします。GitHub はスプレッドシートのセルを貼っても Markdown の表に変えます。
- サイトに CSV や JSON のダウンロード、API がある:それを使ってください。いちばん完全なデータです。
結合セルと 2 段の見出しは「列名が「Column 1」になる・結合セルや見出しが崩れる」で、Wikipedia の表は「Wikipedia の表を Excel・CSV に取り込む」で、表計算ソフトへの取り込みは「Web の表を Excel に取り込むときにつまずく 4 つのこと」で詳しく書いています。
根拠
2026年10月16日に確認。
- Wikipedia「都道府県の人口一覧」(例の数字)
- W3C「Clipboard API and events」(Working Draft、2026年6月24日)§8.1 The copy action
- GitHub Flavored Markdown Spec「Tables (extension)」
- GitHub Docs「情報を表に編成する」
- GitHub Docs「Markdown 用 REST API エンドポイント」(
<br>と\|の表示の確認に使用) - GitHub Changelog「Updates to Markdown pasting on GitHub」(2022年5月19日)
- github/paste-markdown(README と src/paste-markdown-table.ts)
- Chrome ウェブストア「Copy as Markdown for AI」(2026年5月12日更新)
- tableconvert.com「Convert HTML Table to Markdown Table Online」
- pandas ドキュメント
pandas.read_html、DataFrame.to_json(3.0)