UGC Reactions from Real Creators
Real creator library videos at $11 and images at $8. Custom production from $25/video with a $250 minimum. Commercial licensing included.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A composable pipeline for brand name generation, evaluation, and availability checking.
Not just domain checking — a full brand naming workbench. Generate candidates, score them on phonetics, linguistics, and sound symbolism, filter by availability across platforms, and persist every intermediate result for inspection and branching.
To install:
pip install brand
pip install brand[phonetics] # adds BLICK, epitran, panphon
pip install brand[all] # everything including AI generation
Evaluate a single name:
import brand
result = brand.evaluate_name("figiri")
print(result["scores"])
# {'syllables': 3, 'stress_pattern': 'unknown', 'spelling_transparency': 0.88,
# 'sound_symbolism': {'profile': 'modern/sharp', ...}, 'novelty': 1.0, ...}
The core abstraction is a pipeline — a sequence of Generate, Score, and Filter stages that progressively enriches, scores, and narrows a set of candidate names.
results = brand.run_pipeline("tech_startup", names=["figiri", "lumex", "voxen"])
for candidate in results["candidates"]:
print(f"{candidate['name']}: {candidate['scores']}")
Available templates:
| Template | Use case |
|---|---|
quick_screen | Fast local-only checks. No network. Screen thousands in seconds. |
tech_startup | .com + GitHub + full phonolinguistic battery |
python_package | PyPI + GitHub + short name + keyboard distance |
consumer_global | Cross-linguistic safety + trademark + .com mandatory |
developer_tool | Short (4-6 chars), easy to type, PyPI + npm + GitHub |
ai_ml_product | .ai TLD preferred, modern sound profile, high distinctiveness |
consultancy | Professional tone, .com mandatory, company registration |
open_source | GitHub + PyPI + npm, fun/memorable, less trademark concern |
youtube_channel | YouTube availability, memorable, pronounceable |
full_audit | Every scorer, every check. Thorough but expensive. |
from brand import Generate, Score, Filter, run_pipeline
results = run_pipeline(
[
Generate("cvcvcv_filtered"),
Score(["syllables", "spelling_transparency", "sound_symbolism", "novelty"]),
Filter(top_n=500, by="spelling_transparency"),
Score(["dns_com", "dns_io"]),
Filter(rules={"dns_com": True}),
Score(["whois_com"]),
Filter(rules={"whois_com": True}),
Score(["github_org"]),
]
)
print(f"{len(results['candidates'])} names survived the pipeline")
print(f"Artifacts saved to: {results['project_dir']}")
Every run persists intermediate artifacts to disk. You can resume from any stage, branch from any checkpoint, and inspect what happened at each step.
All components are discoverable:
import brand
# See what's available
list(brand.scorers) # ['syllables', 'phonotactic', 'dns_com', ...]
list(brand.generators) # ['cvcvcv', 'ai_suggest', 'morpheme_combiner', ...]
brand.list_templates() # ['tech_startup', 'python_package', ...]
# Inspect a scorer
brand.scorers["dns_com"].cost # 'cheap'
brand.scorers["dns_com"].requires_network # True
brand.scorers["whois_com"].latency # 'slow'
@brand.scorers.register("my_vowel_ratio")
def my_vowel_ratio(name: str) -> float:
vowels = sum(1 for c in name.lower() if c in "aeiouy")
return vowels / len(name)
# Now use it in a pipeline
results = brand.run_pipeline(
[
Generate("from_list", params={"names": ["alpha", "beta", "omega"]}),
Score(["my_vowel_ratio", "syllables"]),
]
)
# CVCVCV combinatoric (371k+ candidates)
names = list(brand.generators["cvcvcv"]())
# CVCVCV with few-uniques filter
names = list(brand.generators["cvcvcv_filtered"]())
# Custom CV pattern
names = list(brand.generators["pattern"](pattern="CVCCV"))
# Morpheme combiner (portmanteau-style)
names = list(
brand.generators["morpheme_combiner"](
prefixes=["lum", "vox", "syn"],
suffixes=["ify", "io", "ar"],
)
)
# AI-assisted (requires 'oa' package)
names = list(brand.generators["ai_suggest"](context="AI data tools"))
# From a file or list
names = list(brand.generators["from_list"](names=["alpha", "beta"]))
syllables — syllable count via CMU dict or vowel heuristicstress_pattern — stress digits from ARPAbet (trochaic "10" is ideal)phonotactic — BLICK well-formedness (0 = perfect English phonotactics) [requires brand[phonetics]]articulatory_complexity — place-of-articulation transitions [requires brand[phonetics]]sound_symbolism — front/back vowel and voiceless/voiced ratios mapped to brand archetypesnovelty — word frequency inverse (1.0 = novel, 0.0 = very common)existing_word — collision with known English wordsspelling_transparency — grapheme-to-phoneme ambiguity score (flat lookup; see pronunciation_entropy for a richer alternative)pronunciation_entropy — positional, context-aware pronunciation ambiguity measured as Shannon entropy in bits. Models how initial Y before a consonant is far more ambiguous than terminal Y, terminal E (silent? schwa?) vs. medial E, open vs. closed syllables, and intervocalic consonant voicing. Supports cross-linguistic mode: pronunciation_entropy('levole', languages=('en', 'fr')) merges English and French phoneme distributions, capturing real-world ambiguity for names that must work across language communities. Lower = more unambiguous. See also pronunciation_entropy_detail() for per-grapheme breakdowns.substring_hazards — profanity substring scancross_linguistic — word frequency in 11 languagesphonetic_neighbors — similar-sounding words via Datamuse APIThis is the beginning of the README. Read the rest at the original. Read the full README ↗