ascii-art について
ascii-artは、画像、動画、テキストをASCII風の作品に変換するスキルです。複数の描画スタイルや色、出力形式を選べ、画像と動画ではインタラクティブ出力も作成できます。
主な機能
- 01画像、動画、テキストの変換
- 02複数のASCII描画スタイル
- 03色と背景の設定
- 04画像、テキスト、Web形式への出力
- 05インタラクティブ形式とReact TSXへの出力
活用シーン
- 01テキストから文字バナーを作成
- 02写真を指定スタイルに変換
- 03動画作品をGIFとして出力
- 04画像からインタラクティブ作品を生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ neethanwu/ ascii-art --skill ascii-artインストール後、Claude Code で/ascii-artを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSE.gitignoreREADME.mdscripts/convert.pysetup.shsave_image.pyscripts/core/exporters.pycolors.pydither.py__init__.pyinteractive_exporter.pypipeline.pyreact_exporter.pytext_render.pystyles.pyvideo_extract.pyscripts/core/interactive/animations.jsreact_template.tsxrenderer.jstests/__init__.pytest_colors.pytest_dither.pytest_styles.pytest_exporters.pytest_integration.pytest_pipeline.py詳細
ASCII アートコンバーター
セットアップ
初回使用前に、環境をセットアップします(冪等です。初回実行後は 1 秒未満で完了します)。
bash {{SKILL_DIR}}/scripts/setup.sh
入力の判定
- ファイルパス → 拡張子を確認します:
.jpg/.jpeg/.png/.webp/.bmp/.tiff→ 画像、.mp4/.webm/.avi/.mov/.mkv→ 動画、.gif→ アニメーションかどうかを確認(動画または静止画像) - 貼り付けられた/添付された画像 → ほかのことをする前に、すぐに保存します。次を実行します:
これにより、システムのクリップボード(貼り付け後も画像が残っています)から画像を取得し、タイムスタンプ付きの名前で{{SKILL_DIR}}/scripts/.venv/bin/python {{SKILL_DIR}}/scripts/save_image.py --clipboardascii/tmp/に保存して、保存先パスを標準出力に表示します。その出力パスを--inputに指定します。--clipboardが失敗した場合(クリップボードに画像がない場合)は、代わりに次のように尋ねます:「ファイルパスを指定してください(例:~/Downloads/photo.jpg)。」既知のファイルパスを直接渡すこともできます:save_image.py <path>。 ディスク上の有効なファイルパスを取得するまで、オプションに進まないでください。 - プレーンテキスト(ファイルがない、またはファイルが存在しない)→ テキスト(FIGlet バナー)
- 入力なし → 変換するものを尋ねます
オプションの確認
ユーザーのメッセージから、あらかじめ指定されたオプションを読み取ります。次に、未指定のオプションを AskUserQuestion で尋ねます。
- 「defaults」または「just do it」→ 質問を省略し、すべてデフォルト値を使用します
- 「random」または「surprise me」→ 質問を省略し、
--randomを使用します - すべてのオプションが指定済み → 質問を省略します
questions 配列を使用します(1 回の呼び出しにつき最大 4 問、各質問に 3 つの選択肢)。選択肢をすべて番号付きで question テキストに記載します。上位 3 つを選択可能なオプションとして提示します。ユーザーは自由記述で任意の番号または名前を入力できます。「Other」オプションは設けません。デフォルト値をオプション 1 にします。
画像/動画 — 2 ラウンドで質問します:
- ラウンド 1(4 問):スタイル → 色 → エクスポート → 背景
- ラウンド 2(エクスポートが
interactiveまたはtsxの場合のみ):マウスモード → アニメーション
テキスト:フォント → 色 → エクスポート → 背景(1 ラウンドのみ)。
画像/動画のオプション
| オプション | 選択肢 | デフォルト |
|---|---|---|
| スタイル | classic, braille, block, edge, dot-cross, halftone, particles, retro-art, terminal | classic |
| 色 | grayscale, original, matrix, amber, custom (hex/named) | grayscale |
| 比率 | original, 16:9, 4:3, 1:1, 3:4, 9:16 | original |
| 背景 | dark, light, transparent | dark |
| ディザリング | none, floyd-steinberg, bayer, atkinson | none |
| フォントサイズ | 6-30 px | 14 |
| エクスポート | png, html, svg, txt, md, clipboard, interactive, tsx | auto (image→png, video→gif) |
| マウスモード | push, attract | push |
| アニメーション | none, noise-field, intervals, beam-sweep, glitch, crt | none |
マウスモードとアニメーションは、interactive または tsx へのエクスポートにのみ適用されます。エクスポートが interactive または tsx の場合にのみ尋ねます。--hover-strength、--area-size、--spread は尋ねず、デフォルト値を使用します。
テキストのオプション
| オプション | 選択肢 | デフォルト |
|---|---|---|
| フォント | standard, doom, banner, slant, big, small, block, lean, mini, script, shadow, speed, ansi_shadow, ansi_regular | standard |
| 色 | grayscale, original, matrix, amber, custom | grayscale |
| 背景 | dark, light, transparent | dark |
| エクスポート | terminal (stdout), txt, md, png, html, svg, clipboard | terminal |
インタラクティブ/tsx 形式へのエクスポートには、画像または動画の入力が必要です。テキストには対応していません。
曖昧さの解消
- スタイルとしての「block」=画像向けの Unicode ブロック要素(█▓▒░)
- フォントとしての「block」=テキスト向けのブロック体 FIGlet フォント
- ブロックスタイルのテキストアートには、
--font ansi_shadowまたは--font blockを使用します - カスタムカラー:16 進数(
#ff6600)または名前(coral、skyblue)。創作的な色の表現は 16 進数に変換します。
変換の実行
{{SKILL_DIR}}/scripts/.venv/bin/python {{SKILL_DIR}}/scripts/convert.py \
--input "<input>" \
--type <text|image|video> \
--style <style> \
--color <color> \
--background <background> \
--export <format> \
[--dither <algorithm>] \
[--ratio <ratio>] \
[--font-size <pixels>] \
[--cols <number>] \
[--font <font_name>] \
[--custom-color "<hex>"] \
[--mouse-mode <push|attract>] \
[--animation <preset>] \
[--invert] [--random] \
[--fps <number>] \
[--filename <custom_name>]
出力
すべてのファイルは、現在の作業ディレクトリにある ascii/ フォルダーに保存されます(自動的に作成されます)。
- テキスト(ターミナル):標準出力に表示し、クリップボードに自動コピーします。コードブロックで表示してください。
- ファイルへのエクスポート(png、html、svg、txt、md、gif):ファイルパスを表示します。画像をインラインで表示するには、Read ツールを使用してください。
- インタラクティブ HTML:ファイルパスを表示します。ブラウザーで表示するには
open <path>を実行するよう提案してください。 - React TSX:ファイルパスを表示します。使用方法として
import { AsciiArt } from './<filename>'を表示してください。 - 画像/動画/インタラクティブ形式のエクスポートは、ターミナルでプレビューしないでください。
エラー処理
- 動画の処理に失敗した場合:ffmpeg または opencv が不足している可能性があります。
pip install opencv-python-headlessを提案してください。 - 画像の処理に失敗した場合:ファイルが存在し、有効な画像形式であることを確認してください。
- インタラクティブ形式/tsx とテキストの組み合わせ:エラーが表示されます。インタラクティブ形式では画像/動画の入力が必要です。
フォローアップ
結果を表示した後、別のスタイル/色を試す、設定を調整する、別の形式でエクスポートする、またはランダムモードを試すことを提案してください。再実行に備えて、前回の入力パスを記憶しておいてください。