LLM に、このブログの Markdown で答えてもらう #
LLM に図を頼んで SVG が返ってきても、このブログではコードのまま見えることがある。中身が間違っているとは限らない。コードフェンスの言語が空だと、画像として描く経路に入らない。
このブログの tinymarkdown は小さな Markdown の処理系なので、「Markdown で答えて」だけでは、使える書き方が伝わらない。そこで、/preview にそのまま渡せる出力形式を伝えるプロンプトと、slops を書くエージェント向けの skill を用意した。
SVG は svg と書いたフェンスに入れる #
開始行は ```svg。両端の空白は入れず、バッククォートを三つ、その直後に小文字の svg を書く。次の行から <svg> の本体を置き、最後はバッククォート三つだけの行で閉じる。
図を埋め込みたいときは、この言語指定が必要になる。言語なしや xml、html、大文字の SVG では画像にならない。
次の図は、実際に svg フェンスで埋め込んでいる。
一方、次は意図的に言語を指定していない。SVG ではあるが、ブログでは図にならず、ソースを表示するコードブロックになる。
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 60">
<circle cx="50" cy="30" r="20" fill="currentColor"/>
</svg>この違いは、Go のビューとMoonBit のビューが、フェンスの言語名を svg と比較しているために生じる。SVG の内容を見て自動で画像だと判断しているわけではない。/preview でも同じ指定が要る。TypeScript 版のビューは現時点ではこの描画に追従していないので、全実装が同じだとは扱わない。
図の見栄えより、扱いやすさ #
今回は、四角、矢印、普通のテキストで図を作った。文字の大きさと配置は指定したが、フォントデータや外部フォントは使っていない。
PR #87の図には、生成された SVG に WOFF のデータと @font-face が入っている例がある。この書き方をブログの図の標準にする必要はない。図の意味が分かればよく、フォントまで持ち込んで揃えることは今回の目的に含めない。
SVG の直書きを使えるからといって、複雑な描画基盤を用意する必要もない。viewBox を付け、小さい画面でもラベルが読める程度に要素を減らす。インラインの線や文字は currentColor にすると、ページの明暗にも合わせやすい。
なお、SVG フェンスは中身をそのまま HTML に入れる。プレビューの記事にもあるように、サニタイズ済みの画像形式ではない。ここで使う図は、スクリプトやイベント属性、外部リソースを含まない単純なものにする。
preview 用の回答形式を、先に伝える #
01-preview-prompt.mdに、このブログで使える記法と出力形式を伝えるプロンプトを置いた。自分が使っている創作用プロンプトに、ファイルの原文を追加して併用する。創作の内容や方針は元のプロンプトで指定し、こちらは出力形式の指定として使う。回答された Markdown を /preview に貼るか、ファイルとして読み込ませる。
伝えるのは、単に「SVG を使って」だけではない。
- 回答全体は一つの Markdown 文書にする。前置きの挨拶や、文書全体を包むコードフェンスは付けない。
- 図を入れるときは、必ず小文字の
svgを言語として指定する。図が要らない場合まで、無理に追加しない。 - 見出し、箇条書き、表、コード、リンクといった、このブログで扱える記法を使う。
- 画像記法、強調、番号付きリスト、Mermaid などを、普段の Markdown のつもりで使わない。
- 図は読み取れる簡単なものにし、フォント埋め込みで飾らない。
プレビューで見て、使えない書き方があれば、出力を簡単にするか、処理系に機能を足したいかを考えればよい。この記事では、処理系の対応範囲を広げる変更はしていない。
複数ファイルでも、一つの記事になる #
もう一つ伝えておきたいのは、一つの記事を一枚のファイルにまとめなくてもよいことだ。この記事自身が、次の四ファイルからなるバンドルになっている。
slops/2026-10-27-writing-slops.md/
README.md
01-preview-prompt.md
02-bundle-prompt.md
03-svg-pitfalls.mdREADME.md を記事の顔として、その後に残りのファイルが名前順のセクションとして並ぶ。ここでは本文と、コピーして使う二つのプロンプト、あとから足した落とし穴のメモを分けた。ファイルを物理的に連結して保存するのではなく、ブログがページを組み立てるときに合わせて表示する。
README.md の front matter が記事全体のタイトルや説明を決める。ほかの Markdown は本文の補足、.svg ファイルなら画像、それ以外のテキストならコードとして表示され、各ファイルは個別にも取得できる。下位ディレクトリや PNG/JPEG のようなバイナリーファイルは、このバンドルでは扱えない。
02-bundle-prompt.mdは、その形でファイルを作れるエージェントに渡すための依頼文。本文とは別に補足や異なる説明を残したいときに使う。
preview で見た目を確認する #
/preview に Markdown を貼るか、ファイルを読み込んで、文章や図の見た目を確認できる。バンドル全体の並びは、ローカルのブログで確認する。
エージェント向けの詳しい手順は、write-slops の skillにまとめた。
その skill に沿って既存の記事の図を描き直したときに出てきた落とし穴は、03-svg-pitfalls.mdに残した。