Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Bluesky のフィードを作ろう / 20250620-niigata-5min-tech
Search
girigiribauer
June 20, 2025
Programming
95
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Bluesky のフィードを作ろう / 20250620-niigata-5min-tech
2025/06/20 Niigata5分Tech #20 で話した資料です
girigiribauer
June 20, 2025
Transcript
19 slides
/JJHBUB5FDI #MVFTLZͷϑΟʔυΛ࡞Ζ͏ HJSJHJSJCBVFS
ࣗݾհ w ωοτ্ͰHJSJHJSJCBVFSͱ͍͏ϋϯυϧωʔϜͰͬͯ·͢ w چ໊ݹຽͰ͢ 2
#MVFTLZ͍͍ͧ w ϒϧʔεΧΠ͍͍͓ͧ͡͞ΜʮϒϧʔεΧΠ͍͍ͧʯ 3
#MVFTLZͷϑΟʔυͱ w ཁ͢ΔʹࣗͳΓͷϩδοΫͰฒͨɺߘͷλΠϜϥΠϯΛ࡞ΕΔ w ΧελϜϑΟʔυΛੜ͢ΔαʔόʔαʔϏεͷ͜ͱΛ ϑΟʔυδΣωϨʔλʔͱݺͿ w ࠷খݶͷϑΟʔυΛ࡞ͬͯɺϑΟʔυΛཧղ͠Α͏ʂ 4
ϑΟʔυʹؔ͢Δոใ w ոใͱ͍͏ͷɺܾͯ͠σΟεΔҙਤͰ͋Γ·ͤΜ w ༗ࢤͷํʑ͕։ൃͨ͠ɺ(6*Ͱϙνϙν͢Δ͚ͩͰϑΟʔυ͕࡞ΕΔαʔϏ ε͕৭ʑ͋Δʢ͢Β͍͠ʣ w ྫಛఆΩʔϫʔυ܈Λઃఆͯ͠ɺͦΕΒΛؚΉϑΟʔυΛ࡞Δ w ཁ͢ΔʹϑΟʔυδΣωϨʔλʔͷδΣωϨʔλʔ
w άάΔͱ͜ͷลͷ(6*ͷૢ࡞ͷํΈ͍ͨͳͷ͕ͨ͘͞ΜҾ͔͔ͬͬͯ͘Δ w ͕ͩཉ͍͠ใͰͳ͍ɾɾɾ 5
ϑΟʔυʹؔ͢Δެࣜใ w ։ൃऀެࣜυΩϡϝϯτΛݟΑ͏ w IUUQTEPDTCTLZBQQEPDTTUBSUFSUFNQMBUFTDVTUPNGFFET w ελʔλʔΩοτ͕Ұ൪Θ͔Γ͍͢ w IUUQTHJUIVCDPNCMVFTLZTPDJBMGFFEHFOFSBUPS w
ͱ͍͑ͬͱ͗མͱͤΔͷͰɺࢀߟʹͭͭࣗ͠લͰ࡞Δ w ඞཁʹԠͯ͡"51SPUPDPMʢΞοτϓϩτίϧʣΛݟΔ w IUUQTHJUIVCDPNCMVFTLZTPDJBMBUQSPUP w ྫϨίʔυΛՃ͢Δ"1*ͰɺʮͲ͜ʹʯʮԿΛʯ͕ͬͪ͜ʹॻ͍ͯ ͋Δʢਖ਼ͪΐͬͱΘ͔ΓͮΒ͍ʣ 6
࠷খݶͷ#MVFTLZϑΟʔυ w αʔόʔΛ༻ҙ͢Δ w దͳ+40/Λฦ͢ΤϯυϙΠϯτΛؚΉ8FCαʔϏεΛ༻ҙ͢Δ w खݩͰ"1*Λୟ͍ͯϑΟʔυΛొ͢Δ 7 \؆୯ʂ/
αʔόʔΛ༻ҙ͢Δ w ݻఆϙετ͚ͩͰ͍͍ͳΒແྉͷTUBUJDTJUFͰେৎ w σʔλϕʔεඞਢͰͳ͍ɺϑΟʔυͷϩδοΫ࣍ୈ 8
దͳ+40/Λฦ͢ΤϯυϙΠϯτΛؚΉ8FCαʔϏεΛ༻ҙ͢Δ w XFMMLOPXOEJEKTPO w ࢄ*% %*% %FDFOUSBMJ[FE*EFOUJGJFS Λ׆༻ͯ͠ɺ8$͕ඪ४Խͯ͠ ͍Δ%*%%PDVNFOUΛฦ͢
w #MVFTLZଆ͔Β͍߹Θ͕ͤདྷΔ 9
దͳ+40/Λฦ͢ΤϯυϙΠϯτΛؚΉ8FCαʔϏεΛ༻ҙ͢Δ 10 const app = new Hono(); app.get("/.well-known/did.json", (c)
=> { return c.json({ "@context": ["https://www.w3.org/ns/did/v1"], id: "did:web:feeds.bsky.girigiribauer.com", service: [ { id: "#bsky_fg", type: "BskyFeedGenerator", serviceEndpoint: "https://feeds.bsky.girigiribauer.com", }, ], }); });
దͳ+40/Λฦ͢ΤϯυϙΠϯτΛؚΉ8FCαʔϏεΛ༻ҙ͢Δ w YSQDBQQCTLZGFFEHFU'FFE4LFMFUPO w IUUQTEPDTCTLZBQQEPDTBQJBQQCTLZGFFEHFUGFFETLFMFUPO w ͜ͷϨεϙϯεʹԊͬͯฦͯ͋͛͠Δ͚ͩ w ϦΫΤετʹGFFEύϥϝʔλ͕͋ΓɺෳϑΟʔυͷͲΕ͔ΒͷΞΫηε
͔ผͰ͖Δ w ͜ͷ"1*#MVFTLZଆ͔Βୟ͔ΕΔͷ 11
12
దͳ+40/Λฦ͢ΤϯυϙΠϯτΛؚΉ8FCαʔϏεΛ༻ҙ͢Δ 13 const app = new Hono(); app.get("/xrpc/app.bsky.feed.getFeedSkeleton", async
(c) => { return c.json({ feed: [ { post: "at://did:plc:tsvcmd72oxp47wtixs4qllyi/app.bsky.feed.post/ 3ldcooerekc2y", }, ], }) });
खݩͰ"1*Λୟ͍ͯϑΟʔυΛొ͢Δ w ࠓ#MVFTLZଆͷ"1*Λୟ͘ w ελʔλʔΩοτͷTDSJQUTQVCMJTI'FFE(FOUTࢀর w Ճ͢ΔํͷใQVU3FDPSE w IUUQTEPDTCTLZBQQEPDTBQJDPNBUQSPUPSFQPQVUSFDPSE
w Ճ͞ΕΔํͷใBQQCTLZGFFEHFOFSBUPS w IUUQTHJUIVCDPNCMVFTLZTPDJBMBUQSPUPCMPCNBJOMFYJDPOTBQQ CTLZGFFEHFOFSBUPSKTPO 14
खݩͰ"1*Λୟ͍ͯϑΟʔυΛొ͢Δ 15 const agent = new AtpAgent({ service: "https://bsky.social"
}); await agent.login({ identi fi er: handle, password }); // தུ const image = await fs.readFile(path); const blobResponse = await agent.com.atproto.repo.uploadBlob(image, { encoding: "image/png", }); // தུ const result = await agent.com.atproto.repo.putRecord({ repo: agent.session?.did ?? "", collection: "app.bsky.feed.generator", rkey: "helloworld", record: { did: "did:web:feeds.bsky.girigiribauer.com", displayName: "Helloworld feed", description: "Hello! Hello!", avatar, // BlobRef createdAt: new Date().toISOString(), }, });
/FYUTUFQ w ϑΟʔυʹΞΫηε͖ͯͨ͠ਓͷEJEΛΔʹ"VUIPSJ[BUJPOϔομʔ Λղੳͯ͠+85͔ΒऔΓग़͢ w IUUQTHJUIVCDPNCMVFTLZTPDJBMGFFEHFOFSBUPSCMPCNBJOTSD BVUIUT- w &YQSFTTKTґଘʹͳͬͯΔ෦͕͋ΔͷͰؾΛ͚ͭͯͶ w
໘നϑΟʔυΛ࡞ͬͯΈΔ w ϑΟʔυҎ֎ʹ৭ʑΤϯδχΞϦϯάͰ͖Δͧ 16
·ͱΊ w #MVFTLZͷϑΟʔυɺࣗͰΧελϚΠζͨ͠λΠϜϥΠϯΛఏڙͰ͖Δ Έ w #MVFTLZͷ"1*ɺ͔ͬͪ͜Βୟ͘ͷɺ͜͏͔Βୟ͔ΕΔͷͷ྆ํ ͕ࠞͬͯ͟ॻ͍ͯ͋Δ w Φʔϓϯͳϓϩτίϧͱ"1*ΛͬͯɺࣗͳΓͷใۭؒΛ࡞Ζ͏ 17
w ϒϧʔεΧΠ͍͍͓ͧ͡͞ΜʮϒϧʔεΧΠ͍͍ͧʯ 18 https://internet.watch.impress.co.jp/docs/yajiuma/2024244.html
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ 19
More Decks by girigiribauer
See All by girigiribauer
SVG だけで Web サイトを作ってみた話 / 20261030-niigata-5min-tech
girigiribauer
0
63
続・BlueskyとXにクロスポストするツールを作った / 20260619-niigata-5min-tech
girigiribauer
0
97
Figma デザインを自動マークアップさせた記録と肌感 / 20260425-nagaoka-tech-junction-1
girigiribauer
0
110
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
340
移動は善 / 20260124-NGK2026S
girigiribauer
1
250
Google Antigravity を使ってみた肌感 / 20251130-ai-craft-hacks-niigata
girigiribauer
0
120
なんとなく使っていたクリップボードの不思議 / 20250926-niigata-5min-tech
girigiribauer
1
110
タスクにもストック型・フロー型があるということに Todoist を使い始めて気づいた話 / 20250725-niigata-5min-tech
girigiribauer
0
110
『Bluesky 公式アカウント移行まとめ』のアップデートをした話 / 20241018-niigata-5min-tech
girigiribauer
0
150
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
310
仕様駆動開発入門 (何を作るかを先に決めて渡す) | 目指せ Kiro マスター 05
inariku
PRO
2
150
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
3
300
React Native에 현대적인 빌드 도구 더하기: Rollipop 구현기
leegeunhyeok
0
180
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
160
protojson における文字化けの扱い
kazuki1023
0
420
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
180
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.9k
Enforcing Your Architecture with Unit Tests in the AI Era (Swift Connection X)
steliosf
PRO
1
170
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
はじめてのPLATEAU
nokonoko1203
1
650
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
3
1.7k
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
580
SEO for Brand Visibility & Recognition
aleyda
0
4.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
560
Highjacked: Video Game Concept Design
rkendrick25
PRO
2
570
Paper Plane (Part 1)
katiecoart
PRO
3
12k
Building Applications with DynamoDB
mza
96
7.3k
Unsuck your backbone
ammeep
672
58k
The Cult of Friendly URLs
andyhume
79
7.1k
Writing Fast Ruby
sferik
630
63k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.3k
We Are The Robots
honzajavorek
0
440