---
name: etsy-review-harvester
description: Pulls 5-star Etsy reviews via API and generates UGC content templates (Pinterest pin copy, Instagram carousels, Reddit testimonial copy, email testimonials) from review quotes. Use when the user wants to harvest reviews, create UGC content, build social proof, repurpose customer reviews, or close the review-to-content loop. Outputs platform-specific templates ready for the operator to ship.
---

# Etsy Review Harvester

You pull recent positive Etsy reviews and convert them into ready-to-publish social proof content for Pinterest, Instagram, Reddit, email, and website testimonial blocks. Every successful indie shop has 30+ reviews compounding into 30+ pieces of content if harvested correctly. This skill closes that loop.

## When to invoke

- User says "harvest reviews" / "use my reviews for content" / "get UGC from reviews"
- User mentions social proof, testimonials, or review marketing
- Recurring weekly/monthly content generation request
- User wants to add a "Reviews" section to homepage, About page, or product pages

## Required environment

- `ETSY_API_KEY`, `ETSY_OAUTH_TOKEN`, `ETSY_SHOP_ID` set
- Token scope: `transactions_r` to read reviews

## Required inputs

1. **Time window** — typically last 30 or 90 days
2. **Minimum star threshold** — default 5; use 4+ if shop is young
3. **Target output platforms** — one or more of: Pinterest, Instagram, Reddit, email, website
4. **Optional: themes to emphasize** — e.g., "father-day gifts," "campaign journals," "atelier line"

## Review pull logic

1. **Pull reviews** via `GET /v3/application/shops/{shop_id}/reviews?limit=100&min_created=...`
2. **Filter:**
   - Rating ≥ threshold
   - Body text length ≥ 30 chars (one-word reviews like "great!" aren't useful)
   - Not flagged or disputed
   - Reviewer hasn't opted out of UGC use (check `is_anonymous` flag)
3. **Categorize** by:
   - **Product category** (which SKU)
   - **Buyer intent** (gift, personal, campaign use, collector)
   - **Praise theme** (quality, design, shipping, customer service, packaging)

## Quote selection criteria

A review quote is **harvestable** if it:
- Is a complete sentence
- Names a specific product attribute (paper quality, binding, foil, layout, NOT just "love it")
- Is ≤25 words for Pinterest/IG; ≤50 words for email/website
- Contains no PII (reviewer real name, address, etc. — use first name + last initial)
- Is grammatically clean (minor typos OK if quoted verbatim and clearly genuine)

If a review is great but doesn't fit format, suggest contacting the reviewer for permission to feature them.

## Output templates

### Pinterest pin (1000×1500)

```
=== PINTEREST PIN FROM REVIEW ===

Quote: "The paper quality is unreal — I've been writing in mine
for 3 months and it still feels new."
— Sarah K., verified buyer

Pin title (60 chars): What buyers say about our DnD campaign journal
Pin description (500 chars):
  "The paper quality is unreal — I've been writing in mine for 3 months
  and it still feels new." Sarah's review of the Lorekeeper Atelier.
  100yr archival paper, smyth-sewn signatures, hand-foil stamped covers.
  Built to last 3 campaigns. Shop the Atelier line at notekeepr.etsy.com.

Visual prompt:
  Layout: vertical 2:3. Background: cream paper texture. Top:
  product photo of open Lorekeeper Atelier showing pen on page.
  Middle: blockquote in serif italic with quote marks. Bottom:
  brand mark + tagline + URL.

Hashtags (Pinterest no longer prioritizes — 1-2 max):
  #DnDStationery #CampaignJournal

Target board: "Lorekeeper Reviews"
```

### Instagram carousel (3-slide)

```
=== INSTAGRAM CAROUSEL FROM REVIEW ===

Slide 1 (hook):
  Background: Atelier hero photo
  Text overlay: "What buyers say about our DnD notebook"

Slide 2 (quote):
  Background: cream parchment texture
  Text overlay (centered, serif):
    "The paper quality is unreal — I've been writing in mine for 3
    months and it still feels new."
  Attribution (bottom right, small): — Sarah K.

Slide 3 (CTA):
  Background: product flatlay
  Text overlay: "Shop the Lorekeeper Atelier line"
  Sub-text: "100yr archival paper. Smyth-sewn binding. Link in bio."

Caption:
  Sarah's review of the Lorekeeper Atelier — 3 months of D&D
  campaign notes and the paper still feels new.

  Built with:
  • 110gsm archival paper (acid-free, 100-year rating)
  • Smyth-sewn signatures (lays flat, holds up to abuse)
  • Hand-stamped foil covers
  • Made for DMs who run long campaigns

  Link in bio.

Hashtags (10-15):
  #dnd #dungeonsanddragons #dndnotebook #campaignjournal
  #dungeonmaster #ttrpg #stationery #notebook #journal #dndcommunity
  #lorekeeper #premiumstationery #dndaccessories
```

### Reddit testimonial reply (use when launching a Reddit thread)

```
=== REDDIT REPLY (use as comment, not standalone post) ===

For r/DnD or r/DMAcademy when someone asks "best notebook for DMs":

  Sharing because it actually helped me — picked up a Lorekeeper Atelier
  3 months back and it's holding up better than any Moleskine I've burned
  through. 100yr archival paper, smyth-sewn signatures so it lays flat
  during sessions. A buyer in our store reviews said it best: "The paper
  quality is unreal — I've been writing in mine for 3 months and it still
  feels new." Not affiliated beyond being a happy customer ↗ [link]

(Note: only use this if the operator actually owns the product. Don't fake
customer voice. If operator wants a non-personal version, frame as:
"I run an indie shop and one of our buyers wrote...")
```

### Email testimonial block

```
=== EMAIL TESTIMONIAL ===

For welcome series email 3 (social proof email):

  ─────────────────────────────────────────────────
  "The paper quality is unreal — I've been writing
  in mine for 3 months and it still feels new."

                              — Sarah K., verified buyer
                                 Lorekeeper Atelier owner
  ─────────────────────────────────────────────────

  (Use in HTML email — render as <blockquote> with serif font,
  cream background, gold horizontal rules above/below)
```

### Website testimonial block (Shopify section)

```
=== SHOPIFY TESTIMONIAL SECTION ===

Section type: rich text block on homepage or product page

HTML:

<blockquote class="testimonial">
  <p>"The paper quality is unreal — I've been writing in mine for 3
  months and it still feels new."</p>
  <cite>— Sarah K., verified Lorekeeper Atelier buyer</cite>
</blockquote>

Schema.org markup (add to product page for rich snippets):

<script type="application/ld+json">
{
  "@type": "Review",
  "reviewRating": {"@type": "Rating", "ratingValue": "5"},
  "author": {"@type": "Person", "name": "Sarah K."},
  "reviewBody": "The paper quality is unreal — I've been writing in mine for 3 months and it still feels new."
}
</script>
```

## Output report

```
=== REVIEW HARVEST REPORT — 2026-05-18 ===

Reviews pulled: 47 (last 90 days)
≥5-star: 41 (87% — strong baseline)
Harvestable (meet quote criteria): 19
Content generated: 19 reviews × 5 platforms = 95 pieces

By theme:
  • Paper/binding quality: 12 quotes
  • Design/aesthetic: 8 quotes
  • Gift / wow factor: 6 quotes
  • Shipping / packaging: 4 quotes
  • Customer service: 3 quotes

By SKU:
  • Lorekeeper Atelier (cream): 14 quotes
  • Lorekeeper Hero: 9 quotes
  • Digital Mega Bundle PDF: 6 quotes
  • ... (rest)

Outputs saved:
  • keepr-ops/output/reviews/pinterest-pins/ (19 pin specs)
  • keepr-ops/output/reviews/instagram/ (19 carousel scripts)
  • keepr-ops/output/reviews/reddit/ (19 reply templates)
  • keepr-ops/output/reviews/email/ (19 testimonial blocks)
  • keepr-ops/output/reviews/website/ (19 HTML blocks w/ schema)

Recommended next step:
  • Ship 3 pins to Pinterest this week (Mon/Wed/Fri)
  • Add 5 to website testimonial rotation
  • Use 2 in welcome email series
```

## Strict rules

- **Never fabricate a quote** — if no review exists, say so, don't invent one
- **Never use full last names** — first name + last initial only
- **Never include reviewer location, age, or other PII** beyond what's already public
- **Never edit a quote substantively** — typos can be silently fixed, but never add or rephrase a buyer's words
- **Always attribute as "verified buyer"** if the review is from Etsy (Etsy reviews are by definition verified)
- **If a reviewer requests removal**, log the request and exclude them from future harvests permanently

## Audit log

```json
{
  "harvest_date": "2026-05-18T14:32:11Z",
  "shop_id": "...",
  "reviews_pulled": 47,
  "harvestable": 19,
  "outputs_generated": 95,
  "platforms": ["pinterest", "instagram", "reddit", "email", "website"],
  "quotes_used": [{"review_id": "...", "platforms": [...]}]
}
```

Save to `keepr-ops/logs/etsy-review-harvest-YYYY-MM-DD.json`.

## Related skills

- `keepr-dnd-skills/dnd-pin-designer` — generates the actual Pinterest pin designs from the specs this skill outputs
- `etsy-listing-optimizer` — review themes inform which SKUs are converting best, feeds back into optimization priorities
