Nodes/comfyui-PepeAnimeGenreClassifier/Pepe Anime Tag Classifier
ComfyUI Node

Pepe Anime Tag Classifier

Genres get you close. This node's tags get you 'volleyball' and 'female protagonist.'

By Pepehoschi·Created 3 months ago·Updated 3 months ago· 0
Pepe Anime Tag Classifier
    • tags
    • matched_title
    • score
    • matches_json
    anime_title
    top_k5
    min_score0.45
    include_adulttrue

    The genre node in this pack tells you a show is "Action, Fantasy, School." True, but it won't move the needle on an Illustrious prompt. "volleyball" will. "female protagonist" will. Pepe Anime Tag Classifier is the finer-grained sibling: same title-to-prompt idea, but it looks up the detailed descriptive tags instead of the broad genre labels, so you get the stuff that actually changes what the model draws.

    It's the same honest shape as its packmate - an offline lookup over a CSV that ships with the repo (Data/AnimeSeriesTagList.csv, ~40,800 rows in a title;tags format), no model, no API, no key, no network. Type a title, get back a comma-separated tag string ready for your prompt.

    How it works

    The matching engine is shared with the genre node: titles are normalized (casefolded, punctuation stripped, &and), compacted, and tokenized, then scored against every row with a blend of exact match, substring containment, token overlap, and difflib.SequenceMatcher fuzzy similarity. The CSV loads lazily on first use and stays cached for the process. Where the two nodes differ is just the data: tag rows are pipe-separated in the source, and the node splits on | and re-joins with commas for output. Since both classes live in the same pack, installing one gets you the other - they share the same scoring code under the hood.

    The inputs and outputs that matter

    Identical inputs to the genre node, and you'll set the same two:

    • anime_title - the show you want tags for.
    • min_score - confidence floor, default 0.45. Raise it when the best match looks off.

    include_adult and top_k behave the same way, though the adult filter here keys on the tags adult audience only and hentai rather than a genre.

    Outputs: tags is the comma-separated string for your prompt, matched_title and score confirm which row won and how confidently, and matches_json shows the full candidate list when you want to audit a shaky match. Note there's no uid output like the genre node - the tag CSV simply has no MyAnimeList id column.

    Installing it

    Same story as the genre node - this pack is the rare custom node with zero dependencies. No requirements.txt, no model downloads. Via ComfyUI Manager, search "Pepe Anime Genre Classifier" or comfyui-PepeAnimeGenreClassifier, or clone:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Pepehoschi/comfyui-PepeAnimeGenreClassifier
    

    Restart ComfyUI; both nodes show up under Pepe/Anime.

    Where people get burned

    • These are series-level tags, not scene details. You get the show's whole identity - "volleyball" for Haikyuu, "based on a manga" for anything adapted - not "what's happening in this specific frame." Treat them as stable prompt scaffolding, not a substitute for describing your shot.
    • Not every tag belongs in a prompt. The dataset includes metadata like japanese production and present that mean something to a database and nothing to a text encoder. You'll want to eyeball the output before wiring it straight in.
    • Same limits as the genre node: the data is a static snapshot shipped with the repo, so recent or obscure shows won't resolve, and the dataset's exact provenance isn't documented in the README - trust the fuzzy matching, not the completeness.
    • Duplicate rows are preserved deliberately, so a show with several rows may repeat in matches_json.

    Run it side by side with the genre node - genres for the broad strokes, tags for the specifics - and you can build a whole prompt from just the title of a show. Small, offline, and genuinely useful.

    CategoryPepe/Anime

    Inputs (4)

    NameTypeDefaultDescription
    anime_titleSTRING
    top_kINT51–20
    min_scoreFLOAT0.450–1
    include_adultBOOLEANtrue

    Outputs (4)

    NameTypeDescription
    tagsSTRING
    matched_titleSTRING
    scoreFLOAT
    matches_jsonSTRING