mcpField
A
ascii-art

ascii-art

github.com/neethanwuクリエイティブ・メディア24201 回インストール34 週間前に更新
リポジトリ

ascii-art について

ascii-artは、画像、動画、テキストをASCII風の作品に変換するスキルです。複数の描画スタイルや色、出力形式を選べ、画像と動画ではインタラクティブ出力も作成できます。

主な機能

  1. 01画像、動画、テキストの変換
  2. 02複数のASCII描画スタイル
  3. 03色と背景の設定
  4. 04画像、テキスト、Web形式への出力
  5. 05インタラクティブ形式とReact TSXへの出力

活用シーン

  1. 01テキストから文字バナーを作成
  2. 02写真を指定スタイルに変換
  3. 03動画作品をGIFとして出力
  4. 04画像からインタラクティブ作品を生成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/neethanwu/ascii-art --skill ascii-art

インストール後、Claude Code で/ascii-artを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
.gitignore
README.md
scripts/
convert.py
setup.sh
save_image.py
scripts/core/
exporters.py
colors.py
dither.py
__init__.py
interactive_exporter.py
pipeline.py
react_exporter.py
text_render.py
styles.py
video_extract.py
scripts/core/interactive/
animations.js
react_template.tsx
renderer.js
tests/
__init__.py
test_colors.py
test_dither.py
test_styles.py
test_exporters.py
test_integration.py
test_pipeline.py

詳細

ASCII アートコンバーター

セットアップ

初回使用前に、環境をセットアップします(冪等です。初回実行後は 1 秒未満で完了します)。

bash {{SKILL_DIR}}/scripts/setup.sh

入力の判定

  1. ファイルパス → 拡張子を確認します:.jpg/.jpeg/.png/.webp/.bmp/.tiff → 画像、.mp4/.webm/.avi/.mov/.mkv → 動画、.gif → アニメーションかどうかを確認(動画または静止画像)
  2. 貼り付けられた/添付された画像 → ほかのことをする前に、すぐに保存します。次を実行します:
    {{SKILL_DIR}}/scripts/.venv/bin/python {{SKILL_DIR}}/scripts/save_image.py --clipboard
    
    これにより、システムのクリップボード(貼り付け後も画像が残っています)から画像を取得し、タイムスタンプ付きの名前で ascii/tmp/ に保存して、保存先パスを標準出力に表示します。その出力パスを --input に指定します。 --clipboard が失敗した場合(クリップボードに画像がない場合)は、代わりに次のように尋ねます:「ファイルパスを指定してください(例:~/Downloads/photo.jpg)。」既知のファイルパスを直接渡すこともできます:save_image.py <path>。 ディスク上の有効なファイルパスを取得するまで、オプションに進まないでください。
  3. プレーンテキスト(ファイルがない、またはファイルが存在しない)→ テキスト(FIGlet バナー)
  4. 入力なし → 変換するものを尋ねます

オプションの確認

ユーザーのメッセージから、あらかじめ指定されたオプションを読み取ります。次に、未指定のオプションを AskUserQuestion で尋ねます。

  • 「defaults」または「just do it」→ 質問を省略し、すべてデフォルト値を使用します
  • 「random」または「surprise me」→ 質問を省略し、--random を使用します
  • すべてのオプションが指定済み → 質問を省略します

questions 配列を使用します(1 回の呼び出しにつき最大 4 問、各質問に 3 つの選択肢)。選択肢をすべて番号付きで question テキストに記載します。上位 3 つを選択可能なオプションとして提示します。ユーザーは自由記述で任意の番号または名前を入力できます。「Other」オプションは設けません。デフォルト値をオプション 1 にします。

画像/動画 — 2 ラウンドで質問します:

  1. ラウンド 1(4 問):スタイル → 色 → エクスポート → 背景
  2. ラウンド 2(エクスポートが interactive または tsx の場合のみ):マウスモード → アニメーション

テキスト:フォント → 色 → エクスポート → 背景(1 ラウンドのみ)。

画像/動画のオプション
オプション選択肢デフォルト
スタイルclassic, braille, block, edge, dot-cross, halftone, particles, retro-art, terminalclassic
色grayscale, original, matrix, amber, custom (hex/named)grayscale
比率original, 16:9, 4:3, 1:1, 3:4, 9:16original
背景dark, light, transparentdark
ディザリングnone, floyd-steinberg, bayer, atkinsonnone
フォントサイズ6-30 px14
エクスポートpng, html, svg, txt, md, clipboard, interactive, tsxauto (image→png, video→gif)
マウスモードpush, attractpush
アニメーションnone, noise-field, intervals, beam-sweep, glitch, crtnone

マウスモードとアニメーションは、interactive または tsx へのエクスポートにのみ適用されます。エクスポートが interactive または tsx の場合にのみ尋ねます。--hover-strength、--area-size、--spread は尋ねず、デフォルト値を使用します。

テキストのオプション
オプション選択肢デフォルト
フォントstandard, doom, banner, slant, big, small, block, lean, mini, script, shadow, speed, ansi_shadow, ansi_regularstandard
色grayscale, original, matrix, amber, customgrayscale
背景dark, light, transparentdark
エクスポートterminal (stdout), txt, md, png, html, svg, clipboardterminal

インタラクティブ/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 とテキストの組み合わせ:エラーが表示されます。インタラクティブ形式では画像/動画の入力が必要です。

フォローアップ

結果を表示した後、別のスタイル/色を試す、設定を調整する、別の形式でエクスポートする、またはランダムモードを試すことを提案してください。再実行に備えて、前回の入力パスを記憶しておいてください。

コメント