Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fe7824d49a | ||
|
|
17f553d543 | ||
|
|
66037e4a11 | ||
|
|
acda9e188e |
@@ -1,4 +1,6 @@
|
|||||||
# llm-covers
|
# llm-covers
|
||||||
|
Makes placeholder cover briefs for ebooks.
|
||||||
|
|
||||||
A simple tool for using local LLMs to generate cover briefs for ebooks.
|
A simple tool for using local LLMs to generate cover briefs for ebooks.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
@@ -14,10 +16,11 @@ A simple tool for using local LLMs to generate cover briefs for ebooks.
|
|||||||
4. Run `make_cover_briefs.lua`
|
4. Run `make_cover_briefs.lua`
|
||||||
|
|
||||||
Cover briefs will be placed in `cover_briefs`. A prompt ready to paste directly
|
Cover briefs will be placed in `cover_briefs`. A prompt ready to paste directly
|
||||||
into Gemini will be in `for_gemini`. An extra border is prompted for to make
|
into Gemini will be in `for_gemini`.
|
||||||
cropping easy to remove the Gemini watermark. (There are other small changes to
|
|
||||||
increase likelihood of Gemini following the prompt correctly and making a good
|
The local model sometimes completely forgets critical details of characters, so
|
||||||
output.)
|
it's important you have some familiarity with the work before running the
|
||||||
|
generator to check accuracy.
|
||||||
|
|
||||||
### Config file format
|
### Config file format
|
||||||
```json
|
```json
|
||||||
@@ -39,22 +42,24 @@ None of this works unless you **disable Gemini's personalization/memory**,
|
|||||||
because it pollutes context extremely badly and will randomly add elements and
|
because it pollutes context extremely badly and will randomly add elements and
|
||||||
rejections from different conversations everywhere.
|
rejections from different conversations everywhere.
|
||||||
|
|
||||||
If Gemini rejects the prompt, adding
|
If you are able to use Gemini Flash or Flash-Lite, it works far better than Pro.
|
||||||
<code id="d2651e">Remove any elements that may go against guidelines before generating the image.</code>
|
Pro tends to invent additional details, refuse to respond, fail to respond, or
|
||||||
<button onclick="navigator.clipboard.writeText(d2651e.textContent)">⧉</button>
|
make modifications you didn't ask for. I genuinely cannot understand how it is
|
||||||
to the opening paragraph can fix that issue.
|
*so much worse* at this.
|
||||||
- This suddenly got a lot less effective. I recommend instead telling it to
|
|
||||||
rewrite the prompt and then in a separate conversation, use that instead. I
|
|
||||||
also recommend one retry before modifying it.
|
|
||||||
|
|
||||||
Gemini is really bad about adding hardcover seams. Despite being instructed not
|
Gemini is really bad about adding hardcover seams. Despite being instructed not
|
||||||
to, it shows up sometimes. More strong prompting breaks other requested
|
to, it shows up often. More strong prompting breaks other requested
|
||||||
features, so the best way to deal with it is to request its removal after the
|
features, so the best way to deal with it is to request its removal after the
|
||||||
initial image is generated.
|
initial image is generated.
|
||||||
|
|
||||||
The local model sometimes completely forgets critical details of characters, so
|
If Gemini rejects the prompt, adding
|
||||||
it's important you have some familiarity with the work before running the
|
<code id="d2651e">Remove any elements that may go against guidelines before generating the image.</code>
|
||||||
generator to check accuracy.
|
<button onclick="navigator.clipboard.writeText(d2651e.textContent)">⧉</button>
|
||||||
|
to the opening paragraph can *sometimes* fix that issue.
|
||||||
|
- Telling it to rewrite the prompt and then using *that* in a separate
|
||||||
|
conversation tends to work better.
|
||||||
|
- I typically just re-send it repeatedly, as it's easier and eventually works
|
||||||
|
most of the time.
|
||||||
|
|
||||||
## Tasks
|
## Tasks
|
||||||
- [ ] Add timestamps to when a prompt is sent.
|
- [ ] Add timestamps to when a prompt is sent.
|
||||||
|
|||||||
+1
-7
@@ -61,15 +61,9 @@ prompts.cover_brief = [[Generate a cover brief from the following:
|
|||||||
|
|
||||||
]]
|
]]
|
||||||
|
|
||||||
prompts.prior_gemini_prompt = [[
|
|
||||||
|
|
||||||
Generate an ebook cover inset within an empty white border 10% larger than the cover using the following cover brief. It should be a flat graphic design file, with no artifacts of a physical object. The aspect ratio of an ebook is tall, not wide. The white border is very important, and should take up 10% of the area of the image. The title and author should only appear once on the cover. It must be sutiable for printing. Do not include the word "by" when adding the author's name to the cover.
|
|
||||||
|
|
||||||
]]
|
|
||||||
|
|
||||||
prompts.for_gemini = [[
|
prompts.for_gemini = [[
|
||||||
|
|
||||||
Generate an ebook cover using the following cover brief. It should be a flat graphic design file, with no artifacts of a physical object. The aspect ratio of an ebook is tall, not wide. The title and author should only appear once on the cover. It must be sutiable for printing. Do not include the word "by" when adding the author's name to the cover. If an underscore is present in the title, that is an encoding mistake, it should be a colon. The author is separated from the title by a hyphen, the last hyphen on the title line.
|
Generate an ebook cover using the following cover brief. It should be a flat graphic design file, with no artifacts of a physical object. The aspect ratio of an ebook is tall, not wide. The title and author should only appear once on the cover. It must be sutiable for printing. Do not include the word "by" on the cover. An underscore in the title should be replaced with a colon, but not hyphens or as a separator between the title and author. The author is separated from the title by the last hyphen on the line showing the title and author.
|
||||||
|
|
||||||
]]
|
]]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user