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:
@@ -0,0 +1 @@
|
|||||||
|
*.pdf
|
||||||
@@ -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
|
||||||
@@ -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 |
@@ -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;
|
||||||
|
}
|
||||||
@@ -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
@@ -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.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
::: {.closing}
|
||||||
|
{.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}
|
||||||
|
:::
|
||||||
Reference in New Issue
Block a user