播放前需先安装 mpv,Windows 安装包已内置 mpv 而便携 ZIP 不含;从源码构建时进度跟踪依赖 SQLite 和 CGO,没有 C 编译器仍可运行但不记录进度;部分流下载依赖 yt-dlp,首次需要时 GoAnime 会自动下载。

GoAnime
alvarorichardMIT活跃维护在终端里搜索、在线播放和下载动漫、电影与剧集,支持英语和巴西葡萄牙语,适合喜欢命令行追番的用户。
Search, stream and download anime, movies and TV shows from the terminal, in English and Brazilian Portuguese.
brew install mpv
curl -Lo goanime https://github.com/alvarorichard/GoAnime/releases/latest/download/goanime-darwin-universal
chmod +x goanime
sudo mv goanime /usr/local/bin/README 未说明具体硬件要求;播放依赖 mpv,实时 Anime4K 超分对 GPU 有要求(README 提到从弱 GPU 的 Performance 模式到 SD 源的 Ultra 模式)。
终端里搜索、播放和下载动漫影视,支持英语和巴西葡萄牙语
在终端里搜索、在线播放和下载动漫、电影与剧集,支持英语和巴西葡萄牙语,适合喜欢命令行追番的用户。
核心能力
- 并行搜索所有已启用源,失败时自动回退到其他源
- 支持英语和葡萄牙语的字幕版和配音版动漫,以及葡萄牙语电影和电视剧
- 用 mpv 播放并可选画质,支持下载单集、区间或整季
- 下载文件按 Plex 兼容命名保存,如 Anime - S01E01.mp4
- 记录播放进度和已看集数,支持从上次位置继续播放
容易踩的坑
- v2.0.0GoAnime v2.0.0最新正式版2026-10-28 · 2026-10-28 06:28 UTC
GoAnime Release Notes - Version 2.0.0
Release date: 2026-10-28
Highlights
- 157 commits since 1.8.7 (2026-09-14), by 6 contributors: 613 files changed, +75,280 / −31,255 lines. 331 of those files are tests: the unit, cascade and mutation tests added around each source are what let this many providers move at once.
- StartFlix replaces SuperFlix, and GoAnime ships no browser anymore. SuperFlix and its Playwright/Cloudflare-bypass stack are gone (
playwright-goleftgo.mod). Movies and TV now come from StartFlix, TopCine and Pobreflix over plain HTTP, with an id-keyed vidsrc/2Embed fallback for titles whose panel players are dead. - Four new sources: TopCine, Pobreflix, AnimeDrive and AnimesDigital, and HiAnime replaces the dead anidb.app. AnimeFire is read through its JSON API. Goyabu is opt-in while Cloudflare gates it.
- Updates are verified:
--updatechecks every download against the release's SHA-256 manifest, and the manifest itself is signed with minisign (the public key is embedded in the binary), so a compromised release cannot swap a binary and its checksum together. A build with no key refuses every update. - Windows is a first-class platform: standalone launches reopen in Windows Terminal (installed or unpacked from a copy embedded in the exe when missing), the installer is per-user and needs no administrator, the exe has a real icon, and Japanese glosses render without boxes.
- Pobreflix survives its own redesign: on 2026-10-27 every page started pointing at a Turnstile-gated player. GoAnime no longer hands that challenge page to mpv; it takes the fallbacks and says why the Portuguese dub cannot play.
- New terminal identity: the TUI, downloads and upscales draw the goanime.online look; the details panel fills from what each source reports.
- The module is now
github.com/alvarorichard/Goanime/v2(see Breaking Changes).
Breaking Changes
- The Go module path is now
github.com/alvarorichard/Goanime/v2. Go requires the/v2suffix for a v2 module, so av2.0.0tag without it would breakgo installand leave@lateston 1.8.7. Library users must update imports fromgithub.com/alvarorichard/Goanime/pkg/goanimetogithub.com/alvarorichard/Goanime/v2/pkg/goanime, and source installs becomego install github.com/alvarorichard/Goanime/v2/cmd/goanime@latest. The v1 module stays available at the old path for existing consumers. - SuperFlix was removed.
--source superflix,--sf-window,--sf-offscreenand theGOANIME_SF_*variables no longer exist. Use--source startflix,topcineorpobreflix, or--source movietvfor all movie/TV sources. - anidb.app was replaced by HiAnime.
--source anidbis still accepted and means HiAnime;GOANIME_ANIDB_LANGis replaced byGOANIME_HIANIME_AUDIO. - Goyabu is off by default. Its Cloudflare gate cannot be passed without a browser;
GOANIME_ENABLED_SOURCES=goyabuturns it on where Cloudflare does not challenge. --updaterefuses a release it cannot verify: a release withoutchecksums-sha256.txtand its.minisigsignature is not installed.
Features
Sources
- StartFlix (
startflix.biz) is the movie/TV source, replacing SuperFlix. Its panel plays Byse/Filemoon hosts over plain HTTP; downloads are named after the official English title, found keylessly; the best quality on offer is always picked; dead movie panels are tracked and filtered from later searches. - Abyss playback through a local stream proxy, with chunked fetching, a shared part cache with per-reader read-ahead, stale-fetch cancellation, and recovery of truncated file tails (a movie no longer stalls at 99%).
- TopCine (
topcine3.site) is a movie/TV source next to StartFlix, played through the panel by TMDB/IMDb id. - Pobreflix (
pobreflixtv.gay): search asks the site's/apicatalog first (the real name and slug) and falls back to the sitemap corpus. Current/filme/,/serie/and `/a
- v1.8.7GoAnime v1.8.72026-09-15 · 2026-09-15 00:15 UTC
查看更新说明
GoAnime Release Notes - Version 1.8.7
Release date: 2026-09-14
Highlights
- SuperFlix survives domain rotations without a new release: SuperFlix moved its domain five times since 1.8.6 (
.pro→.sbs→.beer→.baby→.monster), and every move used to break playback until a new version shipped. GoAnime now finds the live host on its own, through independent layers that cover each other's failures: a manual pin, the last host that worked (remembered on disk), every alias ever observed (walked concurrently), and — only when all of those fail — a one-line pointer in this repository that maintainers can update to repair installed copies without a release. Fixes #199. - SuperFlix plays again, end to end: the player CDN, signing endpoint, server picker and embed markup all changed. Streams, series, movies and Blogger-hosted titles resolve and play in mpv again.
- Movies no longer hang before mpv opens: remote subtitle tracks forced through the HLS demuxer kept mpv stalled for over two minutes. The same tracks are embedded in the stream, so nothing is lost.
- SuperFlix downloads work again: current playlist URLs were being sent to the plain MP4 downloader, which saved the playlist text as the episode file.
- Much faster repeat plays: replaying an episode now skips the browser entirely. Measured during development: a cached replay went from ~6.8 s to under 200 ms, and a cold resolve from ~19 s to ~8 s.
- The bypass browser stays out of your way: it starts minimized and only surfaces when the Cloudflare check actually needs you.
- New AniDB source, and AllAnime has been removed (see Breaking Changes).
- Metadata survives an AniList outage: when AniList disables its API, GoAnime says so plainly and falls back to MyAnimeList.
Breaking Changes
- AllAnime was removed as a source.
--source allanimenow fails as an unknown source, and the--allanime-smartflag no longer exists. Use--source anidb,animefire,goyabuorsuperflix, or omit--sourceto search all of them.
Features
SuperFlix
- Layered host discovery resolves the live domain at runtime, in order:
GOANIME_SF_HOST— manual pin, no network.- The last host that verified, remembered in the user cache directory.
- Every SuperFlix alias ever observed, walked concurrently; the first live one wins, so a dead alias costs its own slot instead of the whole budget.
- The repository pointer
superflix-host.txt, read only when every alias above has failed — a normal launch never contacts GitHub. - The compiled default, now
superflixapi.monster.
- Smart offscreen solver (on by default): the Cloudflare bypass browser starts minimized and is brought on screen only when the challenge needs a human — when Cloudflare reports a load failure or the check stops clearing — then closes when the solve ends.
--sf-windowrestores the always-visible window. - Challenge retry: when the Turnstile widget fails to load ("Não foi possível carregar a verificação"), the solver presses the page's own retry control instead of waiting out its timeout.
- Browser-free re-signing through the player's current
/layer/endpoint, which replaced the retiredgetVideoendpoint. The legacy endpoint remains as a fallback. - Signed stream URLs are cached with the Referer and User-Agent they are bound to, and verified with a single probe before reuse.
- Blogger-hosted titles are recognized and handed to the Blogger playback path instead of being treated as a FirePlayer host.
Sources
- AniDB source (
anidb.app): search, episode listing and stream resolution, included in the daily source-health checks.GOANIME_ANIDB_LANGselects subtitled (jpn/sub, default) or dubbed (eng/dub) releases.
Metadata
- AniList outage handling: when AniList answers with its "API temporarily disabled" notice, the lookup
- SuperFlix survives domain rotations without a new release: SuperFlix moved its domain five times since 1.8.6 (
- v1.8.6GoAnime v1.8.62026-07-25 · 2026-07-25 00:17 UTC
查看更新说明
GoAnime Release Notes - Version 1.8.6
Release date: 2026-07-24
Highlights
- Source Registry Architecture (Model C): Sources are now self-describing. Each provider implements
source.Sourcewith aDescribe()descriptor, and video/episode resolution dispatches through a registry instead of hardcoded branching. New optional capability interfaces —Seasoned(season-aware sources) andBrowserGated(sources needing a browser warm-up) — let the dispatcher adapt per source without special-casing call sites. - Scraper Package Restructure:
internal/scrapersplit intointernal/scraper/netx(transport, SSRF guard, diagnostics, circuit breaker) andinternal/scraper/providers/{allanime,animefire,goyabu,superflix}. The monolithicunified.go/media_manager.gopair was replaced bymanager.gowith lazy,sync.Once-guarded adapter loading. Public API preserved. - SuperFlix Revival with Headless Turnstile Auto-Solver: SuperFlix is back and fully automatic. A Playwright-driven solver clears Cloudflare managed challenges with zero human interaction, backed by a stream cache, a dedicated transport with
Retry-Afterhandling, TVmaze episode mapping, and next-episode prefetching. - AllAnime Dynamic Key Derivation: The AllAnime client no longer relies on a static key. It derives the AES key per epoch from the referer page (
epoch+partB) masked against the entry bundle, and caches it — used for both theaaReqtoken and thetobeparsedblob. - Concurrent Multi-Source Search: Search now fans out across all enabled sources in parallel with error tolerance — a dead source degrades the result set instead of failing the query.
- Manual Source Kill-Switch:
GOANIME_DISABLED_SOURCES/GOANIME_ENABLED_SOURCESturn sources off or on without a rebuild, complementing the automatic per-source circuit breaker. - New TUI Layer: Native anime-results screen, item picker, shell and theme, plus Windows ANSI/VT processing and color-profile detection.
- Dependency & Toolchain Refresh: Go 1.26.5, Playwright migrated to
mxschmitt/playwright-go, and project-wide dependency bumps (see Dependencies). - CI Hardening: CodeQL scanning, Dependabot, and a daily live source-health workflow added; the standalone coverage workflow was folded into
ci.ymlwith a hard 66.0% coverage gate.
Features
Architecture & Sources
- Introduce
internal/api/sourcewith theSourceinterface,Descriptorstruct, and resolution logic that prioritizes explicit source fields, media types, tags, and URL patterns. - Migrate AllAnime, AnimeFire, Goyabu and SuperFlix to the self-describing model; registration supports both legacy and new paths during the phased migration, guarded by anti-drift tests.
- Add
SeasonedandBrowserGatedcapability interfaces; browser-gated sources are warmed up (WarmUp) before a video URL is fetched. - Add
internal/api/providers/dispatchwithFetchEpisodesandFetchStreamURL, routing episode and stream retrieval through the registry. - Add result tagging (
internal/api/providers/tagging.go): language tagging and source identification on search results. - Implement concurrent search across multiple sources with per-source error tolerance.
- Add manual source kill-switch (
internal/util/source_toggle.go), parsed in the leafutilpackage so both the dispatch and search layers honor it without an import cycle. - Add strict-source handling (
GOANIME_STRICT_SOURCE) and URL-only resolution for video URL retrieval. - Add
internal/api/source/enablement.goandcapabilities.gowith dedicated tests.
SuperFlix
- Headless Cloudflare Turnstile auto-solver driven by Playwright (
browser.go,cf.go), with configurable behavior viaGOANIME_SF_HEADLESS,GOANIME_SF_BUNDLED,GOANIME_SF_CHROME_CHANNELandGOANIME_SF_MASK. - Stream cache with CDN liveness probing (
streamcache.go), dedicated HTTP transport honoringRetry-After(transport.go), and TVmaze episode mapp
- Source Registry Architecture (Model C): Sources are now self-describing. Each provider implements
- v1.8.5GoAnime v1.8.52026-05-20 · 2026-05-20 05:03 UTC
查看更新说明
GoAnime Release Notes - Version 1.8.5
Release date: 2026-05-20
Highlights
- Go 1.26.3 Toolchain: Project upgraded to Go 1.26.3. Updated all dependencies to latest compatible versions, including
enetx/surfandquic-go. - SuperFlix Host Migration: SuperFlix references updated from
superflixapi.onlinetosuperflixapi.best. The previous.onlinehost began returning 5xx errors;.bestis now the canonical endpoint. - SFlix Source Removed: SFlix integration deleted entirely (previously disabled). Dead provider code and associated tests purged.
- Media Manager & Scraper Restructure: Internal media manager and scraper layout refactored for cleaner provider separation. Public API preserved (no breaking changes).
- Major Test Coverage Push: Phases 1–14 implemented; coverage raised to 52.8%. Phases 15–17 still in progress, targeting the remaining 165 functions at 0% across
api,util,playback,handlers,discord,upscaler,updater,scraper,providers,downloader, andSDK. - Windows CI Stability: Interactive fuzzy-finder tests now skip in CI environments without TTY. Resolves persistent 10-minute deadlocks on
windows-latestrunners caused bytcellwinTty.getConsoleInputsyscall blocking.
Features
- Upgrade Go toolchain to 1.26.3; bump module dependencies project-wide.
- Update
enetx/surfandquic-goto latest releases. - Add comprehensive unit tests for scraper provider lookup, episode resolution, and upscaler pipeline (
internal/scraper,internal/upscaler). - Add player functionality tests: streaming flow, progress aggregation across episodes, error-path coverage (
internal/player). - Add unit tests for movie/provider entry points and media-type routing (
internal/scraper/providers). - Add Discord manager and handler tests: presence updates, rich-presence formatting, lifecycle (
internal/discord). - Implement Phases 11–14 of the test plan: every targeted exported and unexported function in those phases now has a dedicated test.
- Phases 15–17 in progress: tests being added for
api+util, thenplayback+handlers+discord+upscaler+updater, thenscraper+providers+downloader+SDK.
Bug Fixes
- Critical: Update SuperFlix host references from
superflixapi.onlinetosuperflixapi.best. The.onlinehost began failing;.bestis the new canonical endpoint. Applied across scraper code, tests, and fixtures. - Fix Windows CI deadlock in
TestHandleUpscaleFromMenu_DoesNotPanic,TestAskForDownload_ReturnsValidMarker,TestAskForPlayOffline_DoesNotPanic, and sibling interactive tests: each guard withif os.Getenv("CI") != "" { t.Skip("Skipping interactive fuzzy-finder test in CI (no TTY available)") }. Root cause:tcellwinTty.getConsoleInputsyscall blocks indefinitely without a console, hitting the 10-minute package timeout. - Fix
TestSanitizeMediaTarget/plain_path_cleanedon Windows: wrap expected path infilepath.FromSlash(...)so OS-native separators matchfilepath.Cleanoutput. - Fix global progress tracker cleanup order in CI to prevent intermittent races between teardown and lingering goroutines.
Improvements
- Remove SFlix scraper, provider registration, and all associated tests. Dead code purged.
- Refactor media manager and scraper directory layout: cleaner separation of provider concerns; internal types reorganized without changing the public surface.
- Tighten interactive-test contract: tests that invoke
tui.Findnow checkos.Getenv("CI")and skip when no TTY is attached, instead of relying on host-OS error behavior. - Update
go.mod/go.sumfor upgraded toolchain and dependency bumps (enetx/surf,quic-go, transitive updates). - Phases 1–14 implemented; Phases 15–17 underway, targeting the remaining 165 functions at 0%.
Installation
Linux / macOS
# Download the binary for your platform curl -LO https://github.com/alvarorichard/Goanime/releases/do - Go 1.26.3 Toolchain: Project upgraded to Go 1.26.3. Updated all dependencies to latest compatible versions, including
- v1.8.4GoAnime v1.8.42026-05-03 · 2026-05-03 04:08 UTC
查看更新说明
GoAnime Release Notes - Version 1.8.4
Release date: 2026-05-03
Highlights
- SuperFlix API Migration: Migrated SuperFlix endpoint from
superflixapi.rest(deprecated) tosuperflixapi.online(canonical). The legacy host performs a 301 redirect, but Go's HTTP Client downgrades POST to GET, breaking requests. Updated across all code and tests. - SuperFlix Content Filtering: Implemented episode filtering by air date, removing episodes with missing, "null", or future air dates. This resolves issues where placeholder episodes appeared without available sources.
- SuperFlix Error Handling Improvements: Implemented
ensureJSONResponse()to detect HTML or non-2xx responses and produce clear error messages instead of cryptic "invalid character '<'". Now performs body-sniffing instead of relying solely on Content-Type header. - Temporarily Disabled Sources: FlixHQ, SFlix, and 9Anime commented out until fixes are implemented. AnimeDrive also temporarily disabled.
- Conditional Logic Refactoring: Replacement of complex if-else chains with switch statements for improved readability and maintainability across the codebase.
- Version Bumped: Updated to 1.8.4 with automatic normalization of the "v" prefix in CI workflows.
Features
- Migrate SuperFlix API endpoint to canonical
superflixapi.onlinehost. - Add content filtering for SuperFlix episodes: remove episodes with empty, "null", or future air dates.
- Implement
ensureJSONResponse()helper for clear detection of HTTP/HTML errors in SuperFlix APIs. - Refactor conditional chains across multiple files: replace nested if-else with switch statements for improved readability.
- Add support for non-UTC timezones in SuperFlix episode filtering (normalizes to UTC internally).
- Version normalization: automatic TrimPrefix("v") in CI builds to avoid "vv1.8.4" in outputs.
Bug Fixes
- Critical: Fix SuperFlix API host migration: update from
superflixapi.resttosuperflixapi.online. The 301 redirect from the legacy host downgrades POST to GET, breaking/player/bootstrap. Legacy code received HTML 404 and failed with "invalid character '<' looking for beginning of value". - Critical: Fix SuperFlix episode filtering: placeholder episodes with
air_date: nullorair_date: ""are now removed before returning to the user. Episodes with future air dates are also filtered. This resolves issues where users saw "no servers available" for episodes that haven't yet been released. - Fix SuperFlix error messages: implement
ensureJSONResponse()to detect HTML or non-2xx status codes and produce clear messages instead of "invalid character '<'". Logs now indicate the endpoint, status code, and final URL for diagnosis. - Fix SuperFlix air_date timezone handling: filtering now uses UTC internally, preventing leakage of tomorrow's episodes in timezones west of UTC.
- Temporarily disable FlixHQ, SFlix, and 9Anime source providers until fixes are ready. Sources commented out with
/* */blocks in provider registry. - Temporarily disable AnimeDrive scraper until Cloudflare bypass is implemented.
- Fix version normalization: strip leading "v" from injected CI version string to avoid "vv1.8.4" in outputs.
- Refactor logging: replace
log.Fatalln()withutil.Errorf()in error handlers of main.go, improving graceful shutdown. - Remove Nix configuration files (default.nix, flake.nix, flake.lock, gomod2nix.toml) from repository.
Improvements
- Refactor conditional logic: replace if-else chains with switch statements across multiple modules (
allanime_enhanced.go,player.go,playvideo.go,scraper.go,download.go,appflow/anime_data.go,util/util.go,util/perf.go,scraper/flixhq.go,scraper/sflix.go,scraper/superflix.go) for improved readability and maintainability. - Add helper function
filterEpisodesByAirDate()in SuperFlix scraper to centralize episode date filtering logic. - Improve SuperFlix error diagnostics: enrich error messa
- SuperFlix API Migration: Migrated SuperFlix endpoint from
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
GoAnime is a terminal application for searching, streaming and downloading anime, movies and TV shows in English and Brazilian Portuguese. It searches several sources at once, plays the selected episode in mpv, and keeps track of where you stopped.
It is a single binary for Linux, macOS and Windows, and mpv is all it needs to stream. FFmpeg is optional: downloads use it to embed subtitles, and upscaling a video requires it.
Contents
- Features
- Installation
- Usage
- Sources
- Configuration
- Files
- Troubleshooting
- Using GoAnime as a library
- Contributing
- Community
- Acknowledgments
- Disclaimer
- License
Features
- Searches every enabled source in parallel and falls back to another source when one fails.
- Subbed and dubbed anime in English and Portuguese, plus Portuguese movies and TV shows.
- Streams with quality selection, or downloads a single episode, a range, or a whole series.
- Saves downloads with Plex-compatible names (
Anime - S01E01.mp4). - Resumes playback and remembers watched episodes.
- Skips the opening from the player menu, using timestamps from AniSkip.
- Discord Rich Presence.
- Anime4K upscaling in real time while you watch, or of video and image files.
- Updates itself with
goanime --update.
Installation
GoAnime uses mpv for playback. Install mpv first, unless you use the Windows installer, which includes it.
Prebuilt binaries for every platform are available on the releases page.
Windows
GoAnime ships as a per-user installer and as a portable ZIP. Neither needs administrator rights.
Download and run GoAnime-Installer-<version>.exe from the
latest release.
It installs GoAnime and mpv under %LOCALAPPDATA%\Programs\GoAnime and adds
that folder and its bin subfolder to your user PATH. It does not ask
for UAC. If an old 1.x all-users installation is found, the installer asks you
to uninstall it first, so two copies do not compete in PATH.
If you prefer not to use the installer, download
goanime-windows-amd64.zip, extract goanime-windows-amd64.exe, rename it to
goanime.exe and put it in a folder on your PATH. The archive does not
include mpv: install it separately. GoAnime
finds mpv.exe on your PATH or in the same folder as goanime.exe.
Unsigned binaries and SmartScreen. GoAnime releases are not signed with a
paid Authenticode certificate, so Windows SmartScreen may show "Windows
protected your PC" the first time you run the installer or goanime.exe. That
warning is expected for an unsigned project; it does not mean the file is
known to be malicious or safe. Verify the SHA-256 against
checksums-sha256.txt (see Verifying a download).
Only if it matches, choose More info → Run anyway. Never disable
SmartScreen globally, and never run a file whose hash you have not checked.
When you launch GoAnime on its own (double-click, Start menu or a desktop
shortcut), it runs in Windows Terminal so the
interface gets color, UTF-8 and font fallback. If it started in the classic
console and Windows Terminal is missing, GoAnime tries winget once; when
winget is unavailable, as in Windows Sandbox, it unpacks the official x64
Windows Terminal build embedded in the executable into
%LOCALAPPDATA%\GoAnime\WindowsTerminal and reopens from there. That path
needs neither network nor administrator rights; builds for other
architectures download the official archive instead. Without a usable copy
GoAnime continues in the classic console. Set GOANIME_TERMINAL=conhost to
stay in the classic console.
macOS
brew install mpv
curl -Lo goanime https://github.com/alvarorichard/GoAnime/releases/latest/download/goanime-darwin-universal
chmod +x goanime
sudo mv goanime /usr/local/bin/
The binary is universal and runs on both Apple Silicon and Intel Macs. If you
download it with a browser instead of curl, macOS quarantines it and refuses
to run it; clear the flag with
xattr -d com.apple.quarantine /usr/local/bin/goanime.
Arch Linux
GoAnime is available in the AUR:
yay -S goanime
Debian, Ubuntu, Fedora and other distributions
Install mpv with your package manager (sudo apt install mpv or
sudo dnf install mpv), then:
curl -LO https://github.com/alvarorichard/GoAnime/releases/latest/download/goanime-linux-amd64.tar.gz
tar -xzf goanime-linux-amd64.tar.gz
sudo install goanime-linux-amd64 /usr/local/bin/goanime
For ARM64, replace amd64 with arm64.
From source
With Go 1.27.3 or later:
go install github.com/alvarorichard/Goanime/v2/cmd/goanime@latest
The v2 module path is github.com/alvarorichard/Goanime/v2; library imports
must use that prefix. The previous v1 module remains available at the old path.
Progress tracking is backed by SQLite and requires CGO, so a C compiler must be available when building. Without one, GoAnime still builds and runs, but does not track progress. The release binaries are built with SQLite. See docs/BUILD_OPTIONS.md for details.
Verifying a download
Every release includes checksums-sha256.txt. Compute the hash of the file
you downloaded and compare it with the line for that file:
sha256sum goanime-linux-amd64.tar.gz # Linux
shasum -a 256 goanime # macOS, the goanime-darwin-universal line
Get-FileHash goanime-windows-amd64.zip # Windows, in PowerShell
checksums-sha256.txt is published in the same release as the binaries, so it
detects a corrupted or truncated download, not a compromised release. The
Windows and macOS binaries are not code-signed; the operating system may warn
on first launch.
Updating
| Installed with | Update with |
|---|---|
| Windows installer (2.0.0+) | goanime --update, or the installer of the new version |
| Windows installer (1.x) | The v2.0.0 installer once; after that, goanime --update |
| Windows portable ZIP | goanime --update |
| AUR | Your AUR helper, for example yay -Syu |
| A release binary or archive | goanime --update |
go install | The same go install command |
goanime --update checks the download against the release's
checksums-sha256.txt and installs nothing if they do not match. On Windows it
stages the new executable next to the running one, lets a helper finish the
replacement after GoAnime exits, and keeps the previous binary as
goanime.exe.backup until the new version starts successfully. See
docs/AUTO_UPDATE.md for the full flow.
The per-user Windows installer lives in a folder the user can write to, so
goanime --update does not need elevation. On Linux and macOS, if the
executable lives in a folder you cannot write to, such as /usr/local/bin,
run sudo goanime --update.
Usage
Run goanime without arguments to open search home. Type a name and press
enter, or press ↓ to pick from the lists below: Continue reopens an
episode where you stopped (enter resumes, r starts over, e lists
episodes, x removes it) and Recent repeats a past search with its result
count. tab switches scope between ALL, PT-BR, ENGLISH and MOVIES/TV.
From a result, choose a version with ← → and, for a series, an episode.
You can also pass the name directly:
goanime "one piece"
Use spaces in the name, not hyphens.
Anime downloads go to ~/.local/goanime/downloads/anime/ unless you pass
-o:
goanime -d "one piece" 1 # episode 1
goanime -d -r "naruto" 1-12 # episodes 1 to 12
goanime -d -a "one piece" # every episode
goanime -d --quality 720p "frieren" 1 # a specific quality
goanime -d -o ~/Anime "bleach" 10 # a custom directory
The directory given to -o must be inside your home folder.
Movies and TV shows use -dm and go to ~/.local/goanime/downloads/movies/:
goanime -dm "Interstellar" # a movie
goanime -dm --type tv "Dark" 1 5 # season 1, episode 5
goanime -dm -r "Dark" 1 1-5 # season 1, episodes 1 to 5
goanime -dm -a "Dark" # every season
Some streams are downloaded with yt-dlp, which GoAnime fetches on its own the first time it needs it.
Other options:
goanime --source animefire "jujutsu kaisen" # search a single source
goanime --upscale --upscale-hq video.mp4 # upscale a file with Anime4K
goanime --update # update to the latest release
goanime --debug "naruto" # write a debug log
Run goanime -h for the full list of options.
Keys
| Key | Action |
|---|---|
↑ ↓ or k j | Move |
Type, or / | Filter the list |
g G | First or last item |
Enter | Select |
Esc | Go back |
tab | Switch search scope (search home) |
← → | Choose a version (results) |
r e x | From start, episodes, remove (Continue list) |
d D A m | Download one, range, all, options (episodes) |
In a menu that shows a letter beside each option, that letter picks the option at once; any other key still filters.
The episode list marks the episodes you finished with ✓ and the one you stopped partway with ◐, and opens where you left off.
While watching
While mpv plays, the terminal shows the player menu, with how far the episode has played:
| Key | Option | What it does |
|---|---|---|
n | Next episode | Play the next episode |
p | Previous episode | Play the previous episode |
e | Select episode | Pick another episode from the list |
c | Change anime | Search for another title |
s | Skip intro | Jump past the opening, when AniSkip has its timestamps |
a | Audio track | Switch the audio track, when there is more than one |
t | Subtitles | Switch or turn off subtitles, when there are any |
Esc | ← Back | Return to the download and playback menu |
q | Exit | Close mpv and quit |
For a movie, the menu offers Replay movie (r), Change movie (c), the track
options, ← Back and Exit. When an episode or movie has saved progress, GoAnime
asks whether to resume from where you stopped.
Real-time upscaling
Real-time Upscale, in the menu before playback, applies Anime4K shaders in mpv. The first time, choose Setup shaders to download them, then pick a mode. Each mode's label says what it is for, from Performance for a weak GPU to Ultra for SD sources.
Sources
| Source | Content | Language | Notes |
|---|---|---|---|
| HiAnime | Anime | English, subbed and dubbed | Subbed by default |
| AnimeFire | Anime | Portuguese (Brazil) | |
| AnimesDigital | Anime | Portuguese (Brazil) | Subtitled and dubbed |
| AnimeDrive | Anime | Portuguese (Brazil) | Host override: GOANIME_ANIMEDRIVE_URL |
| Goyabu | Anime | Portuguese (Brazil) | Disabled by default, see below |
| StartFlix | Movies, TV | Portuguese (Brazil) | Dubbed and subtitled |
| TopCine | Movies, TV | Portuguese (Brazil) | Catalog only; playback goes through StartFlix |
| Pobreflix | Movies, TV | Portuguese (Brazil) | Direct MP4 playback; StartFlix panel fallback |
--source limits a search to one source: hianime, animefire, goyabu,
animesdigital, animedrive, startflix, topcine or pobreflix.
movietv covers StartFlix, TopCine and Pobreflix; ptbr covers every
Portuguese source.
Pobreflix asks the site's /api catalog first and falls back to its sitemap
index. Current movie and episode pages embed public MP4 servers, so playback is
direct and needs no browser. Old-theme pages still use the StartFlix panel.
AnimeDrive's host is intermittently unreachable from some networks. If the
site moves or your network blocks it, GOANIME_ANIMEDRIVE_URL points the
source at a reachable mirror.
Goyabu is behind a Cloudflare managed challenge and is disabled by default. It
works on networks that Cloudflare does not challenge; on a challenged network
no browserless HTTP client can clear the challenge. Enable it with
GOANIME_ENABLED_SOURCES=goyabu.
GoAnime depends on third-party websites, and those websites change without notice. When one does, the corresponding source can stop working until it is updated. A scheduled workflow checks every source daily, so breakage is usually visible there before it is reported.
Configuration
GoAnime needs no configuration file. A few environment variables cover less common needs:
| Variable | Description |
|---|---|
GOANIME_ENABLED_SOURCES | Comma-separated sources to enable, such as goyabu |
GOANIME_DISABLED_SOURCES | Comma-separated sources to skip |
GOANIME_THEME | dark, light or auto (default): auto asks the terminal once for its background |
GOANIME_TERMINAL | conhost keeps Windows GoAnime in the classic console instead of reopening it in Windows Terminal |
GOANIME_PLAIN | Set to 1 for the plain interface: no colors, no Japanese glosses, ASCII only (same as --plain, NO_COLOR or TERM=dumb) |
GOANIME_JAPANESE | 1 always shows the Japanese glosses, 0 always hides them; unset, GoAnime shows them where the terminal has a font for them |
GOANIME_HIANIME_AUDIO | sub (default) or dub |
GOANIME_STRICT_SOURCE | Set to 1 to report an error instead of guessing an unknown source |
GOANIME_ANIMEFIRE_API | Address of the AnimeFire API |
GOANIME_ANIMEDRIVE_URL | Address of AnimeDrive |
GOANIME_POBREFLIX_URL | Address of Pobreflix |
GOANIME_STARTFLIX_URL | Address of StartFlix |
GOANIME_STARTFLIX_PANEL_URL | Address of the StartFlix video panel |
GOANIME_TOPCINE_URL | Address of TopCine |
TMDB_API_KEY | A TMDB key for movie, TV and season details |
OMDB_API_KEY | An OMDb key to use instead of the shared demo key |
The address variables point a source at a new domain when its site moves, without waiting for a new release.
Files
| What | Linux | macOS | Windows |
|---|---|---|---|
| Watch history | ~/.local/goanime/tracking/progress.db | ~/.local/goanime/tracking/progress.db | %LOCALAPPDATA%\GoAnime\tracking\progress.db |
| Downloads | ~/.local/goanime/downloads/ | ~/.local/goanime/downloads/ | %USERPROFILE%\.local\goanime\downloads\ |
| Debug logs | ~/.local/share/goanime/logs/ | ~/Library/Logs/GoAnime/ | %LOCALAPPDATA%\GoAnime\logs\ |
| Anime4K shaders | ~/.config/goanime/anime4k-shaders/ | ~/Library/Application Support/goanime/anime4k-shaders/ | %APPDATA%\goanime\anime4k-shaders\ |
| yt-dlp | ~/.cache/go-ytdlp/ | ~/Library/Caches/go-ytdlp/ | %LOCALAPPDATA%\go-ytdlp\ |
| Japanese font | ~/.local/share/fonts/goanime/ | — | — |
On Linux, the shader and yt-dlp folders follow XDG_CONFIG_HOME and
XDG_CACHE_HOME when they are set, and the font folder follows
XDG_DATA_HOME. Deleting the watch history file resets
all progress. To uninstall GoAnime, remove the executable (or, with the
Windows installer, uninstall it from Settings) and delete the folders above
that you no longer need.
Troubleshooting
AnimeDrive search times out
AnimeDrive can take longer to answer when the site is busy. Its search uses
the full source deadline, without restarting a request at the shorter HTTP
client timeout. The host is also intermittently unreachable from some
networks. If it still times out, point GOANIME_ANIMEDRIVE_URL at a reachable
mirror, try again later, or use --source to search another source. Include a
debug log when reporting the problem.
Reporting a problem
Open a bug report and attach a debug log to it:
-
Run the same command again with
--debugadded, for examplegoanime --debug "naruto", and repeat what you did until the problem happens. -
When it starts, GoAnime prints the path of the log file. Each run writes a new file named
goanime_<date>_<time>.login this folder:System Folder Windows %LOCALAPPDATA%\GoAnime\logsmacOS ~/Library/Logs/GoAnimeLinux ~/.local/share/goanime/logs -
Attach the newest file to the issue, together with the output of
goanime --version, your operating system and the command you ran.
The log lists the titles you searched and paths on your computer, which can include your user name. Read it before attaching if that matters to you.
mpv is not found
Make sure mpv --version works in the same terminal you run GoAnime from.
On Windows, open a new terminal after installing so the updated PATH is
picked up.
Japanese characters show as boxes
The Japanese beside each heading (ゴーアニメ, 検索) is drawn with the terminal's fonts. When none of them has Japanese, GoAnime hides it instead of showing boxes:
- Linux: GoAnime installs GoAnime Glyphs, an 11 KB font with just those
characters, in
~/.local/share/fonts/goanime/. Close and reopen the terminal to see them. A full Japanese font works too, such asnoto-fonts-cjkon Arch Linux,fonts-noto-cjkon Debian and Ubuntu orgoogle-noto-sans-cjk-fontson Fedora. - Windows: GoAnime opens itself in Windows Terminal, which has font
fallback.
GOANIME_TERMINAL=conhostkeeps the classic console, where the Japanese stays hidden. - Linux virtual console (
TERM=linux): its font has no Japanese, so it stays hidden.
GOANIME_JAPANESE=1 shows it anyway, GOANIME_JAPANESE=0 hides it
everywhere. The font is never installed with GOANIME_JAPANESE=0 or in the
plain interface.
Using GoAnime as a library
The search and scraping code is exposed as a public Go package:
client := goanime.NewClient()
results, err := client.SearchAnime("One Piece", nil)
Search covers every source. Episode lists and stream URLs are available for AnimeFire results only for now. docs/LIBRARY_USAGE.md walks through the API, and pkg/goanime/examples has complete programs.
Contributing
Bug reports, fixes and new sources are welcome.
Most of the maintenance work in GoAnime is keeping sources working as the
sites behind them change, and that is also the easiest way to start
contributing: the source health workflow
shows which sources are failing, and each source is a self-contained package
under internal/scraper/providers. To add a new one, follow
docs/ADDING_A_SOURCE.md, which uses Goyabu as the
reference implementation.
To build and test:
git clone https://github.com/alvarorichard/GoAnime.git
cd GoAnime
git checkout dev
go build ./cmd/goanime
go test -short ./...
Development happens on the dev branch. Create your branch from dev and
open pull requests against dev; main only receives releases.
CONTRIBUTING.md lists the checks to run before opening a
pull request, and docs/Development.md covers code style
and the rest of the workflow.
Community
- Discord for questions, feedback and release announcements.
- GoAnime Mobile, the Android version.
- goanime.online, the project website, with an overview of GoAnime and installation instructions.
Acknowledgments
GoAnime is built on the work of these projects:
- mpv plays every stream.
- AniSkip provides the opening timestamps.
- AniList and Jikan, an unofficial MyAnimeList API, provide anime metadata.
- TMDB and OMDb provide movie and TV metadata.
- Anime4K provides the upscaling algorithm and shaders.
- yt-dlp handles some downloads.
- Bubble Tea, Huh and Lip Gloss build the terminal interface.
- Noto Sans CJK is the source of GoAnime Glyphs, the Japanese font GoAnime installs on Linux (SIL Open Font License).
- ani-cli inspired the project.
Disclaimer
GoAnime does not host, upload or distribute any media. It retrieves content that third-party websites make publicly available and is not affiliated with any of them. Users are responsible for complying with the laws of their country.
License
GoAnime is released under the MIT License.