diff --git a/.gitleaksignore b/.gitleaksignore new file mode 100644 index 0000000..6d3b2be --- /dev/null +++ b/.gitleaksignore @@ -0,0 +1,2 @@ +# The IndexNow key is public by design: getpluck.io serves it at /.txt so search engines can check it. +7fb5835fe5f68d5451a9302c21d41d3d7111331a:apps/web/lib/indexnow.ts:generic-api-key:11 diff --git a/apps/web/lib/indexnow.ts b/apps/web/lib/indexnow.ts index 3d27e11..5ef50fd 100644 --- a/apps/web/lib/indexnow.ts +++ b/apps/web/lib/indexnow.ts @@ -8,7 +8,7 @@ import { localePath } from "./siteUrls"; // IndexNow (indexnow.org): a new post is announced to Bing (and Yandex, Seznam, Naver) in all ten languages as soon // as it is out, instead of waiting for a crawl. Only getpluck.io announces; the protocol checks the key against the // file of the same name at the site's root (public/.txt). -export const INDEXNOW_KEY = "2a2940bd0ceed62a1fd5c0a15b0b5836"; +export const INDEXNOW_KEY = "2a2940bd0ceed62a1fd5c0a15b0b5836"; // gitleaks:allow (public by design) const HOSTED = "https://getpluck.io"; // A post counts as new for three days from its date, and its claim lasts seven (meta's expiry), so it goes once. const NEW_FOR_MS = 3 * 86_400_000; diff --git a/docs/handover/design/AppStore1.dc.html b/docs/handover/design/AppStore1.dc.html index f72d632..9553332 100644 --- a/docs/handover/design/AppStore1.dc.html +++ b/docs/handover/design/AppStore1.dc.html @@ -2,40 +2,46 @@ -App Store · Pluck it from any app +App Store · Pluck it from any app. - +
-
-

Pluck it from any app.

-

One tap in the share sheet. The app never opens.

+
+

Pluck it from any app.

+

One tap in Share. The app stays shut.

+
FreeOpen sourceNo ads
-
-
-
-
-
modelcontextprotocol.io
-Guides · 12 min -How MCP auth actually works -

The short version is simple. The client never hands the server a password. It gets a token, scoped to what the user agreed to, and sends it with each call.

+
+
+
9:41
+
+
Weeknight bowls
+ + + + + + + + +15-minute chilli oil noodles +

Boil the noodles. While they cook, pour hot oil over garlic, chilli flakes and sesame.

-
-
+
+
-
Plucked.How MCP auth actually works
-
Tags and list -
mcppostgres+ Best MCP reading
+
Plucked.15-minute chilli oil noodles
+
Tags and list
recipesweeknight+ Dinners to try
Add a note
Done
-
-
-
+
+
diff --git a/docs/handover/design/AppStore2.dc.html b/docs/handover/design/AppStore2.dc.html index 3652e48..a035321 100644 --- a/docs/handover/design/AppStore2.dc.html +++ b/docs/handover/design/AppStore2.dc.html @@ -2,24 +2,50 @@ -App Store · Sort it later +App Store · Sort it later. - +
-
-

Sort it later.

-

Swipe right for Later, left for the Archive.

+
+

Sort it later.

+

Right for Later. Left for the Archive.

+
-
-
-
-
+
+
+
9:41
InboxAB
18 to triage
AllLinksNotesTodosThings
Later +
The surprising science of habitsa longread · 14 min
+
+
15-minute chilli oil noodlesTikTok · 0:58
+
2h
+
+
Lisbon in three days.pdfPDF · 12 pages
+
5h
+
+
Green kitchen, oak shelvesImage · from Photos
+
1d
+
+
Ask Dad about the boatNote · by you
+
1d
+
+
Book the dentistTodo · due Fri
+
Tue
+
+
Linen duvet cover, kingThing · €89
+
Tue
+
+
Guitar for grown-ups, lesson oneyoutube.com · 22 min
+
Mon
+
+
How to actually resta newsletter · 7 min
+
Sun
InboxLaterSearchLists
+
diff --git a/docs/handover/design/AppStore3.dc.html b/docs/handover/design/AppStore3.dc.html index de77f71..79d9cf7 100644 --- a/docs/handover/design/AppStore3.dc.html +++ b/docs/handover/design/AppStore3.dc.html @@ -2,24 +2,34 @@ -App Store · The page, not just the link +App Store · The page, not just the link. - +
-
-

The page, not just the link.

-

Read it anywhere, even when the site is gone.

+
+

The page, not just the link.

+

Still here when the site isn't.

+
-
-
-
-
+
+
+
9:41
Inbox42% · 8 min left
+
+a longread · 14 min · plucked Tuesday +The surprising science of habits +By Maeve Kelly +

Most of what you do today, you did yesterday. Not because you chose it again, but because the choice was made long ago and quietly stopped being a choice.

+

The trick is not more willpower. It is fewer decisions: put the guitar on its stand, not in its case.

+

Small changes to the room beat big promises to yourself. The runners by the door. The fruit at eye level. The phone in another room after ten.

+
+
LaterArchiveTagsListShareOriginal
+
diff --git a/docs/handover/design/AppStore4.dc.html b/docs/handover/design/AppStore4.dc.html index 744b39d..1ddbbc4 100644 --- a/docs/handover/design/AppStore4.dc.html +++ b/docs/handover/design/AppStore4.dc.html @@ -2,24 +2,28 @@ -App Store · Lists are what you’re making +App Store · Lists are what you're making. - +
-
-

Lists are what you’re making.

-

A trip, a talk, a kitchen. Private until you say so.

+
+

Lists are what you're making.

+

A trip. A kitchen. A reading list for a friend.

+
-
-
-
-
+
+
+
9:41
ListsPublic · Share
+
Lisbon, MayFour days. Eat first, walk it off after.
travelfoodmay
2 of 6 ticked
+
Pastéis de Belém, go earlyThe queue is shorter before ten.
Tram 28, before 9Board at Martim Moniz, sit on the left.
LX Factory on SundayLer Devagar bookshop is in there.
Sintra day tripTrain from Rossio, 40 minutes.
Time Out MarketFor when nobody can decide.
Fado in AlfamaBook a table, not a show.
+Add
InboxLaterSearchLists
+
diff --git a/docs/handover/design/AppStore5.dc.html b/docs/handover/design/AppStore5.dc.html index 4b41e82..1ef7a83 100644 --- a/docs/handover/design/AppStore5.dc.html +++ b/docs/handover/design/AppStore5.dc.html @@ -2,24 +2,28 @@ -App Store · Find it in a second +App Store · Gone. Well, archived. - + -
-
-

Find it in a second.

-

Every word on the page, your notes and your tags.

+
+
+

Gone. Well, archived.

+

Untouched for 30 days? To the Archive. Nothing is deleted.

+
-
-
-
-
+
+
+
9:41
Archive
+
Nothing here is deleted.Untouched for 30 days moves here. Search still finds it, and Restore puts it back.
+
Ten things to do with leftover riceexpired after 30 days · 21 Oct
Restore
Beginner stretches for runnersexpired after 30 days · 19 Oct
Restore
Standing desk, oak toparchived by you · 12 Oct
Restore
A short history of the bicycleexpired after 30 days · 8 Oct
Restore
Garden plan, spring.pdfarchived by you · 2 Oct
Restore
Renew the passportdone · 30 Sep
Restore
+
InboxLaterSearchLists
+
diff --git a/docs/handover/design/AppStore6.dc.html b/docs/handover/design/AppStore6.dc.html new file mode 100644 index 0000000..d26d528 --- /dev/null +++ b/docs/handover/design/AppStore6.dc.html @@ -0,0 +1,37 @@ + + + + +App Store · There's no AI in here. + + + + + + + + +
+
+

There's no AI in here.

+

Bring your own. It can't delete a thing.

+ +
+
+
+
9:41
Settings
+
AI tools

Pluck has no AI inside. Paste this link into the AI tool you already use.

+
CONNECTOR LINK
getpluck.io/mcpCopy
+
CONNECTED
Your AI toollast call 2 min ago
Reads and organises
Disconnect
+
WHAT IT CHANGED THIS WEEK
Tagged 14 itemsby AIMade the List “Lisbon, May”by AI
Remove all of it
+

It changes things only when you ask. It can never delete anything.

+
+
+
+
+
+ + + diff --git a/docs/handover/design/AppStore7.dc.html b/docs/handover/design/AppStore7.dc.html new file mode 100644 index 0000000..08c9381 --- /dev/null +++ b/docs/handover/design/AppStore7.dc.html @@ -0,0 +1,36 @@ + + + + +App Store · Free. Open. Yours. + + + + + + + + +
+
+

Free. Open. Yours.

+

No ads. Export it all. Run your own.

+ +
+
+
+
9:41
Settings
+
YOUR SERVER
getpluck.ioChange
Or run your ownOpen source
+
YOUR LIBRARY
Export everythingJSON and Markdown
Expiry30 days, to the Archive
+
PRIVACY
Share usage with Pluck
AdsNone. Ever.
+
ACCOUNT
Delete everything. No, really.
+
+
+
+
+
+ + + diff --git a/docs/handover/design/AppStoreListing.dc.html b/docs/handover/design/AppStoreListing.dc.html new file mode 100644 index 0000000..69e5f87 --- /dev/null +++ b/docs/handover/design/AppStoreListing.dc.html @@ -0,0 +1,37 @@ + + + + +Pluck · App Store listing + + + + + + + + +
+
+

App Store listing.

+

Paste each field into App Store Connect as it is. Every count is checked against Apple's limit. The same copy is the English source in docs/store/en.json, so the nine translations can follow it.

+
+
+

Product page.

Name17 / 30 characters
Pluck: Read Later
"Read Later" is what people search for. Words here are indexed, so they stay out of Keywords.
Subtitle24 / 30 characters
Pluck it. Sort it later.
Promotional text132 / 170 characters
One tap in the share sheet and it's yours: the page, not just the link. Sort it later by hand, or ask your AI. Free and open source.
Can change any time without a review. Use it for launch week news.
Keywords97 / 100 bytes
reading list,bookmarks,articles,offline,save links,highlights,notes,recipes,open source,mcp,inbox
Commas, no spaces. No "pluck" (the name is already indexed), no other apps' names.
Description1482 / 4000 characters
Pluck it from any app. Tap Share, then Pluck. Pluck keeps the page as you saw it, and the app doesn't even open.

Sort it later. Your Inbox holds everything you plucked: a recipe, a longread, a travel guide, the lamp you keep meaning to buy. Swipe right for Later, left for the Archive. Tag it, put it on a List, or tick off a Todo.

The page, not just the link. Pluck keeps the text of every page, so you can read it in a clean reader, offline, long after the site has changed. Highlight the good bits.

Lists are what you're making. A trip, a kitchen, a reading list for a friend. Put things in order, write a note on each, tick off what's done, and share a List when you want to.

Find it in a second. Search covers titles, notes, tags and the full text of every page.

Nothing is lost. Things you leave untouched for 30 days move to the Archive. Nothing is deleted. You pick how long, or switch it off.

Bring your own AI. There's no AI in here. Connect the AI tools you already use, like Claude, ChatGPT or Cursor, and ask what you plucked this week, or have it tidy your Inbox while you watch. It marks everything it touched, and it can't delete a thing.

Free and open source. Use getpluck.io, or run Pluck on your own server. Export everything in one go, any time. No ads. Analytics only if you say yes.

Coming from Pocket or Omnivore? Bring your old library across in one go.

Pluck works on iPhone, in Chrome, on the web and by email. Your library is the same everywhere.
+

Details.

Support URL
https://getpluck.io/support
Marketing URL
https://getpluck.io
Privacy policy URL
https://getpluck.io/privacy
Category
Productivity, then News
Productivity is where read-later apps live. News as the second gets Pluck into the reading lists editors build.
Copyright
2026 Codú Limited
Age rating
4+
Check this against the age rating questions in App Store Connect. Public Lists are pages people make, and each has a Report link.
+
Screenshots, in this order
1Pluck it from any app. One tap in Share. The app stays shut.
2Sort it later. Right for Later. Left for the Archive.
3The page, not just the link. Still here when the site isn't.
4Lists are what you're making. A trip. A kitchen. A reading list for a friend.
5Gone. Well, archived. Untouched for 30 days? To the Archive. Nothing is deleted.
6There's no AI in here. Bring your own. It can't delete a thing.
7Free. Open. Yours. No ads. Export it all. Run your own.
Upload the 6.9 inch set (1320 × 2868). If App Store Connect still asks for 6.3 inch, upload the 1206 × 2622 set too. No iPad set: the app is iPhone only.
+
App previewLeave it empty for launch. A preview must be a screen recording of the app itself, 886 × 1920, 15 to 30 seconds. Record one from the Simulator with the demo library once the sample content is everyday, not developer reading.
+
+
+
+

Featuring nomination.

+

App Store Connect, Pluck, Featuring, Nominations, Create Nomination. Send it at least three weeks before launch day. You can't change the type or related apps after you send it.

Nomination name
Pluck for iPhone, launch
Type
App Launch
Detailed description
Pluck is a read-it-later app for everything, not just articles: a recipe from TikTok, a longread, a travel PDF, a lamp to buy, a note to self. You pluck it from the share sheet in one tap and the app never opens. Later, you sort it by hand, or ask the AI tool you already use, because Pluck has no AI inside. It connects to Claude, ChatGPT, Cursor and others over MCP, an open standard, and that AI can never delete anything. Things you leave alone move to the Archive after 30 days. Nothing is deleted. Pluck is free and open source, so it can't vanish the way Pocket and Omnivore did.
What is unique
A fresh take on a familiar category. Read-it-later apps either nag you or quietly delete things. Pluck does neither: untouched items go to an Archive you can search, and the share sheet saves in place without opening the app. There's no AI in the app. People bring their own AI, and every change it makes is marked and can be undone in one tap. The whole app is open source, and anyone can run their own server.
Accessibility
Dynamic Type up to the largest sizes, checked in the Simulator: rows grow and nothing clips. VoiceOver labels on the controls and the kind glyphs. Light and dark mode throughout. Animations respect Reduce Motion.
Localization
English, German, French, Spanish, Italian, Dutch, Portuguese (Brazil), Japanese, Korean and Simplified Chinese at launch.
About the team
Made in Ireland by Codú, a coding community of about 10,000 developers. Built in the open.
Supplemental URLs (up to 5)
[TESTFLIGHT PUBLIC LINK]
https://getpluck.io
https://getpluck.io/connect
https://getpluck.io/open-source
https://github.com/codu-code/pluck
Add the TestFlight public link first. The repo link only works once it is public.
+

Launch posts.

For the promo video. Attach the MP4 natively rather than linking it: both feeds autoplay it muted, and the captions carry it.

X199 / 280 characters
Pocket shut down. Omnivore shut down.

So we made Pluck. Tap Share and it's plucked. Sort it later, or ask your AI. Nothing is deleted.

Free and open source. iPhone, Chrome and the web.

getpluck.io
LinkedIn585 / 3000 characters
Every read-it-later app I used either nagged me or shut down.

So we built Pluck. You find something good, a recipe, a longread, a trip, a lamp for the kitchen. You tap Share and it's plucked. The app doesn't even open.

Then you sort it later. Or you don't. Things you leave alone move to the Archive after 30 days. Nothing is deleted.

There's no AI inside Pluck. You bring your own: Claude, ChatGPT, Cursor, whatever you use. One link, and you can ask "plan Lisbon from what I plucked".

It's free and open source, so it can't vanish on you.

iPhone, Chrome and the web: getpluck.io
+
+
+
+ + + diff --git a/docs/handover/design/Promo.dc.html b/docs/handover/design/Promo.dc.html new file mode 100644 index 0000000..5089a72 --- /dev/null +++ b/docs/handover/design/Promo.dc.html @@ -0,0 +1,187 @@ + + + + +Pluck · Promo video + + + + + + + + +
+
+

Promo, twenty seconds.

+

For LinkedIn and X. 1080 × 1080, 30 fps, no sound needed: both feeds autoplay muted, so the captions carry the story. The first frame already says what it is, because X shows it as the thumbnail. Live below, the same CSS that was recorded.

+
+
+
Found something good.A recipe. A longread. A kitchen. A trip.
+
+ +15-minute chilli oil noodlesTikTok · 0:58
+ +The surprising science of habitsa longread · 14 min
+ +Lisbon in three days.pdfPDF · 12 pages
+ +Linen duvet cover, kingThing · €89
+ +Green kitchen, oak shelvesImage · from Photos
+
Pluck it.One tap in Share, from any app.
+
Sort it later.Or don't. We won't nag.
+
Ask your AI.Whichever one you use. Pluck has none inside.
+
+
+
+
9:41
+
+
Weeknight bowls
+ + + + + + + + +15-minute chilli oil noodles +

Boil the noodles. While they cook, pour hot oil over garlic, chilli flakes and sesame. Toss, then eat standing up.

+
+
+ + + +
+
+
+ +
Plucked.15-minute chilli oil noodles
+
Tags and list
recipesweeknight+ Dinners to try
+
Done
+
9:41
InboxAB
18 to triage
Later +
15-minute chilli oil noodlesTikTok · 0:58 · recipes
+
+
The surprising science of habitsa longread · 14 min
+
1h
+
+
Lisbon in three days.pdfPDF · 12 pages
+
5h
+
+
Green kitchen, oak shelvesImage · from Photos
+
1d
+
+
Ask Dad about the boatNote · by you
+
1d
+
+
Book the dentistTodo · due Fri
+
Tue
+
+
Linen duvet cover, kingThing · €89
+
Tue
+
+
Guitar for grown-ups, lesson oneyoutube.com · 22 min
+
Mon
+
+
How to actually resta newsletter · 7 min
+
Sun
InboxLaterSearchLists
+
+
+
+
+
+
+
+
Chat
+
+
Plan Lisbon from what I plucked.
+pluck · search_items, create_list +Six things, best first. It's in your Lists: +
+
Lisbon, Mayby AI
+
1. Pastéis de Belém, go early2. Tram 28, before 93. LX Factory on Sundayand three more
+
+
+
+
+pluck +Pluck it. Sort it later. +Free and open source. iPhone, Chrome and the web. +getpluck.io +
+
+
0.0–3.2 sFound something good.Five everyday finds rise in, 0.25 s apart, then lift away.
3.2–7.6 sPluck it.The phone rises. A tap on Share. The sheet slides up, the tick lands, "recipes" gets tagged.
7.6–11.6 sSort it later.The Inbox. The top row swipes right to Later and folds away.
11.6–15.7 sAsk your AI.A plain chat app, no one's brand. The question, the tool call, and Pluck's List comes back marked "by AI".
15.7–20 sEnd cardThe wordmark, "Pluck it. Sort it later.", what it is, and getpluck.io. Held long enough to read.
+

Every move eases out on cubic-bezier(0.16, 1, 0.3, 1). No bounce, no glow. Re-record with the frame script: it sets --at per frame and ffmpeg joins 600 frames into H.264.

+
+
+ + + diff --git a/docs/handover/design/canvas.json b/docs/handover/design/canvas.json index 510ee82..1fa25cb 100644 --- a/docs/handover/design/canvas.json +++ b/docs/handover/design/canvas.json @@ -307,42 +307,70 @@ "y": 12900, "w": 1320, "h": 2868, - "title": "App Store · screenshot 1 of 5 (6.9 in)" + "title": "App Store · 1 of 7 · 1320 × 2868" }, "AppStore2.dc.html": { "x": 1400, "y": 12900, "w": 1320, "h": 2868, - "title": "App Store · screenshot 2 of 5 (6.9 in)" + "title": "App Store · 2 of 7 · 1320 × 2868" }, "AppStore3.dc.html": { "x": 2800, "y": 12900, "w": 1320, "h": 2868, - "title": "App Store · screenshot 3 of 5 (6.9 in)" + "title": "App Store · 3 of 7 · 1320 × 2868" }, "AppStore4.dc.html": { "x": 4200, "y": 12900, "w": 1320, "h": 2868, - "title": "App Store · screenshot 4 of 5 (6.9 in)" + "title": "App Store · 4 of 7 · 1320 × 2868" }, "AppStore5.dc.html": { "x": 5600, "y": 12900, "w": 1320, "h": 2868, - "title": "App Store · screenshot 5 of 5 (6.9 in)" + "title": "App Store · 5 of 7 · 1320 × 2868" }, "ConnectLoop.dc.html": { - "x": 7200, + "x": 9900, "y": 12900, "w": 1440, "h": 3400, "title": "Motion · Connect your AI loop, 10 s" + }, + "AppStore6.dc.html": { + "x": 7000, + "y": 12900, + "w": 1320, + "h": 2868, + "title": "App Store · 6 of 7 · 1320 × 2868" + }, + "AppStore7.dc.html": { + "x": 8400, + "y": 12900, + "w": 1320, + "h": 2868, + "title": "App Store · 7 of 7 · 1320 × 2868" + }, + "AppStoreListing.dc.html": { + "x": 0, + "y": 16100, + "w": 1440, + "h": 3250, + "title": "App Store · listing, featuring, posts" + }, + "Promo.dc.html": { + "x": 1600, + "y": 16100, + "w": 1440, + "h": 1900, + "title": "Promo · 20 s for LinkedIn and X" } }, "createdOnFiles": { @@ -404,8 +432,8 @@ }, "t-appstore": { "kind": "title1", - "maxW": 6920, - "text": "App Store screenshots, 1320 × 2868", + "maxW": 9720, + "text": "App Store, 1320 × 2868", "w": 240, "x": 0, "y": 12600 @@ -415,8 +443,16 @@ "maxW": 1440, "text": "Motion", "w": 240, - "x": 7200, + "x": 9900, "y": 12600 + }, + "t-launch": { + "kind": "title1", + "maxW": 3040, + "text": "Launch: listing, nomination, promo", + "w": 240, + "x": 0, + "y": 15800 } }, "order": [ @@ -462,7 +498,11 @@ "AppStore3.dc.html", "AppStore4.dc.html", "AppStore5.dc.html", - "ConnectLoop.dc.html" + "ConnectLoop.dc.html", + "AppStore6.dc.html", + "AppStore7.dc.html", + "AppStoreListing.dc.html", + "Promo.dc.html" ], "pages": [], "title": "Pluck — Product and Design" diff --git a/docs/store/README.md b/docs/store/README.md index 5ca6462..07f4c5c 100644 --- a/docs/store/README.md +++ b/docs/store/README.md @@ -1,3 +1,3 @@ -# Store listings in other languages +# Store listings -The App Store and Chrome Web Store listing text, translated: one file per language, each with `appStore`, `screenshots` (the captions on the App Store screenshots) and `chrome`. Paste them into the language's listing in App Store Connect and the Chrome Web Store dashboard. English lives in those dashboards and in `apps/extension/store/listing.md`. The glossary for each language is in `docs/i18n/`. +The App Store and Chrome Web Store listing text, translated: one file per language, each with `appStore`, `screenshots` (the captions on the App Store screenshots) and `chrome`. Paste them into the language's listing in App Store Connect and the Chrome Web Store dashboard. English is `en.json` (the source the others follow) and `apps/extension/store/listing.md`. `app-store.md` has the iPhone launch: field counts, screenshots, the featuring nomination, the promo video and the launch posts. The glossary for each language is in `docs/i18n/`. diff --git a/docs/store/app-store.md b/docs/store/app-store.md new file mode 100644 index 0000000..e073d4b --- /dev/null +++ b/docs/store/app-store.md @@ -0,0 +1,86 @@ +# App Store launch + +Everything for the iPhone listing, the featuring nomination and the launch posts. The English copy lives in `en.json` (the source the nine translations follow) and on the design canvas as the `AppStoreListing` board. Research behind it: the Pluck App Store Research page, 26 October 2026. + +## Product page + +Paste from `en.json`. Counts against Apple's limits: + +| Field | Count | Limit | +|---|---|---| +| name | 17 | 30 characters | +| subtitle | 24 | 30 characters | +| promotionalText | 132 | 170 characters | +| description | 1482 | 4000 characters | +| keywords | 97 | 100 bytes | + +Support URL https://getpluck.io/support, marketing URL https://getpluck.io, privacy policy https://getpluck.io/privacy. Category Productivity, then News. Copyright 2026 Codú Limited. + +## Screenshots + +`screenshots/6.9in` (1320 × 2868) and `screenshots/6.3in` (1206 × 2622), PNG with no alpha, in upload order. Drawn on the canvas as `AppStore1` to `AppStore7`, with an everyday sample library rather than developer reading. Frame 5 is dark mode. + +Before launch, swap each drawn phone screen for a real Simulator capture of the same library (`scripts/demo-seed.mjs` with the sample Items in the table below), so the listing shows the app exactly as it ships. + +| Kind | Sample Item | +|---|---| +| Read | The surprising science of habits (a longread, 14 min); How to actually rest (a newsletter) | +| Watch | 15-minute chilli oil noodles (TikTok, 0:58); Guitar for grown-ups, lesson one (YouTube, 22 min) | +| PDF | Lisbon in three days.pdf (12 pages) | +| Image | Green kitchen, oak shelves | +| Note | Ask Dad about the boat | +| Todo | Book the dentist, due Friday | +| Thing | Linen duvet cover, king, €89 | +| List | Lisbon, May: six places with a note each | + +No app preview video for launch. A preview must be a screen recording of the app itself (886 × 1920, 15 to 30 s). + +## Featuring nomination + +App Store Connect, Pluck, Featuring, Nominations, Create Nomination. Send it at least three weeks before launch. The type and related apps can't change after it is sent. + +- **Name:** Pluck for iPhone, launch +- **Type:** App Launch +- **Description:** Pluck is a read-it-later app for everything, not just articles: a recipe from TikTok, a longread, a travel PDF, a lamp to buy, a note to self. You pluck it from the share sheet in one tap and the app never opens. Later, you sort it by hand, or ask the AI tool you already use, because Pluck has no AI inside. It connects to Claude, ChatGPT, Cursor and others over MCP, an open standard, and that AI can never delete anything. Things you leave alone move to the Archive after 30 days. Nothing is deleted. Pluck is free and open source, so it can't vanish the way Pocket and Omnivore did. +- **What is unique:** A fresh take on a familiar category. Read-it-later apps either nag you or quietly delete things. Pluck does neither: untouched items go to an Archive you can search, and the share sheet saves in place without opening the app. There's no AI in the app. People bring their own AI, and every change it makes is marked and can be undone in one tap. The whole app is open source, and anyone can run their own server. +- **Accessibility:** Dynamic Type up to the largest sizes, checked in the Simulator: rows grow and nothing clips. VoiceOver labels on the controls and the kind glyphs. Light and dark mode throughout. Animations respect Reduce Motion. +- **Localization:** English, German, French, Spanish, Italian, Dutch, Portuguese (Brazil), Japanese, Korean and Simplified Chinese at launch. +- **About the team:** Made in Ireland by Codú, a coding community of about 10,000 developers. Built in the open. +- **Supplemental URLs:** [TESTFLIGHT PUBLIC LINK], https://getpluck.io, https://getpluck.io/connect, https://getpluck.io/open-source, https://github.com/codu-code/pluck. + +## Promo video and posts + +`promo/pluck-promo-1080.mp4`: 20 s, 1080 × 1080, 30 fps, H.264. Upload it natively to LinkedIn and X (both autoplay muted, so the captions carry it). Source: `promo/promo.html`, pure CSS. Re-record with `node scripts/record-promo.mjs`. + +**X** + +``` +Pocket shut down. Omnivore shut down. + +So we made Pluck. Tap Share and it's plucked. Sort it later, or ask your AI. Nothing is deleted. + +Free and open source. iPhone, Chrome and the web. + +getpluck.io +``` + +**LinkedIn** + +``` +Every read-it-later app I used either nagged me or shut down. + +So we built Pluck. You find something good, a recipe, a longread, a trip, a lamp for the kitchen. You tap Share and it's plucked. The app doesn't even open. + +Then you sort it later. Or you don't. Things you leave alone move to the Archive after 30 days. Nothing is deleted. + +There's no AI inside Pluck. You bring your own: Claude, ChatGPT, Cursor, whatever you use. One link, and you can ask "plan Lisbon from what I plucked". + +It's free and open source, so it can't vanish on you. + +iPhone, Chrome and the web: getpluck.io +``` + +## Still to do + +- Re-translate the nine `docs/store/*.json` listings from `en.json`: the screenshots went from five frames to seven, and the description changed. +- Add the TestFlight public link to the nomination. diff --git a/docs/store/en.json b/docs/store/en.json new file mode 100644 index 0000000..ec5bc9a --- /dev/null +++ b/docs/store/en.json @@ -0,0 +1,53 @@ +{ + "appStore": { + "name": "Pluck: Read Later", + "subtitle": "Pluck it. Sort it later.", + "promotionalText": "One tap in the share sheet and it's yours: the page, not just the link. Sort it later by hand, or ask your AI. Free and open source.", + "description": "Pluck it from any app. Tap Share, then Pluck. Pluck keeps the page as you saw it, and the app doesn't even open.\n\nSort it later. Your Inbox holds everything you plucked: a recipe, a longread, a travel guide, the lamp you keep meaning to buy. Swipe right for Later, left for the Archive. Tag it, put it on a List, or tick off a Todo.\n\nThe page, not just the link. Pluck keeps the text of every page, so you can read it in a clean reader, offline, long after the site has changed. Highlight the good bits.\n\nLists are what you're making. A trip, a kitchen, a reading list for a friend. Put things in order, write a note on each, tick off what's done, and share a List when you want to.\n\nFind it in a second. Search covers titles, notes, tags and the full text of every page.\n\nNothing is lost. Things you leave untouched for 30 days move to the Archive. Nothing is deleted. You pick how long, or switch it off.\n\nBring your own AI. There's no AI in here. Connect the AI tools you already use, like Claude, ChatGPT or Cursor, and ask what you plucked this week, or have it tidy your Inbox while you watch. It marks everything it touched, and it can't delete a thing.\n\nFree and open source. Use getpluck.io, or run Pluck on your own server. Export everything in one go, any time. No ads. Analytics only if you say yes.\n\nComing from Pocket or Omnivore? Bring your old library across in one go.\n\nPluck works on iPhone, in Chrome, on the web and by email. Your library is the same everywhere.", + "keywords": "reading list,bookmarks,articles,offline,save links,highlights,notes,recipes,open source,mcp,inbox" + }, + "appStoreDetails": { + "supportUrl": "https://getpluck.io/support", + "marketingUrl": "https://getpluck.io", + "privacyPolicyUrl": "https://getpluck.io/privacy", + "category": { + "primary": "Productivity", + "secondary": "News" + }, + "copyright": "2026 Codú Limited" + }, + "screenshots": [ + { + "title": "Pluck it from any app.", + "subtitle": "One tap in Share. The app stays shut." + }, + { + "title": "Sort it later.", + "subtitle": "Right for Later. Left for the Archive." + }, + { + "title": "The page, not just the link.", + "subtitle": "Still here when the site isn't." + }, + { + "title": "Lists are what you're making.", + "subtitle": "A trip. A kitchen. A reading list for a friend." + }, + { + "title": "Gone. Well, archived.", + "subtitle": "Untouched for 30 days? To the Archive. Nothing is deleted." + }, + { + "title": "There's no AI in here.", + "subtitle": "Bring your own. It can't delete a thing." + }, + { + "title": "Free. Open. Yours.", + "subtitle": "No ads. Export it all. Run your own." + } + ], + "chrome": { + "summary": "Pluck the page you are on into your Pluck library, with one click.", + "description": "Pluck the page you are on. One click keeps it in your Pluck library, with the text as you see it, so you can read it later, find it again, or ask your AI about it.\n\nClick Pluck, or press Alt+Shift+P. \"Plucked\" appears with the title, and the popup lets you add a tag, change the Kind, put it on a List, write a note, or send it straight to Later or the Archive.\n\nRight-click a link, an image or the page to pluck it without opening it. Select a sentence and press Alt+Shift+H to keep it as a highlight. Pluck all your tabs into a new List at once.\n\nPages behind your logins are kept as your browser rendered them. YouTube videos come with their transcript, so search and your AI tools can read what was said.\n\nThe Pluck icon fills in on pages already in your library, so you can see at a glance what you have plucked.\n\nNo connection? Plucks wait on your computer and go when you are back online.\n\nPluck is open source. Use getpluck.io, or build the extension for a server you run yourself. There is no AI inside Pluck: you connect the AI tools you already use, if you want to.\n\nNeeds a free Pluck account at https://getpluck.io." + } +} diff --git a/docs/store/promo/pluck-promo-1080.mp4 b/docs/store/promo/pluck-promo-1080.mp4 new file mode 100644 index 0000000..9705813 Binary files /dev/null and b/docs/store/promo/pluck-promo-1080.mp4 differ diff --git a/docs/store/promo/promo.html b/docs/store/promo/promo.html new file mode 100644 index 0000000..2f932ff --- /dev/null +++ b/docs/store/promo/promo.html @@ -0,0 +1,185 @@ + + + + + +Pluck Promo + + + + +
+
+
Found something good.A recipe. A longread. A kitchen. A trip.
+
+ +15-minute chilli oil noodlesTikTok · 0:58
+ +The surprising science of habitsa longread · 14 min
+ +Lisbon in three days.pdfPDF · 12 pages
+ +Linen duvet cover, kingThing · €89
+ +Green kitchen, oak shelvesImage · from Photos
+
Pluck it.One tap in Share, from any app.
+
Sort it later.Or don't. We won't nag.
+
Ask your AI.Whichever one you use. Pluck has none inside.
+
+
+
+
9:41
+
+
Weeknight bowls
+ + + + + + + + +15-minute chilli oil noodles +

Boil the noodles. While they cook, pour hot oil over garlic, chilli flakes and sesame. Toss, then eat standing up.

+
+
+ + + +
+
+
+ +
Plucked.15-minute chilli oil noodles
+
Tags and list
recipesweeknight+ Dinners to try
+
Done
+
9:41
InboxAB
18 to triage
Later +
15-minute chilli oil noodlesTikTok · 0:58 · recipes
+
+
The surprising science of habitsa longread · 14 min
+
1h
+
+
Lisbon in three days.pdfPDF · 12 pages
+
5h
+
+
Green kitchen, oak shelvesImage · from Photos
+
1d
+
+
Ask Dad about the boatNote · by you
+
1d
+
+
Book the dentistTodo · due Fri
+
Tue
+
+
Linen duvet cover, kingThing · €89
+
Tue
+
+
Guitar for grown-ups, lesson oneyoutube.com · 22 min
+
Mon
+
+
How to actually resta newsletter · 7 min
+
Sun
InboxLaterSearchLists
+
+
+
+
+
+
+
+
Chat
+
+
Plan Lisbon from what I plucked.
+pluck · search_items, create_list +Six things, best first. It's in your Lists: +
+
Lisbon, Mayby AI
+
1. Pastéis de Belém, go early2. Tram 28, before 93. LX Factory on Sundayand three more
+
+
+
+
+pluck +Pluck it. Sort it later. +Free and open source. iPhone, Chrome and the web. +getpluck.io +
+
+
+ + + diff --git a/docs/store/screenshots/6.3in/1.png b/docs/store/screenshots/6.3in/1.png new file mode 100644 index 0000000..cc9fb75 Binary files /dev/null and b/docs/store/screenshots/6.3in/1.png differ diff --git a/docs/store/screenshots/6.3in/2.png b/docs/store/screenshots/6.3in/2.png new file mode 100644 index 0000000..53f07ae Binary files /dev/null and b/docs/store/screenshots/6.3in/2.png differ diff --git a/docs/store/screenshots/6.3in/3.png b/docs/store/screenshots/6.3in/3.png new file mode 100644 index 0000000..5d8de77 Binary files /dev/null and b/docs/store/screenshots/6.3in/3.png differ diff --git a/docs/store/screenshots/6.3in/4.png b/docs/store/screenshots/6.3in/4.png new file mode 100644 index 0000000..83796f7 Binary files /dev/null and b/docs/store/screenshots/6.3in/4.png differ diff --git a/docs/store/screenshots/6.3in/5.png b/docs/store/screenshots/6.3in/5.png new file mode 100644 index 0000000..bc5eebe Binary files /dev/null and b/docs/store/screenshots/6.3in/5.png differ diff --git a/docs/store/screenshots/6.3in/6.png b/docs/store/screenshots/6.3in/6.png new file mode 100644 index 0000000..1539a55 Binary files /dev/null and b/docs/store/screenshots/6.3in/6.png differ diff --git a/docs/store/screenshots/6.3in/7.png b/docs/store/screenshots/6.3in/7.png new file mode 100644 index 0000000..fcde16b Binary files /dev/null and b/docs/store/screenshots/6.3in/7.png differ diff --git a/docs/store/screenshots/6.9in/1.png b/docs/store/screenshots/6.9in/1.png new file mode 100644 index 0000000..43ad42a Binary files /dev/null and b/docs/store/screenshots/6.9in/1.png differ diff --git a/docs/store/screenshots/6.9in/2.png b/docs/store/screenshots/6.9in/2.png new file mode 100644 index 0000000..be2f04a Binary files /dev/null and b/docs/store/screenshots/6.9in/2.png differ diff --git a/docs/store/screenshots/6.9in/3.png b/docs/store/screenshots/6.9in/3.png new file mode 100644 index 0000000..55430db Binary files /dev/null and b/docs/store/screenshots/6.9in/3.png differ diff --git a/docs/store/screenshots/6.9in/4.png b/docs/store/screenshots/6.9in/4.png new file mode 100644 index 0000000..b3b28ca Binary files /dev/null and b/docs/store/screenshots/6.9in/4.png differ diff --git a/docs/store/screenshots/6.9in/5.png b/docs/store/screenshots/6.9in/5.png new file mode 100644 index 0000000..23820d2 Binary files /dev/null and b/docs/store/screenshots/6.9in/5.png differ diff --git a/docs/store/screenshots/6.9in/6.png b/docs/store/screenshots/6.9in/6.png new file mode 100644 index 0000000..0b68510 Binary files /dev/null and b/docs/store/screenshots/6.9in/6.png differ diff --git a/docs/store/screenshots/6.9in/7.png b/docs/store/screenshots/6.9in/7.png new file mode 100644 index 0000000..279f8d1 Binary files /dev/null and b/docs/store/screenshots/6.9in/7.png differ diff --git a/scripts/record-promo.mjs b/scripts/record-promo.mjs new file mode 100644 index 0000000..8cdc9af --- /dev/null +++ b/scripts/record-promo.mjs @@ -0,0 +1,34 @@ +// Records the 20-second promo (docs/store/promo/promo.html) to docs/store/promo/pluck-promo-1080.mp4. +// Usage: node scripts/record-promo.mjs (needs the Playwright Chromium and ffmpeg; Google Fonts must be reachable, +// or Fredoka, Geist, Geist Mono and Source Serif 4 installed locally) +import { mkdirSync, rmSync } from "node:fs"; +import { execFileSync } from "node:child_process"; +import { dirname, join } from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import { chromium } from "@playwright/test"; + +const root = join(dirname(fileURLToPath(import.meta.url)), ".."); +const page = pathToFileURL(join(root, "docs/store/promo/promo.html")).href; +const out = join(root, "test-results/promo"); +const FPS = 30, LENGTH = 20_000; +rmSync(out, { recursive: true, force: true }); +mkdirSync(out, { recursive: true }); + +const browser = await chromium.launch(); +const tab = await browser.newPage({ viewport: { width: 1080, height: 1080 } }); +await tab.goto(`${page}?t=0`); +await tab.evaluate(() => document.fonts.ready); +// Every animation reads --at as its delay, paused: one frame per step, no timing drift. +for (let i = 0; i < (LENGTH / 1000) * FPS; i++) { + await tab.evaluate((t) => { + const fit = document.getElementById("fit"); + fit.style.setProperty("--at", `-${t / 1000}s`); + fit.style.setProperty("--play", "paused"); + }, (i * 1000) / FPS); + await tab.screenshot({ path: join(out, `f${String(i).padStart(4, "0")}.png`) }); +} +await browser.close(); + +execFileSync("ffmpeg", ["-y", "-framerate", String(FPS), "-i", join(out, "f%04d.png"), "-c:v", "libx264", "-preset", "veryfast", "-crf", "18", + "-pix_fmt", "yuv420p", "-movflags", "+faststart", join(root, "docs/store/promo/pluck-promo-1080.mp4")], { stdio: "inherit" }); +console.log("docs/store/promo/pluck-promo-1080.mp4 written.");