iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Tools for video and audio editing in Python — slicing, fades, audio replace/mix, Ken Burns, thumbnails, subtitles, speech-to-text + filler removal, TTS dubbing, and chapter detection.
pip install 'mixing[media]' # audio + video editing (moviepy, opencv, scipy, pydub)
pip install mixing # base: only the pure modules (srt, chapters, errors, util, egress, transcript, TTS)
The base install is light on purpose: it carries no media backend (and so no bundled ffmpeg binary). mixing.audio and mixing.video need the media extra; importing them without it raises an ImportError that says so.
mixing is built to be driven by AI coding agents. The fastest, most reliable
way to use it is through the bundled skills and agents in
.claude/ — task-oriented playbooks that encode the right
functions, the calling conventions, and the gotchas, so an agent gets it right
the first time.
Skills (.claude/skills/) — how to use mixing for a task:
| Skill | Use it for |
|---|---|
mixing | Start here — router, architecture, the output protocol, extras |
mixing-audio | slice, fade, crop, concat, overlay, normalize, align, segment audio |
mixing-video | slice, crop, loop, speed, replace/normalize audio, Ken Burns, thumbnails, subtitles |
mixing-transcript | transcribe, remove fillers, SRT/prose, chapters |
mixing-dubbing | TTS re-voicing & SRT translation |
Agents (.claude/agents/):
mixing-editor — performs an editing task
end-to-end ("edit this media …").mixing-dev — works on the mixing codebase.Using Claude Code? These are discovered automatically from .claude/. The
architectural contract they share lives in .claude/CLAUDE.md.
import mixing # cheap: no moviepy/opencv loaded yet
assert mixing.has_ffmpeg() # most ops need ffmpeg on PATH
# --- audio ---
from mixing.audio import Audio
Audio("song.mp3")[10:30].fade_in(2).fade_out(3).save(output="clip.mp3")
# --- video ---
from mixing.video import replace_audio, ken_burns_video
replace_audio("clip.mp4", "music.mp3", mix_ratio=0.7, output="mixed.mp4")
ken_burns_video("cover.jpg", duration=8, output="cover.mp4")
# --- transcript: remove "uh"/"um" (ElevenLabs Scribe + ffmpeg) ---
from mixing.transcript import remove_fillers
result = remove_fillers("talk.mov", "out/") # uses $ELEVENLABS_API_KEY
print(result.cleaned_media)
The output protocol. Every result-producing function takes one output
argument whose role is constant and type is open:
crop_video("in.mp4", 5, 15, output="out.mp4") # file → writes it, returns Path
crop_video("in.mp4", 5, 15, output="clips/") # dir → auto-named file inside
crop_video("in.mp4", 5, 15) # None → saves beside the input
fade_in("in.mp3", output=lambda audio: audio) # callable → receives the result
Object producers (audio editing) return the in-memory object when output=None,
so you can chain and save when ready. Functions that emit several artifacts
qualify the destinations (remove_fillers(media, output_dir=…, output_media=…)).
Lazy & tiered. import mixing (and import mixing.chapters /
mixing.srt) pull no heavy backends; moviepy/opencv/pydub load only when you
touch a name that needs them. Import the facade (mixing.Video) or the
subpackage (from mixing.video import Video).
Sliceable media. Audio and Video are lazy, sliceable, context-managed
views:
from mixing.video import Video
with Video("movie.mp4") as v:
v[10:30].save(output="cut.mp4") # seconds; v[100] returns a single frame
Logging, not printing. mixing never writes progress messages to stdout —
every module logs through logging.getLogger(__name__), and the package root
carries a NullHandler, so mixing is silent by default. This keeps library
calls usable from a stdout-parsing consumer. To see mixing's own progress
messages (e.g. while working interactively, or when an operation like
mixing.video.genai.generate_video fails and you want the full diagnostic),
opt in with:
import logging
logging.basicConfig(level=logging.INFO) # or level=logging.ERROR for errors only
brew install ffmpeg;
Debian/Ubuntu: sudo apt install ffmpeg; Windows: download from
ffmpeg.org and add bin to PATH.mixing.transcript / mixing.dubbing
(ELEVENLABS_API_KEY or ELEVEN_API_KEY, or pass api_key=). Responses are cached on disk, so
re-runs are free and offline.mixing.video.genai, Vertex AI Veo).pip install mixing[media] # moviepy / opencv / scipy / pydub: mixing.audio + mixing.video
pip install mixing[audio] # an alias: media + soundfile (kept for existing installs)
pip install mixing[widget] # interactive Jupyter audio widget
pip install mixing[gen] # Google Vertex AI Veo generation
pip install mixing[llm] # aix — chapter titling + SRT translation
pip install mixing[clipboard] # get file paths from the clipboard
pip install mixing[beats] # librosa — beat/downbeat/onset analysis
pip install mixing[ml] # torch + transformers — find_segments(strategy="audioset"): songs vs jingles vs talk
| Subpackage | Highlights |
|---|---|
mixing.audio | Audio, fade_in/out, crop_audio, concatenate_audio, overlay_audio, loop_audio, duck_audio, find_audio_offset, find_segments/extract_segments (incl. strategy="audioset", extra ml), text_before_segments, find_talk_edges (host talk at a song's start/end), beat_grid/BeatGrid (extra beats), loudness (BS.1770 LUFS), level_turns (per-speaker loudness matching), process_turns, voice_profile (per-speaker f0/loudness/timbre), shift_pitch (formant-preserving with rubberband) |
mixing.video | Video, crop_video, loop_video, change_speed, replace_audio, normalize_audio, overlay_ambient_bed, ken_burns_video/ken_burns_film, concatenate_videos (+ transitions: crossfade_transition, fade_through_black, …), make_thumbnail, write_subtitles_in_video, SOCIAL_SIZES |
mixing.video.genai | generate_video (Vertex AI Veo) |
mixing.transcript | transcribe, remove_fillers, srt_for_media, words_to_srt/words_to_prose |
mixing.chapters | detect_chapters, Chapter |
mixing.dubbing | text_to_speech, list_voices, translate_srt, dub_video_from_srt |
mixing.srt | Cue, parse_srt, dump_srt, seconds_to_srt_time |
See the skills for the full, example-driven API of each.
MIT