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’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’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’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 →</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 "For You" 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>—
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 →</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 →</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 more, and show 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’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.