commit 0ee7524bccabb0ba38628cc150f28c2347e58133 Author: Will Estes Date: Wed Jul 22 15:08:10 2026 -0400 Set up gift-guide as its own repo with a pandoc+weasyprint build pipeline Converts the lead-magnet PDF from a Google Slides export into an editable markdown template, styled to match reground.org's dark theme, with a Makefile convention (make partners/.pdf) for producing per-partnership customized versions. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a136337 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pdf diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f8956b0 --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ +PANDOC = pandoc +PDF_ENGINE = weasyprint +TEMPLATE = template.html +CSS = style.css +PARTNERS = $(patsubst %.md,%.pdf,$(wildcard partners/*.md)) + +.PHONY: all clean + +all: template.pdf $(PARTNERS) + +# style.css is linked directly from template.html (not passed via --css), +# but listed here so editing it triggers a rebuild of every PDF. +%.pdf: %.md $(TEMPLATE) $(CSS) + $(PANDOC) $< -o $@ --template=$(TEMPLATE) --pdf-engine=$(PDF_ENGINE) --standalone + +clean: + rm -f template.pdf partners/*.pdf diff --git a/README.md b/README.md new file mode 100644 index 0000000..0c79775 --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# Gift Guide + +Source content and build pipeline for "How To Get Your Stories In Front Of The Readers +Who Need Them" — the lead-magnet PDF given away at reground.org/gift. Kept in its own +repo because this content changes on its own schedule, independent of the reground-site +deploys. + +Styled to match reground.org's dark theme (background, heading, and CTA colors are +pulled directly from that site's CSS). + +## One-time setup + +You need `pandoc` and `weasyprint` on your `PATH`. Both are already used elsewhere on +this machine; nothing else to install. + +## Building a PDF + +```sh +make template.pdf # the generic/base version +make partners/.pdf # a specific partnership's version +make # rebuilds template.pdf + every partners/*.md that exists +make clean # removes generated PDFs (never touches the .md sources) +``` + +`make` finds the source `.md` file automatically from the `.pdf` name you ask for, so +building any filled-in template is just naming the PDF you want. + +## Starting a new partnership + +```sh +cp template.md partners/.md +``` + +Edit the new file's title (front matter) and rewrite the opening/closing copy to bridge +your angle with the partner's audience — the 3 Step sections and their photos are +generally reusable as-is. Then: + +```sh +make partners/.pdf +``` + +## Notes + +- The 4 photos in `images/` were extracted from the original PDF. They're intentionally + generic/illustrative (not specific to any one partnership) and don't need to change + per customization. +- `template.html` renders the cover (title + byline + author photo) from the document's + YAML front matter — you don't need to hand-write that part in the body of each `.md` + file, just update the front matter. +- `style.css` is the single source of truth for the visual theme. Edit it once and + `make all` rebuilds every partner PDF with the change. diff --git a/images/author-photo.jpg b/images/author-photo.jpg new file mode 100644 index 0000000..59e43bd Binary files /dev/null and b/images/author-photo.jpg differ diff --git a/images/step-1-review.jpg b/images/step-1-review.jpg new file mode 100644 index 0000000..6f549ab Binary files /dev/null and b/images/step-1-review.jpg differ diff --git a/images/step-2-thankyou.jpg b/images/step-2-thankyou.jpg new file mode 100644 index 0000000..cc67643 Binary files /dev/null and b/images/step-2-thankyou.jpg differ diff --git a/images/step-3-computer.jpg b/images/step-3-computer.jpg new file mode 100644 index 0000000..c3a7939 Binary files /dev/null and b/images/step-3-computer.jpg differ diff --git a/partners/.gitkeep b/partners/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/style.css b/style.css new file mode 100644 index 0000000..5c29f55 --- /dev/null +++ b/style.css @@ -0,0 +1,97 @@ +/* Matches reground.org's dark theme tokens, read from + reground-site/assets/css/main.css + extended/custom.css */ + +@page { + size: Letter; + margin: 0.75in; + background: #1c1917; +} + +html, body { + background: #1c1917; + color: #f0ebe3; + font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; + line-height: 1.6; + margin: 0; +} + +h1, h2, h3 { + font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; + color: #8fa8d1; + line-height: 1.25; +} + +a { + color: #8fa8d1; +} + +/* Cover block, generated by template.html from the document title/author */ +.cover { + background: #4a6fa5; + color: #f0ebe3; + margin: -0.75in -0.75in 0; + padding: 2in 0.75in 1in; + page-break-after: always; +} + +.cover-title { + color: #ffffff; + font-size: 2.4rem; + margin: 0 0 1rem; +} + +.cover-byline { + color: #f0ebe3; + opacity: 0.9; + font-size: 1.1rem; +} + +.cover .author-photo { + width: 90px; + border-radius: 50%; + margin: 1.5rem 0 0; +} + +/* One Step per page, like the original PDF */ +h2 { + page-break-before: always; + font-size: 1.5rem; +} + +h2:first-of-type { + page-break-before: avoid; +} + +img { + max-width: 100%; + border-radius: 0.5rem; + display: block; + margin: 1.5rem 0; +} + +.closing { + page-break-before: always; + text-align: center; +} + +.closing .author-photo { + width: 100px; + border-radius: 50%; + margin: 0 auto 1rem; +} + +.closing p { + margin: 0.5rem 0; +} + +/* CTA link styled as a button, matching the site's .btn */ +.cta-button { + display: inline-block; + margin-top: 1.5rem; + padding: 0.75rem 1.5rem; + border-radius: 0.5rem; + background: #2dd4c4; + color: #0f1115; + font-weight: 600; + text-decoration: none; +} diff --git a/template.html b/template.html new file mode 100644 index 0000000..4bba82c --- /dev/null +++ b/template.html @@ -0,0 +1,16 @@ + + + + +$title$ + + + +
+

$title$

+$if(author)$$endif$ + +
+$body$ + + diff --git a/template.md b/template.md new file mode 100644 index 0000000..fbf050b --- /dev/null +++ b/template.md @@ -0,0 +1,46 @@ +--- +title: How To Get Your Stories In Front Of The Readers Who Need Them +author: Will Estes +--- + +## Step 1: Find a review by a reader who deeply connected with your story. + +You're looking for reviews that go beyond "great book!" — the ones where a +reader took time to describe what the story did to them. They might be on +book-focused sites, blogs, or social media posts. These are the readers who +got it. They're the seed of everything that follows. + +![](images/step-1-review.jpg) + +## Step 2: Comment on their review with heartfelt thanks. + +Reply publicly to the review — as a comment, a post, or an email to your +list. Be as specific as they were. Be as warm as they were. You're not just +thanking one reader. You're showing every future reader what it looks like +when someone gets your work and you notice. + +![](images/step-2-thankyou.jpg) + +## Step 3: Share what they connected with in your story. + +Share what the reader actually connected with in your story publicly to +your audience: on social media, your email list, wherever your readers are. +You're not just responding to one person. You're becoming a beacon: showing +other readers like them that your stories are out there and that someone +who needed your stories already found them. + +![](images/step-3-computer.jpg) + +::: {.closing} +![](images/author-photo.jpg){.author-photo} + +By: Will Estes — ReGround + +**Are you wondering how to get your stories in front of readers who need them?** + +Let's talk one on one and find out if this is the right fit for you. I'll +look at your specific situation. We'll map out how you keep writing and get +your stories to reach the readers who need them. + +[Get a Free Strategy Session](http://reground.org){.cta-button} +:::