Yatxatapxañani kunjamasa programaticamente apsuña ukhamaraki uñt’ayaña munata Bluesky qillqatanakaxa chiqapa uñt’ayawi, API jawsatanaka, ukhamaraki oEmbed tukuyañanakampi. Jichhakiw ukar sarxawayta. Nayax nayratpach chiqanchañjamawa, ukanx mä ch’amanchata comunidad tecnológica ukaw utji, toneladas de contenidos interesantes, útiles ukat inspiradores ukanakampi. ¡Nayax mä kusisit machaq apnaqiritwa! Ukhamatwa, Bluesky ukan wali munat qillqatanakax "Dev roundup" phaxsi yatiyäw qillqatanakanx uñt'ayañ munta. Nayan amtäwijasti mä lista curada Bluesky ukan qillqatanakap uñt’ayañawa, ukax Software Developers ukar uñt’ayatawa. Bluesky Suertenixa, ukax taqpach apnaqañapatakix inakiw, ukax programatico ukar mantañapatakiw taqi kunatix ukan utjki ukanakar mantañapataki. Aka yatichäwix Bluesky ukan munat qillqatanakap API apnaqañamp apsuñ ukhamarak uñt’ayañ thakhinjam irpapxätam, blogs personales, carteras jan ukax proyectos de agregación de contenidos ukanakatakix wali askiwa. Bluesky ukan API Nayan Bluesky API Workflow ukar amuyaña Nayax mä script lurawayta, ukax Bluesky ukan qillqatanakax mä markdown blog post ukar automáticamente uñt’ayañatakiw yanapt’itu. Nayax amuyta, kawkir jan ukax taqpach lurawinakas aka script ukan apnaqatäki ukax walja apnaqañ-caso ukanakatakix wali askiwa. Nayan lurawix mä juk’a qhanañcht’añatakix gustat posts ukanakar uñt’ayañatakix aka jach’a lurawinakampiw arktasipxta: Mä chiqapa sesión luraña Mä "actor" ukatak URIs post liked ukanak apsuña. Aka URIs ukanakax apsuñatakiw apnaqasi oEmbed embed HTML ukar Q’umachaña ukat formato ukax código embed ukaruw uñt’ayasi Uka Phuqata phuqhawi Sapa lurawi ukhamaraki kuna amtampis lurasi ukxat t’aqanuqt’añäni: 1. Bluesky Sesión luraña export const createSession = async (): Promise<string | null> => { try { const response = await fetch( "https://bsky.social/xrpc/com.atproto.server.createSession", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ identifier: "your-handle", password: "your-password", }), } ); const responseJson = await response.json(); return responseJson.accessJwt; } catch (e) { console.error("Failed to create session: ", e); return null; } }; Jach’a amuyunaka: Aka lurawix Bluesky ukan cuentap chiqanchatawa. Qhanacht’awi: aka uñacht’awix credenciales ukanakatakix cadenas ukanakaruw hardcodes uñacht’ayi, ukampis ukax producción apnaqañanx jan lurañaw wakisi. Ukax mä JWT (JSON Web Token) ukaruw kutt’ayaraki, qhipa API jawsatanakataki accessJwt Bluesky ukan ATP (Protocolo de Transferencia Autenticado) ukan tukuyañ chimpu apnaqi . createSession Pantjasiw apnaqañax gracioso jan walt’awinak askichi, chiqanchawix jan walt’ayaspa ukhaxa 2. Liked Post URIs ukanaka apsuña export const getBlueskyLikeUris = async (actor: string, limit: number = 40) => { const token = await createSession(); if (!token) { console.error("Failed to get token"); return; } const response = await fetch( "https://bsky.social/xrpc/app.bsky.feed.getActorLikes?actor=${actor}&limit=${limit}", { method: "GET", headers: { Authorization: `Bearer ${token}`, }, } ); const responseJson = await response.json(); const uris = responseJson.feed.map((entry: any) => entry.post.uri); return uris; }; Jach’a amuyunaka: Mä chiqapa sesión token ukax wakisiwa tukuyañ chimpumpiw uñt’ayasi ukax wali askiwa getActorLikes getActorLikes Wali askiw -- dominio de punto final ukax https://bsky.social ukhamäñapawa, kunatix akax mä chiqapa mayiwiwa. Sapa munat qillqatanakatakix sapa mayni URIs ukanakaw apsu Límites ukax 40 posts (configurable) ukhamawa. 3. URIs ukanakax HTML Embeddable ukar jaqukipaña export const getBlueskyPostEmbedMarkup = async (uri: string) => { try { const response = await fetch(`https://embed.bsky.app/oembed?url=${uri}`); const responseJson = await response.json(); const formattedHTML = prettier.format(responseJson.html, { parser: "html", plugins: [require("prettier/parser-html")], htmlWhitespaceSensitivity: "ignore", printWidth: 1000, }); return formattedHTML.replace(/<script[\s\S]*?<\/script>/g, ""); } catch (e) { console.error("Failed to get Bluesky post embed markup"); return null; } }; Jach’a amuyunaka: post URIs ukampiw apnaqasi, mä post ukan HTML ukar mantañataki Bluesky ukax oEmbed tukuyañ chimpumpiw Opcional: Usuario ukax HTML ukax formato constante ukhamawa prettier Munañjama: chimpunak apsuña seguridad ukat q’uma uñt’ayañataki <script> Ukax kunatsa ukhamaxa, sapa post ukax Bluesky ukan contenido ukan utjki ukatakix mä sapa Bluesky script ukaw uñt’ayasi. Flexible pantjasiwinak apnaqaña Taqi ukanak mayacht’aña: Mä phuqhat uñacht’äwi async function embedLikedPosts() { try { // Get liked post URIs const likedPostUris = await getBlueskyLikeUris(); if (!likedPostUris) { console.error("No liked posts found"); return; } // Convert URIs to embed HTML const embedPromises = likedPostUris.map(getBlueskyPostEmbedMarkup); const embedHtmlArray = await Promise.all(embedPromises); // Filter out any failed embeds const validEmbeds = embedHtmlArray.filter(embed => embed !== null); // Return the markup for all liked posts return ` ## Some Fave Posts 🦋 ${validEmbeds.join(`\n\n`)} ` } catch (error) { console.error("Error embedding Bluesky posts:", error); } } Ukax mä jach’a ch’amanchawiwa Aka solución ukax nayatakix irnaqaskiw kunatix taqi kunatix nayatakix wakiski ukax mä post blog ukan sapa phaxsi estáticamente generado ukawa. Mä qhawqha askinak lurañax akanakawa: 40 jila uñt’at qillqatanakar apsuñatakix paginación ukan yanapt’äwip yapxatañamawa Caché ukar phuqhaña, jan wakiskir API jawsatanakar jisk’achañataki Mä juk’amp ch’aman pantjasiwinak apnaqañ mecanismo luraña Mecanismo luraña token ukar machaqar tukuyañataki, ukax jaya pachan lurawinakan apnaqatawa accessJwt Uñt’at qillqatanakax wali uñt’atawa (like) ukarjam uñt’ayaña . Jan walt’awinak askichañataki iwxt’awinaka Bluesky ukan credenciales ukanakax chiqapätap uñakipt’añamawa Uñakipt’añani Bearer token ukaxa chiqapa mayiwinakanxa utt’ayatawa. Uñakipt’aña, kuna dominios de puntos finales ukanakas apnaqañax taqpachaw wakisi. Tukuyawi Bluesky ukan qillqatanakap uñt’ayañax mä ch’amanchawiw medios sociales ukan mayacht’asiwinakap uñacht’ayañataki. API irnaqawi amuyt’asa ukhamaraki ch’amani pantjasiwi apnaqawi phuqhasa, ukaxa lurasispawa, ukaxa lurasispawa, ukaxa mä juk’a pachanakwa lurasirakispa. Jutïr lurañanaka Uka codigompi yant’aña Uka embed estilo ukarux uñt’ayañamawa Yaqha Bluesky API tukuyañ chiqanakat yatxatañamawa ¡Kusisiña ukat kusisita tinkering! 🚀