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/<slug>.pdf) for producing per-partnership
customized versions.
This commit is contained in:
2026-07-22 15:08:10 -04:00
commit 0ee7524bcc
11 changed files with 228 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
*.pdf
+17
View File
@@ -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
+51
View File
@@ -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/<slug>.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/<slug>.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/<slug>.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.
Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File
+97
View File
@@ -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;
}
+16
View File
@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>$title$</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="cover">
<h1 class="cover-title">$title$</h1>
$if(author)$<p class="cover-byline">By: $author$ — ReGround</p>$endif$
<img class="author-photo" src="images/author-photo.jpg" alt="">
</div>
$body$
</body>
</html>
+46
View File
@@ -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}
:::