PageSourceSearch

https://foryou.club/

html foryou.club collected 2026-09-30 09:48:42 UTC 18,107 bytes, 428 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>For You · Most Liked Custom Feed on Bluesky</title>
7    <meta name="description" content="For You is the most liked custom feed on Bluesky. It finds people who liked the same posts as you and shows you what else they&rsquo;ve liked recently.">
8    <meta property="og:type" content="website">
9    <meta property="og:url" content="https://foryou.club/">
10    <meta property="og:title" content="For You · Most Liked Custom Feed on Bluesky">
11    <meta property="og:description" content="For You is the most liked custom feed on Bluesky. It finds people who liked the same posts as you and shows you what else they&rsquo;ve liked recently.">
12    <meta property="og:image" content="https://foryou.club/avatar.png">
13    <link rel="canonical" href="https://foryou.club/">
14    
14<script type="application/ld+json">
15    {
16      "@context": "https://schema.org",
17      "@type": "WebApplication",
18      "name": "For You",
19      "url": "https://foryou.club/",
20      "description": "For You is the most liked custom feed on Bluesky. It finds people who liked the same posts as you and shows you what else they've liked recently.",
21      "applicationCategory": "SocialNetworkingApplication",
22      "operatingSystem": "All",
23      "author": {
24        "@type": "Person",
25        "name": "spacecowboy17",
26        "url": "https://bsky.app/profile/spacecowboy17.bsky.social"
27      },
28      "offers": {
29        "@type": "Offer",
30        "price": "0",
31        "priceCurrency": "USD"
32      }
33    }
34    </script>
34
35    <style>
36        * { box-sizing: border-box; margin: 0; padding: 0; }
37        body {
38            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
39            background-color: #f5f5f5;
40            color: #1a1a1a;
41            line-height: 1.6;
42            min-height: 100vh;
43        }
44		
45        .page {
46            max-width: 600px;
47            margin: 0 auto;
48            padding: 24px;
49            background: #fff;
50            min-height: 100vh;
51        }
52        .hero {
53            margin-bottom: 20px;
54        }
55        .hero .lead {
56            font-size: 20px;
57            font-weight: 700;
58            color: #1a1a1a;
59            margin-bottom: 10px;
60        }
61        .hero .how {
62            font-size: 15px;
63            color: #333;
64        }
65        .cta {
66            margin: 24px 0;
67        }
68        .btn-cta {
69            display: inline-block;
70            background: #0085ff;
71            color: #fff;
72            font-size: 16px;
73            font-weight: 700;
74            text-decoration: none;
75            padding: 12px 24px;
76            border-radius: 8px;
77        }
78        .btn-cta:hover { background: #0070d9; }
79        .existing-users {
80            margin-top: 32px;
81        }
82        .existing-users h2 {
83            font-size: 18px;
84            font-weight: 700;
85            color: #1a1a1a;
86            margin-bottom: 12px;
87        }
88        .cards {
89            display: flex;
90            flex-direction: column;
91            gap: 16px;
92        }
93        .card {
94            background: #fff;
95            border-radius: 12px;
96            padding: 20px 24px;
97            border: 1px solid #e5e5e5;
98        }
99        .card-header {
100            display: flex;
101            align-items: center;
102            gap: 10px;
103            margin-bottom: 8px;
104        }
105        .card-icon { font-size: 22px; }
106        .card-title {
107            font-size: 17px;
108            font-weight: 600;
109        }
110        .card-title a {
111            color: #0085ff;
112            text-decoration: underline;
113        }
114        .card-title a:hover {
115            color: #0070d9;
116        }
117        .card-desc {
118            font-size: 14px;
119            color: #555;
120            margin-bottom: 10px;
121        }
122        .card-action {
123            font-size: 14px;
124            font-weight: 600;
125            color: #0085ff;
126            text-decoration: none;
127        }
128        .card-action:hover { text-decoration: underline; }
129        .testimonials {
130            margin-top: 32px;
131        }
132        .built-by {
133            margin-top: 32px;
134        }
135
136		.faqs {
137			margin-top: 32px;
138		}
139
140		.faqs h2 {
141			font-size: 18px;
142            font-weight: 700;
143            color: #1a1a1a;
144            margin-bottom: 12px;
145        }
146		.faqs h3 {
147			font-size: 16px;
148			font-weight: 700;
149			color: #1a1a1a;
150			margin: 20px 0 10px 0;
151		}
152
153        .built-by h2 {
154            font-size: 18px;
155            font-weight: 700;
156            color: #1a1a1a;
157            margin-bottom: 12px;
158        }
159        .built-by p {
160            font-size: 14px;
161            color: #555;
162        }
163        .built-by a {
164            color: #0085ff;
165            text-decoration: underline;
166        }
167        .built-by a:hover {
168            color: #0070d9;
169        }
170        .testimonials h2 {
171            font-size: 18px;
172            font-weight: 700;
173            color: #1a1a1a;
174            margin-bottom: 12px;
175        }
176        .testimonial-container {
177            min-height: 300px;
178            transition: opacity 0.3s ease;
179        }
180        .btn-next {
181            margin-top: 10px;
182            background: none;
183            border: none;
184            cursor: pointer;
185            font-size: 14px;
186            font-weight: 600;
187            color: #0085ff;
188            padding: 0;
189        }
190        .btn-next:hover { text-decoration: underline; }
191        .faqs h3 { position: relative; }
192        .faq-anchor {
193            opacity: 0;
194            text-decoration: none;
195            color: #aaa;
196            font-size: 0.75em;
197            font-weight: normal;
198            margin-left: 0.4em;
199            vertical-align: middle;
200            transition: opacity 0.15s;
201            user-select: none;
202        }
203        .faq-anchor.copied { color: #0085ff; }
204        .faqs h3:hover .faq-anchor { opacity: 1; }
205    </style>
206</head>
207<body>
208    <div class="page">
209        <div class="hero">
210            <h1 class="lead">💖 For You is the most liked custom feed on Bluesky with over 50K likes!</h1>
211            <p class="how"><strong>How it works:</strong> For You finds people who liked the same posts as you, and shows you what else they&rsquo;ve liked recently.</p>
212        </div>
213
214        <div class="cta">
215            <a class="btn-cta" href="https://bsky.app/profile/spacecowboy17.bsky.social/feed/for-you">Get it on Bluesky &rarr;</a>
216        </div>
217
218        <div class="testimonials">
219            <h2>What people are saying</h2>
220            <div id="testimonial-container" class="testimonial-container"><blockquote class="bluesky-embed" data-bluesky-uri="at://did:plc:7icioco6iksxt3nl2oxpkj2u/app.bsky.feed.post/3mjxbrgqgd22w" data-bluesky-cid="bafyreien5itxgwk7ag67w5ldcenu4lcd3pqnx562rcd3jxe2zos3zhl6a4" data-bluesky-embed-color-mode="system"><p lang="en">omg i recommend the &quot;For You&quot; feed instead, its basically the discover but way way better and actually fun bsky.app/profile/did:...<br><br><a href="https://bsky.app/profile/did:plc:7icioco6iksxt3nl2oxpkj2u/post/3mjxbrgqgd22w?ref_src=embed">[image or embed]</a></p>&mdash;
220 𝒛𝒐𝒆 / 𝒂𝒍𝒎𝒐𝒔𝒕𝒛𝒐𝒆𝒚 (<a href="https://bsky.app/profile/did:plc:7icioco6iksxt3nl2oxpkj2u?ref_src=embed">@almostzoey.bsky.social</a>) <a href="https://bsky.app/profile/did:plc:7icioco6iksxt3nl2oxpkj2u/post/3mjxbrgqgd22w?ref_src=embed">Apr 20, 2026 at 4:13 PM</a></blockquote>
220<script async src="https://embed.bsky.app/static/embed.js" charset="utf-8"></script>
220</div>
221            <button class="btn-next" onclick="nextTestimonial()">Show another &rarr;</button>
222        </div>
223
224        <div class="existing-users">
225            <h2>Already using For You?</h2>
226            <div class="cards">
227                <div class="card">
228                    <div class="card-header">
229                        <span class="card-icon">📊</span>
230                        <span class="card-title"><a href="stats">Your Stats</a></span>
231                    </div>
232                    <div class="card-desc">See how you use the For You feed: posts viewed, likes given, and how your posts performed.</div>
233                    <a class="card-action" href="login">Sign in with Bluesky &rarr;</a>
234                </div>
235                <div class="card">
236                    <div class="card-header">
237                        <span class="card-icon">👤</span>
238                        <span class="card-title"><a href="profile">Your Profile</a></span>
239                    </div>
240                    <div class="card-desc">Review your likes, show&nbsp;more, and show&nbsp;less signals, and create a peek link to share your feed with others.</div>
241                </div>
242                <div class="card">
243                    <div class="card-header">
244                        <span class="card-icon">🎮</span>
245                        <span class="card-title"><a href="playground">Playground</a></span>
246                    </div>
247                    <div class="card-desc">See your personalized For You recommendations and learn which of your likes make a post appear in the feed.</div>
248                </div>
249                <div class="card">
250                    <div class="card-header">
251                        <span class="card-icon">🔗</span>
252                        <span class="card-title"><a href="also-liked">Also Liked</a></span>
253                    </div>
254                    <div class="card-desc">Enter a post URL to see what other posts people who liked it also liked; powered by the same algorithm as For You.</div>
255                </div>
256                <div class="card">
257                    <div class="card-header">
258                        <span class="card-icon">⏪</span>
259                        <span class="card-title"><a href="https://bsky.app/profile/spacecowboy17.bsky.social/feed/for-you-rewind">For You Rewind</a></span>
260                    </div>
261                    <div class="card-desc">Seen something in For You that disappeared after a refresh? 📌Pin this companion feed to get back to what you&rsquo;ve seen.</div>
262                </div>
263            </div>
264        </div>
265
266        <div class="built-by">
267            <h2>Who built this?</h2>
268            <p>For You is built by <a href="https://bsky.app/profile/spacecowboy17.bsky.social">@spacecowboy17.bsky.social</a>. Read how I serve the feed and this page from my gaming PC on <a href="https://atproto.com/blog/serving-the-for-you-feed">AT Protocol blog</a> and follow the new developments on the <a href="https://blog.foryou.club/">blog</a>.</p>
269        </div>
270
271		<div class="faqs">
272			<h2 id="faqs">FAQs</h2>
273
274			<h3 id="exclude-follows">Can For You exclude people I follow? <a class="faq-anchor" href="#exclude-follows">#</a></h3>
275			<p>
276			This is a reasonable request from people who use Following as the primary feed and For You as secondary.
277			<br>
278			The answer is: no. For You does not know who you follow. But you can <a href="/profile/mutes">mute</a> specific accounts from showing up in For You.
279			</p>
280
281			<h3 id="show-less">How does "show less like this" work? <a class="faq-anchor" href="#show-less">#</a></h3>
282			<p>
283			When you press triple dots > "show less like this", For You disconnects you from people who liked that post and it will pay less attention to their likes in the future.
284			</p>
285
286			<h3 id="show-more">How does "show more like this" work? <a class="faq-anchor" href="#show-more">#</a></h3>
287			<p>
288			For You uses it the same as a like. If you liked a post then you don't need to press 
289			"show more like this" and vice versa.
290			</p>
291
292			<h3 id="blocks">
292I repeatedly block posts about a topic I dislike. Why does For You keep showing similar posts?<a class="faq-anchor" href="#blocks">#</a></h3>
293			<p>
294			For You is oblivious to your blocks and mutes. Please use "show less like this" instead.
295			</p>
296			
297			<h3 id="who-i-follow">Why does For You show me posts that haven't been liked by anyone I follow? <a class="faq-anchor" href="#who-i-follow">#</a></h3>
298			<p>
299			For You does not use who you follow. It is based only on your likes and reposts.
300			</p>
301
302			<h3 id="zero-likes">If For You is based on likes, then how come I see posts with zero likes? <a class="faq-anchor" href="#zero-likes">#</a></h3>
303			<p>
304			When a user creates a post, For You treats it as if the author liked it.
305			</p>
306
307			<h3 id="open-source">Is For You open-source? <a class="faq-anchor" href="#open-source">#</a></h3>
308			<p>
309			No, I don't have immediate plans to open-source the code.<br>
310			
311			It is based on the logic I used for my other hobby project <a href="https://linklonk.com">LinkLonk</a> - an article recommender. I described the logic <a href="https://linklonk.com/item/3292763817660940288">here</a>.
312			<br>
313			There are a couple of open-sourced projects that were inspired by For You:
314			<br>
315			- <a href="https://github.com/graze-social/personalization#graze-personalization-service">Graze.social's personalization module</a>
316			<br>
317			- <a href="https://github.com/eurosky-social/fu-feed">eurosky.social's "fu" feed</a>
318			</p>
319
320			<h3 id="donations">How can I help? Do you accept donations? <a class="faq-anchor" href="#donations">#</a></h3>
321			<p>
322			I don't accept donations. I want to keep it as a pure hobby project with no financial side. I'm happy to run it indefinitely, so please don't worry about the sustainability.
323			<br>
324			The best way you can help is by sharing the feed link with other people: <a href="https://bsky.app/profile/spacecowboy17.bsky.social/feed/for-you">https://bsky.app/profile/spacecowboy17.bsky.social/feed/for-you</a>
325			</p>
326
327
328		</div>
329    </div>
330<script>
331var testimonials = [
332    "https://bsky.app/profile/did:plc:alekzlwbaykuh3zdoxcbhkys/post/3m2hyvj43322t",
333	"https://bsky.app/profile/did:plc:reu7q3altx5gsonhu5nxcfp6/post/3mklq3qrqdk2e",
334	"https://bsky.app/profile/did:plc:cjinybngj7dlvspewakwjab2/post/3mkjsd2v33c2t",
335	"https://bsky.app/profile/did:plc:uashgn65n5z7aqwk5cbuba5c/post/3mkiuazgams2n",
336	"https://bsky.app/profile/did:plc:47f6yrswjqxzfkkjgxuva6gv/post/3mkflkytqzk2g",
337	"https://bsky.app/profile/did:plc:uhtfvrx7q54kfefr62jo476l/post/3mkddryhplc27",
338	"https://bsky.app/profile/did:plc:xsydwufekni76rtijpakkuep/post/3mkcqvbim322t",
339	"https://bsky.app/profile/did:plc:te4jt6yfmyo2jbytcp4l4n5n/post/3mkamodf2p22n",
340	"https://bsky.app/profile/did:plc:gxoedxinpkresbuqhiwykugk/post/3mk7jbzrto22r",
341	"https://bsky.app/profile/did:plc:y5lnszltbfcrh2gam6jcpddp/post/3mk3uciedsc2g",
342	"https://bsky.app/profile/did:plc:3hwi2rstvrisskm32fswbeqz/post/3mjy2m64hss2j",
343	"https://bsky.app/profile/did:plc:x42uo6yekg6kaxhtlur3cm6t/post/3mjxk5jhycc2i",
344	"https://bsky.app/profile/did:plc:t3vy2vvxhb3ngbrqnu6qbwnc/post/3mjbqfdtnik2g",
345	"https://bsky.app/profile/did:plc:xbocfrklngqufgl4bupdpm4m/post/3mj7taosihs2f",
346	"https://bsky.app/profile/did:plc:taogvmxiamwyv2evwhd6il7g/post/3mj5lqhsivs2a",
347	"https://bsky.app/profile/did:plc:waj6pke4gnh3qsjujzhp6ehn/post/3mjit4bpxd22v",
348	"https://bsky.app/profile/did:plc:e3vacz6kk4ataouyeidac6h5/post/3mjpv77gtx22z",
349	"https://bsky.app/profile/did:plc:fb3iwxg23jziddgbtsixx3zu/post/3mjpdr6in7c2v",
350	"https://bsky.app/profile/did:plc:bffne4bxiscwjymsqwuf7uyy/post/3mjsgg2wc722v",
351	"https://bsky.app/profile/did:plc:sicma54lzkyqmz3suw63dfsy/post/3mjr2s6hbis26",
352	"https://bsky.app/profile/did:plc:gkgncnmhmnluxf3hd6bjuyf7/post/3mjuo6tzmes2q",
353	"https://bsky.app/profile/did:plc:i6dbvwvfda5ktrwf2je3h3vn/post/3mjtrzvnomk2c",
354	"https://bsky.app/profile/did:plc:zcioviiyqw76bc2fuzrs3mak/post/3mjwpkddgus2x",
355	"https://bsky.app/profile/did:plc:7icioco6iksxt3nl2oxpkj2u/post/3mjxbrgqgd22w",
356	"https://bsky.app/profile/did:plc:dxr2kibhxyzrvhsjz4uahpmg/post/3mjwzg6yg522n",
357];
358
359function postToAtUri(url) {
360    var m = url.match(/profile\/([^/]+)\/post\/([^/]+)/);
361    if (!m) return null;
362    return "at://" + m[1] + "/app.bsky.feed.post/" + m[2];
363}
364
365var current = Math.floor(Math.random() * testimonials.length);
366
367function loadEmbed(atUri) {
368    var container = document.getElementById("testimonial-container");
369    container.innerHTML = '<blockquote class="bluesky-embed" data-bluesky-uri="' + atUri + '"></blockquote>';
370    var old = document.getElementById("bsky-embed-js");
371    if (old) old.remove();
372    var s = document.createElement("script");
373    s.id = "bsky-embed-js";
374    s.src = "https://embed.bsky.app/static/embed.js";
375    s.async = true;
376    s.charset = "utf-8";
377    document.body.appendChild(s);
378}
379
380function showTestimonial(index) {
381    var atUri = postToAtUri(testimonials[index]);
382    if (!atUri) return;
383    var container = document.getElementById("testimonial-container");
384    container.style.opacity = "0";
385    setTimeout(function() {
386        loadEmbed(atUri);
387    }, 300);
388}
389
390function nextTestimonial() {
391    if (testimonials.length > 1) {
392        var next = Math.floor(Math.random() * (testimonials.length - 1));
393        if (next >= current) next++;
394        current = next;
395    }
396    showTestimonial(current);
397}
398
399// Fade in as soon as embed.bsky.app sends its first resize message (iframe rendered)
400window.addEventListener("message", function onEmbedReady(e) {
401    if (e.origin !== "https://embed.bsky.app") return;
402    var container = document.getElementById("testimonial-container");
403    container.style.opacity = "1";
404});
405
406// Initial load
407var _c = document.getElementById("testimonial-container");
408_c.style.opacity = "0";
409loadEmbed(postToAtUri(testimonials[current]));
410
411document.querySelectorAll('.faq-anchor').forEach(function(a) {
412    a.addEventListener('click', function(e) {
413        e.preventDefault();
414        var url = location.origin + location.pathname + a.getAttribute('href');
415        navigator.clipboard.writeText(url).then(function() {
416            history.replaceState(null, '', a.getAttribute('href'));
417            a.textContent = '✓';
418            a.classList.add('copied');
419            setTimeout(function() {
420                a.textContent = '#';
421                a.classList.remove('copied');
422            }, 1500);
423        });
424    });
425});
426</script>
426
427</body>
428</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.