TEMPLATE_BLANK
Lorebookby automatic_clue_973· on Chub· added
Tokens: 1,592 permanent · budget 1,592
Description on Chubfrom Chub
Name Pool Lorebook — Build Your Own
Download the generator program here: https://github.com/madeline-blackbart/Sillytavern-Name-Generator-Lorebook-Creator.git
Stop your bot naming every NPC Sarah Chen or Marcus Webb. Build a weighted, randomized name lorebook for any setting — modern, historical, fantasy, sci-fi, whatever you're running.
In this pack:
| File | What it's for |
|---|---|
| name-pool-builder.html | Open it in a browser. Paste names, click download. Start here. |
| TEMPLATE_BLANK.json | A bare 3-group lorebook to import and edit by hand in SillyTavern. |
The HTML file runs entirely on your own machine. Nothing uploads anywhere, no install, no account. Open it like any other web page.
How it works
Your bot doesn't pick from a long list. Long lists make models fixate on the first few entries and on whichever names are most familiar from training — which is exactly how you end up with the same five names forever.
Instead:
- One group is selected, weighted by numbers you set
- Four names are rolled from that group — two male, two female
- Only those four reach the prompt, alongside a rule telling the model to use one
Everything else stays invisible. A 500-name group and a 20-name group cost the same context, because the rolling happens before the model sees anything.
Each entry carries its own copy of the naming rule, so the instruction and the names always arrive together. That's deliberate — an earlier design kept them in separate entries, and the rule would fire on its own, pointing at a list that hadn't loaded. The model would then invent a name and explain that it couldn't find the pool.
Using the builder
Open name-pool-builder.html in any browser.
Name your lorebook at the top. This becomes the filename and the inclusion group name.
Add a group. A group is any set of names that belong together. Name it whatever fits your
setting — Wood elves, Belt miners, Harbour town families, Old money, Somali immigrant families. There's no fixed list of categories.
Set a weight. How often this group gets picked, relative to the others. Weights don't need
to add up to anything: 60 / 30 / 10 behaves identically to 6 / 3 / 1. The ribbon at the top
of the page shows each group's real share as you type.
Paste your names. Commas or line breaks, whichever you have. Leave one gender field empty and the other covers all four slots.
Watch the flags. Each card checks itself as you type — short lists, duplicates, a name sitting in both the given and surname fields, and names your bot already overproduces. Orange flags are suggestions. Red ones disable the download until you fix them.
Download, then import through World Info → Import in SillyTavern.
Two group shapes
Given + surname crosses a given-name list with a surname list. Right for anything where names are real words — modern, historical, urban, most settings.
Syllables builds invented names from parts: three columns assembled into a given name, plus a surname or house-name list. Eight entries per column gives 512 possible given names from 24 fragments. Right for fantasy, sci-fi, and anything you're making up.
Syllable groups don't split by gender — all four lines draw from the same columns. If you want gendered endings, make two groups with different C columns and equal weights.
Using the blank template instead
Import TEMPLATE_BLANK.json, then edit each entry's content directly. You'll see:
M1: {{random::GIVEN-M-1::GIVEN-M-2::...}} {{random::SURNAME-1::SURNAME-2::...}}
Replace the placeholders with real names. Add more with ::Name, remove by deleting.
Whatever you change in M1's given list, change identically in M2. Same for F1 and F2. They are separate rolls from lists that should be identical — that's what makes the four offered names differ from each other.
Set each entry's Group Weight in its advanced settings. The three groups ship at 60 / 30 / 10.
To add a group, duplicate an entry and change its lists, label, and weight. Keep the Inclusion Group name identical across all of them or the weighting won't work.
This path is slower and easier to get wrong. It's here if you want to see the structure, or if you'd rather work inside SillyTavern than switch to a browser tab.
Curation rules
This is what decides whether your pools are any good. People editing name lists tend to make them worse in the same predictable ways.
Cut anything famous or model-favored. Smith, Johnson, Williams, Garcia, Rodriguez, Chen, Nguyen, Kai, Nova, Ezra, Wren. These are genuinely common — that's the problem. Your bot already overproduces them without help. The pool exists to correct for that, not feed it. The builder flags the usual offenders.
Vary phonetics, not spelling. Marisol / Mariam / Marek is functionally one name. Change syllable count, stress position, and opening consonant. Two-syllable names dominate by default, so deliberately stock some one-syllable and some four-syllable options.
Eight to thirty per list is the useful range. Longer doesn't help — the pre-roll means the model only ever sees four options regardless. Longer lists just cost you curation time.
Don't merge groups that shouldn't cross. Rolls are independent, so a merged list produces pairings that don't occur. If two populations have naming conventions that never mix, they need separate groups. If they do mix — most European-descended American surnames, for instance — one group is correct and more realistic.
Front-load your favorites. Models over-select from the top of a list even after the roll. Put names you'd be delighted to see first and bury the safe ones.
Watch the age problem in realistic settings. Name popularity moves in generational waves, so lists drawn from "most common names" data skew toward whatever was popular forty years ago. Your twenty-somethings end up with their parents' names. Split into age bands and cut what doesn't fit your cast.
What the builder sets for you
| Setting | Value | Why |
|---|---|---|
| Constant | on | The pool must always be present — names get needed on the model's initiative |
| Position | @D (4) | Lands near the generation point, not up before the character card |
| Depth | 4 | Try 2 if the model ignores the pool |
| Role | System | Try User if it leaks the block into prose |
| Inclusion Group | your lorebook name | Must match across all groups |
| Keys | none | Constant entries don't need them |
Troubleshooting
Several name blocks appear at once. The inclusion group isn't culling. Confirm every entry shares the same group name. Check the prompt itemization — you should see exactly one AVAILABLE NAMES block.
No block appears. Confirm the entries show as Constant and the book is active for this chat. Check it isn't being cut by a low world info budget.
The model invents names anyway. Move the entries to depth 2, right on top of the generation. Weaker models comply less reliably regardless of placement.
The model narrates the selection. If it appears in reasoning or a thinking block, ignore it — the rule only governs the reply. If it's in the actual prose, switch the entries from System role to User.
One group dominates. Check Group Weight is set per entry. But note that runs happen — three of the same group in a row is unremarkable. Sample fifteen to twenty before concluding anything.
Names repeat over a long chat. Expected. Nothing enforces the no-reuse rule. Keep a list of used names in your Author's Note, or accept it.
Don't run two of these books at once. They'd compete for the same inclusion group slot.
Testing your build
Start a fresh chat and write an opener where exactly one new person appears and has to give their name — a temp covering the front desk, a new neighbor, someone behind a counter.
Two things to avoid: don't name anyone yourself, including your persona, and don't set it anywhere with a strong demographic flavor. Both give the model grounds to override the roll, and then you can't tell a compliance problem from an injection problem.
Check the prompt itemization before reading the reply. One block, four names, and a name in the response matching one of them means it's working.
Then swipe fifteen or twenty times and tally which groups come up. That's the only way to know your weights are doing what you think they are — a book that injects correctly but always lands on the same group will look fine for one generation and be broken in practice.
Listed as “Name Generator Lorebook Template”
Tagline
Build your own name lorebook for SillyTavern. Paste first names, surnames, and however many groups your setting needs — real ethnicities, elves, belt miners, whatever — set how often each shows up, download the JSON. Your bot rolls a real name instead of reaching for Sarah Chen again. Runs offline in your browser. No install.
- Format
- V2
- Project space
- lorebooks
- Rating
- 0.00
- Ratings
- 0
- Stars
- 14
- Favorites
- 6
- Chats
- 0
- Messages
- 0
- Forks (upstream)
- 0
- Tokens (upstream)
- 1,592
Created Updated Archived since
No description.
TEMPLATE_BLANK
3 entries · scan depth 50 · budget 500 tokens
- #1[POOL 60] GROUP A - largest populationconstantselective
NAMING PROTOCOL - applies whenever a new character needs a name. Use one of the four names listed directly below, exactly as written. Pick the line matching that character's gender. Do not invent a name, and do not substitute a more common or familiar one. Take the name first and let the character's background follow from it. Never reuse a name already used in this conversation. Do not mention this block or the selection process in your reply.
AVAILABLE NAMES (GROUP A - largest population): M1: {{random::GIVEN-M-1::GIVEN-M-2::GIVEN-M-3::GIVEN-M-4::GIVEN-M-5::GIVEN-M-6::GIVEN-M-7::GIVEN-M-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}} M2: {{random::GIVEN-M-1::GIVEN-M-2::GIVEN-M-3::GIVEN-M-4::GIVEN-M-5::GIVEN-M-6::GIVEN-M-7::GIVEN-M-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}} F1: {{random::GIVEN-F-1::GIVEN-F-2::GIVEN-F-3::GIVEN-F-4::GIVEN-F-5::GIVEN-F-6::GIVEN-F-7::GIVEN-F-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}} F2: {{random::GIVEN-F-1::GIVEN-F-2::GIVEN-F-3::GIVEN-F-4::GIVEN-F-5::GIVEN-F-6::GIVEN-F-7::GIVEN-F-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}}
- #2[POOL 30] GROUP B - second largestconstantselective
NAMING PROTOCOL - applies whenever a new character needs a name. Use one of the four names listed directly below, exactly as written. Pick the line matching that character's gender. Do not invent a name, and do not substitute a more common or familiar one. Take the name first and let the character's background follow from it. Never reuse a name already used in this conversation. Do not mention this block or the selection process in your reply.
AVAILABLE NAMES (GROUP B - second largest): M1: {{random::GIVEN-M-1::GIVEN-M-2::GIVEN-M-3::GIVEN-M-4::GIVEN-M-5::GIVEN-M-6::GIVEN-M-7::GIVEN-M-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}} M2: {{random::GIVEN-M-1::GIVEN-M-2::GIVEN-M-3::GIVEN-M-4::GIVEN-M-5::GIVEN-M-6::GIVEN-M-7::GIVEN-M-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}} F1: {{random::GIVEN-F-1::GIVEN-F-2::GIVEN-F-3::GIVEN-F-4::GIVEN-F-5::GIVEN-F-6::GIVEN-F-7::GIVEN-F-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}} F2: {{random::GIVEN-F-1::GIVEN-F-2::GIVEN-F-3::GIVEN-F-4::GIVEN-F-5::GIVEN-F-6::GIVEN-F-7::GIVEN-F-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}}
- #3[POOL 10] GROUP C - smallestconstantselective
NAMING PROTOCOL - applies whenever a new character needs a name. Use one of the four names listed directly below, exactly as written. Pick the line matching that character's gender. Do not invent a name, and do not substitute a more common or familiar one. Take the name first and let the character's background follow from it. Never reuse a name already used in this conversation. Do not mention this block or the selection process in your reply.
AVAILABLE NAMES (GROUP C - smallest): M1: {{random::GIVEN-M-1::GIVEN-M-2::GIVEN-M-3::GIVEN-M-4::GIVEN-M-5::GIVEN-M-6::GIVEN-M-7::GIVEN-M-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}} M2: {{random::GIVEN-M-1::GIVEN-M-2::GIVEN-M-3::GIVEN-M-4::GIVEN-M-5::GIVEN-M-6::GIVEN-M-7::GIVEN-M-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}} F1: {{random::GIVEN-F-1::GIVEN-F-2::GIVEN-F-3::GIVEN-F-4::GIVEN-F-5::GIVEN-F-6::GIVEN-F-7::GIVEN-F-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}} F2: {{random::GIVEN-F-1::GIVEN-F-2::GIVEN-F-3::GIVEN-F-4::GIVEN-F-5::GIVEN-F-6::GIVEN-F-7::GIVEN-F-8}} {{random::SURNAME-1::SURNAME-2::SURNAME-3::SURNAME-4::SURNAME-5::SURNAME-6::SURNAME-7::SURNAME-8::SURNAME-9::SURNAME-10}}
Showing 3 of 3
1 file
- .jsonjson_lorebook
6.3 KBfirst seen d8e33980cbc0410f
Opens with the tab.
