<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Brandon's Blog</title>
        <link>https://blog.oopss.top/blog</link>
        <description>Brandon's Blog Blog</description>
        <lastBuildDate>Mon, 05 Oct 2026 08:58:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-Hans</language>
        <copyright>Copyright © 2026 Brandon</copyright>
        <item>
            <title><![CDATA[博客支持Blogsclub一键添加友链]]></title>
            <link>https://blog.oopss.top/blog/blogsclub-friend-link</link>
            <guid>https://blog.oopss.top/blog/blogsclub-friend-link</guid>
            <pubDate>Mon, 05 Oct 2026 08:58:00 GMT</pubDate>
            <description><![CDATA[最近发现Blogsclub上新了开放平台功能，支持把博客接入 BlogsClub 的 OAuth 统一登录，一键授权获取博友的站点地址、头像、邮箱等信息。]]></description>
            <content:encoded><![CDATA[<p>最近发现Blogsclub上新了<a href="https://www.blogsclub.org/usercenter.html" target="_blank" rel="noopener noreferrer" class="">开放平台</a>功能，支持把博客接入 BlogsClub 的 OAuth 统一登录，一键授权获取博友的站点地址、头像、邮箱等信息。</p>
<p>本来想参照LCRWorld，把它加入评论登录系统的，但是发现我用的Twikoo不支持第三方登录(T_T)</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/10050003.webp" alt="10050003.webp" width="1998" height="1150" class="img_ev3q"></p>
<p>于是把它加入了本博客的<a href="https://blog.oopss.top/friends/apply" target="_blank" rel="noopener noreferrer" class="">友链自助申请系统</a>。</p>
<p>进入“友链申请系统”，点击“Blogsclub一键授权”，在Blogsclub系统中登录账号并进行授权，博客信息会自动填入申请。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/10050005.gif" alt="10050005.gif" width="480" height="298" class="img_ev3q"></p>
<p>在申请表中补全添加我站链接的友链页地址和RSS订阅地址（可选），点击“提交申请”即可。</p>
<p><strong>温馨提示：使用此方式提交的友链，仍需在贵站友链页添加我站链接哦～</strong></p>
<p>AI模型会自动对您的网站内容进行审核，若无违法内容，您将会收到申请成功的邮件提示，后期可使用邮件中附带的管理链接修改友链信息。请不要泄露您的管理链接地址，避免友链信息被恶意修改。</p>
<h1>申请特权</h1>
<p>使用此方法申请的友链，可享受免人工审核特权，申请后会秒级自动通过。</p>
<p>博主会定期对通过的友链进行复审，若发现<strong>链接无法访问、单向下链</strong>和<strong>违反友链规则和法律法规</strong>的行为，会进行<strong>下链并拉黑</strong>哦。</p>
<p>如贵站因故需要长时间停机（3 天以上）、更换链接等，请及时通过邮件（<a href="mailto:bcihal@qq.com" target="_blank" rel="noopener noreferrer" class="">bcihal@qq.com</a>）联系博主。</p>
<h1>实现方法</h1>
<p>申请者点下按钮之后，前端先向Cloudflare Worker 请求授权地址。Worker 会生成一串随机字符串作为 state，存进 KV 并设置十分钟有效期，然后拼出 BlogsClub 的授权页地址，带上 client_id、redirect_uri、response_type=code、scope=basic,email 和刚才那串 state。</p>
<p>这里我用的是新标签页而不是官方示例里的小窗模式，因为小窗在手机上体验很差，而整页跳转的兼容性最好。两种模式的区别是授权页地址上的display=popup参数。</p>
<p>博主在 BlogsClub 完成授权后，会带着一个一次性 code和原样返回的 state回跳到我们登记的回调地址。回调地址必须和应用后台登记的完全一致，否则对方会直接拒绝。</p>
<p>回调请求会发送到 Worker 上，第一步就是校验 state。它必须是我们签发过、且还没有被使用过的，校验通过后立即从 KV 里删掉。这一步是防 CSRF 的关键，如果没有它，攻击者可以伪造一次回调，把别人的授权码塞给我们的服务端。</p>
<p>校验通过之后，Worker 才用 AppID 和 AppKey 去换 access_token。</p>
<p>拿到令牌后，再调用博主信息接口，就得到了站点名称、头像地址、博客网址、认证状态和邮箱。到这里授权部分就完成了。</p>
<h1>实现同款</h1>
<p>如果你还没有我站的友链，不妨在<a href="https://blog.oopss.top/friends/apply" target="_blank" rel="noopener noreferrer" class="">友链自助申请系统</a>一键授权进行申请。</p>
<p>如果你也想要本站的同款功能，可以参照Blogsclub的<a href="https://blog.oopss.top/friends/apply" target="_blank" rel="noopener noreferrer" class="">API文档</a>，创建应用后进行接入。</p>
<p>如果你还没有加入Blogsclub，欢迎<a href="https://www.blogsclub.org/apply.html?inviteCode=54534940" target="_blank" rel="noopener noreferrer" class="">由此处</a>通过我的邀请链接加入，你我均会获得一定的积分奖励。</p>
<p>如有任何友链或其他方面的问题，欢迎留言或给我（<a href="mailto:bcihal@qq.com" target="_blank" rel="noopener noreferrer" class="">bcihal@qq.com</a>）发邮件。</p>]]></content:encoded>
            <category>技术</category>
        </item>
        <item>
            <title><![CDATA[收到了Blogsclub的鼠标垫]]></title>
            <link>https://blog.oopss.top/blog/free-mousepad-by-bc</link>
            <guid>https://blog.oopss.top/blog/free-mousepad-by-bc</guid>
            <pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Blogsclub「每月拾光」入选博主可以用 0.01 积分兑换鼠标垫，顺丰发货第三天到手，收到的是吉祥物卡通形象的大号鼠标垫。]]></description>
            <content:encoded><![CDATA[<p>上周末看到Blogsclub入选“每月拾光”的博主可以0.01积分兑换一个Blogsclub鼠标垫，而我恰好入选了，于是就兑换了一个。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/09130001.webp" alt="09130001.webp" width="1080" height="1092" class="img_ev3q"></p>
<p>发的是顺丰快递，可见Blogsclub还是很用心的。快递是从福建发货的，第三天就到了。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/09130002.webp" alt="09130002.webp" width="960" height="1280" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/09130003.webp" alt="09130003.webp" width="1280" height="960" class="img_ev3q"></p>
<p>看兑换页面的图片以为是一个鼠标垫，没想到是两个。鼠标垫很大，是Blogsclub的吉祥物的卡通形象。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/09130004.webp" alt="09130004.webp" width="960" height="1280" class="img_ev3q"></p>
<p>如果你的文章也入选了“每月拾光”，也可以在<a href="https://www.blogsclub.org/store.html" target="_blank" rel="noopener noreferrer" class="">Blogsclub兑换商店</a>兑换一个“吉祥物穿梭与拾光主题鼠标垫”。</p>
<p>如果显示缺货，运营组会不定期补货，可以时不时看看有没有补货。</p>
<p>再次感谢Blogsclub运营组的用心！</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[贵阳游记]]></title>
            <link>https://blog.oopss.top/blog/guiyang-trip</link>
            <guid>https://blog.oopss.top/blog/guiyang-trip</guid>
            <pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[暑假尾声和朋友去贵阳玩了几天的行程记录：甲秀楼、东山寺、青岩古镇、花溪夜郎谷、花果园与黔灵山。]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="序">序<a href="https://blog.oopss.top/blog/guiyang-trip#%E5%BA%8F" class="hash-link" aria-label="序的直接链接" title="序的直接链接" translate="no">​</a></h2>
<p>趁着暑假的尾声，我和几个朋友前往贵阳游玩了几天。其实贵州一直是我很想去的地方，各种山水的景色很吸引人，这次终于有时间去了。本来是打算把贵州全域游览一遍的，但是时间比较紧张，加上黄果树等知名景区游人太多，根本就买不到票，于是只好在贵阳市区游玩几日。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="甲秀楼">甲秀楼<a href="https://blog.oopss.top/blog/guiyang-trip#%E7%94%B2%E7%A7%80%E6%A5%BC" class="hash-link" aria-label="甲秀楼的直接链接" title="甲秀楼的直接链接" translate="no">​</a></h2>
<p>甲秀楼矗立于贵阳南明河中的鳌矶石上，始建于明万历二十六年（1598年），由贵州巡抚江东之创建。楼名取“科甲挺秀”之意，寄托了振兴文教、人才辈出的美好期盼。现存建筑为三层三檐四角攒尖顶阁楼，朱梁碧瓦、飞甍翘角，白石为栏，造型在中国古建筑中颇为独特。楼侧浮玉桥横跨两岸，桥上有涵碧亭。2006年，甲秀楼被列为第六批全国重点文物保护单位。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310024.webp" alt="IMG20260807160608" width="1200" height="1600" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310025.webp" alt="IMG20260807160919" width="1200" height="1600" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="东山寺">东山寺<a href="https://blog.oopss.top/blog/guiyang-trip#%E4%B8%9C%E5%B1%B1%E5%AF%BA" class="hash-link" aria-label="东山寺的直接链接" title="东山寺的直接链接" translate="no">​</a></h2>
<p>东山寺坐落于贵阳城东栖霞岭之巅，始建于明洪武年间，初名“三省寺”，后更名法昙寺、东庵，至明嘉靖年间定名东山寺。明清时期，东山寺被誉为“贵阳十景”之首，称“东山胜概”。</p>
<p>原建筑规模宏大，惜毁于二十世纪六十年代，现仅存遗址及大量摩崖石刻。1981年列为市级文保，2012年重建后重新开放。如今登临寺顶，可俯瞰贵阳全景，尤以日落时分霞光与城市灯火交相辉映，别有意趣。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310043.webp" alt="IMG20260807192102" width="960" height="1280" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310044.webp" alt="IMG20260807192900" width="960" height="1280" class="img_ev3q"></p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310059.webp" alt="IMG20260807194333" width="1280" height="960" class="img_ev3q"></p>
<p>东山寺如果从前面爬上的话，路程很远，比较费力。可以打车到后门入口上山，约 15 分钟即可到达。缺点是楼梯不是很平整，不太方便。</p>
<p>建议傍晚前往，可以在山上俯瞰贵阳夜色，景色十分秀美。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="青岩古镇">青岩古镇<a href="https://blog.oopss.top/blog/guiyang-trip#%E9%9D%92%E5%B2%A9%E5%8F%A4%E9%95%87" class="hash-link" aria-label="青岩古镇的直接链接" title="青岩古镇的直接链接" translate="no">​</a></h2>
<p>古镇比较大，都是商业街，感觉没什么可看的，非常不推荐前往。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310067.webp" alt="61862" width="960" height="1280" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="花溪夜郎谷">花溪夜郎谷<a href="https://blog.oopss.top/blog/guiyang-trip#%E8%8A%B1%E6%BA%AA%E5%A4%9C%E9%83%8E%E8%B0%B7" class="hash-link" aria-label="花溪夜郎谷的直接链接" title="花溪夜郎谷的直接链接" translate="no">​</a></h2>
<p>花溪夜郎谷位于贵阳市花溪区斗篷山脚的小峡谷中，与相传曾是夜郎王后裔住所的斗篷山相对，夜郎谷因此得名。这座占地约300亩的石城由贵州艺术家宋培伦于1997年起倾尽毕生积蓄建造，灵感源于他1993年访美时，被印第安人耗时60余年雕刻的“疯马”巨石像所触动。</p>
<p>整座山谷以喀斯特地貌为基底，融合傩文化、屯堡文化与石筑技艺。宋培伦没有绘制图纸，完全依山就势，带领村民用石头、陶罐、瓦片等当地材料，以“感觉”堆叠出数百座2至6米高的夸张石像与图腾柱。2019年被评为国家3A级景区，如今已成为集艺术、非遗与自然于一体的奇幻石之王国。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310056.webp" alt="IMG20260808125210" width="768" height="1024" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310030.webp" alt="IMG20260808130558" width="1600" height="1200" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310047.webp" alt="IMG20260808131108" width="960" height="1280" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="花果园">花果园<a href="https://blog.oopss.top/blog/guiyang-trip#%E8%8A%B1%E6%9E%9C%E5%9B%AD" class="hash-link" aria-label="花果园的直接链接" title="花果园的直接链接" translate="no">​</a></h2>
<p>花果园白宫位于贵阳南明区花果园湿地公园旁，正式名称为花果园国际文化艺术交流中心。建筑于2011年开建，以法式巴洛克风格和通体洁白的外观著称，被网友形象地称为“贵阳白宫”。</p>
<p>这座建筑早年因用途神秘备受关注，2025年底正式转型为综合性文化艺术空间，对外开放。如今它已成为贵阳最具辨识度的城市地标，也是省外游客来黔的热门打卡地。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310032.webp" alt="IMG20260808212153" width="1600" height="1200" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310033.webp" alt="IMG20260808214347" width="1600" height="1200" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310062.webp" alt="IMG20260808215002" width="1600" height="1200" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310048.webp" alt="IMG20260808215206" width="960" height="1280" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="黔灵山">黔灵山<a href="https://blog.oopss.top/blog/guiyang-trip#%E9%BB%94%E7%81%B5%E5%B1%B1" class="hash-link" aria-label="黔灵山的直接链接" title="黔灵山的直接链接" translate="no">​</a></h2>
<p>黔灵山公园位于贵阳市中心西北，因有“黔南第一山”之称的黔灵山而得名，建于1957年，是一座集自然风光、文物古迹和娱乐休闲于一体的大型综合性城市公园。它不仅是国家4A级旅游景区，年接待游客超千万人次，更是国内少有的免门票大型城市公园。</p>
<p>公园历史悠久，早在清康熙年间，高僧赤松和尚便在此结茅建寺。园内景点丰富，除了香火鼎盛的弘福寺，还有可俯瞰贵阳全景的瞰筑亭，以及麒麟洞、黔灵湖等名胜。不过，公园最出名的还是一千多只自由自在的野生猕猴，它们既是独特的风景，也是游园时需要注意的“小主人”。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310049.webp" alt="IMG20260809101019" width="960" height="1280" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310063.webp" alt="IMG20260809111818" width="960" height="1280" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310057.webp" alt="IMG20260809112158" width="768" height="1024" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310058.webp" alt="IMG20260809113304" width="768" height="1024" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310052.webp" alt="IMG20260809113820" width="1280" height="960" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310053.webp" alt="IMG20260809115214" width="960" height="1280" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310054.webp" alt="IMG20260809121704" width="960" height="1280" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08310055.webp" alt="IMG20260809125546" width="960" height="1280" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="结语">结语<a href="https://blog.oopss.top/blog/guiyang-trip#%E7%BB%93%E8%AF%AD" class="hash-link" aria-label="结语的直接链接" title="结语的直接链接" translate="no">​</a></h2>
<p>贵州之旅就这样结束了，我也要开学了……</p>
<p>在贵阳的这几天，走得不算急，但该看的好像也都看了。甲秀楼夜里亮灯的样子比照片好看，东山寺的日落等得值，夜郎谷那些石像粗犷得有点野，黔灵山的猴子是真不拿自己当外人，花果园白宫站在湿地公园对面，像座突然冒出来的城堡。这座城市有点混搭，老的和新的挤在一块儿，山和水又穿插在楼宇之间，有种说不上来的自在。</p>
<p>没有刻意去做攻略，走到哪算哪。回头看这几天的足迹，好像也没落下什么遗憾。贵阳给我的感觉，就是一座你不用太较真、随便走走也能撞见惊喜的城市。</p>
<hr>
<p>新学期再多多努力吧……</p>
<p>（封面图来源：Pixabay）</p>]]></content:encoded>
            <category>生活</category>
            <category>旅游</category>
        </item>
        <item>
            <title><![CDATA[给博客加上AI搜索功能]]></title>
            <link>https://blog.oopss.top/blog/tech-add-ai-search-to-blog</link>
            <guid>https://blog.oopss.top/blog/tech-add-ai-search-to-blog</guid>
            <pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[主题自带的本地搜索在文章变多后会卡到浏览器崩溃。换成 Cloudflare Workers + AI 向量检索的站内搜索，避开付费额度的限制。]]></description>
            <content:encoded><![CDATA[<p>博客本来用的是主题自带的本地搜索，但是本地搜索有一个问题：文章数量多了，搜索速度会很慢，甚至导致浏览器崩溃，于是我想找一个替代方案。</p>
<p>尝试了在线搜索平台Algolia、Pagefind，发现它们免费额度很少，而且更新频率低，如果购入收费计划的话，价格不菲（图源：Algolia官网）。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08220007.webp" alt="08220007.webp" width="1290" height="676" class="img_ev3q"></p>
<p>几番搜索之下，我看到了这篇文章（<a href="https://upxuu.com/posts/xuai-implementation/" target="_blank" rel="noopener noreferrer" class="">https://upxuu.com/posts/xuai-implementation/</a>），用Cloudflare 免费AI额度实现AI搜索功能。免费额度是每月调用 10 万次，个人使用完全够用。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="cloudflare设置">Cloudflare设置<a href="https://blog.oopss.top/blog/tech-add-ai-search-to-blog#cloudflare%E8%AE%BE%E7%BD%AE" class="hash-link" aria-label="Cloudflare设置的直接链接" title="Cloudflare设置的直接链接" translate="no">​</a></h2>
<p>打开Cloudflare控制台，找到AI-AI搜索——创建实例。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08220008.webp" alt="图片" width="1818" height="1290" class="img_ev3q"></p>
<p>ID名随便填写一个，数据源选择「Web抓取」。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08220010.webp" alt="08220010.webp" width="1386" height="1176" class="img_ev3q"></p>
<p>填写你的站点的url地址，如果你的站点有Sitemap的话，解析类型选择Sitemap，否则选择“自动发现”。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08220011.webp" alt="08220011.webp" width="1254" height="726" class="img_ev3q"></p>
<p>如果选择的是Sitemap的话，在下方的“特定站点地图”中填写自己的sitemap链接。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08220012.webp" alt="08220012.webp" width="1202" height="1114" class="img_ev3q"></p>
<p>可以选择AI的模型，建议选择图中所示模型，速度比较快。</p>
<p>部署完成之后，在“公共端点”中把搜索端点打开，如果担心被盗用，也可以填写下方的“授权主机”，修改为自己的博客地址。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="前端部署">前端部署<a href="https://blog.oopss.top/blog/tech-add-ai-search-to-blog#%E5%89%8D%E7%AB%AF%E9%83%A8%E7%BD%B2" class="hash-link" aria-label="前端部署的直接链接" title="前端部署的直接链接" translate="no">​</a></h2>
<p>Cloudflare为站点提供了多种搜索组件，<a href="https://search.ai.cloudflare.com/" target="_blank" rel="noopener noreferrer" class="">点击此处</a>即可查看。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08220013.webp" alt="08220013.webp" width="2494" height="1240" class="img_ev3q"></p>
<p>可直接复制样式代码到博客页，由于国内访问Cloudflare的代码速度较慢，也可以把js文件下载到自己的服务器上使用。还可以自定义其他的搜索样式。</p>
<p>本博客右上角的搜索框已经集成了AI搜索功能，点击即可使用。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[博客近期更新]]></title>
            <link>https://blog.oopss.top/blog/blog-recent-updates</link>
            <guid>https://blog.oopss.top/blog/blog-recent-updates</guid>
            <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[友链自助申请系统、RSS 友链文章聚合、微信公众号发说说，以及说说页改版、图片灯箱与数据统计可视化。]]></description>
            <content:encoded><![CDATA[<p>这段时间给博客折腾了不少新东西，从友链申请到自动化通知再到微信联动，越玩越上头。挑几个有意思的分享一下。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="友链自助申请系统">友链自助申请系统<a href="https://blog.oopss.top/blog/blog-recent-updates#%E5%8F%8B%E9%93%BE%E8%87%AA%E5%8A%A9%E7%94%B3%E8%AF%B7%E7%B3%BB%E7%BB%9F" class="hash-link" aria-label="友链自助申请系统的直接链接" title="友链自助申请系统的直接链接" translate="no">​</a></h2>
<p>以前换友链都是靠飞书表单 + 手动确认，流程略繁琐。现在我做了一个<strong>全自动的友链申请系统</strong>，访客在 <a href="https://blog.oopss.top/friends/apply" target="_blank" rel="noopener noreferrer" class="">友链申请页</a> 填完表单提交即可。</p>
<p>申请提交后，后端会自动做一轮初审：</p>
<ul>
<li class="">检查对方是否已经在友链页添加了我的站点</li>
<li class="">检查头像地址能否访问</li>
<li class="">检查 RSS 地址能否访问</li>
</ul>
<p>初审通过后，会在<strong>邮件</strong>、<strong>飞书</strong>、<strong>微信公众号</strong>三个渠道同时通知我，通知里直接带「同意 / 拒绝」按钮，点一下就能处理，不用再登录后台。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.onmicrosoft.cn/npm/br-blog@1.0.5/covers/08110001.webp" alt="友链申请系统" width="2048" height="2048" class="img_ev3q"></p>
<p>三个渠道的通知效果：</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/img/1789268154815.webp" alt="友链申请通知" width="1536" height="1024" class="img_ev3q"></p>
<p>如果 24 小时内我没有操作，系统会自动同意。对访客来说，全程无需等待，体验很顺滑。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="友链文章聚合">友链文章聚合<a href="https://blog.oopss.top/blog/blog-recent-updates#%E5%8F%8B%E9%93%BE%E6%96%87%E7%AB%A0%E8%81%9A%E5%90%88" class="hash-link" aria-label="友链文章聚合的直接链接" title="友链文章聚合的直接链接" translate="no">​</a></h2>
<p>既然友链都加了 RSS，那不如把大家的最新文章也聚合起来。我搭了一个「<a href="https://blog.oopss.top/fcircle" target="_blank" rel="noopener noreferrer" class="">友链文章</a>」页面，用 <strong>GitHub Action 每 30 分钟</strong>定时抓取所有友链的 RSS，文章数据存到独立的 Cloudflare Pages 上，加载飞快。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/img/1789268177373.webp" alt="友链文章聚合" width="1536" height="1024" class="img_ev3q"></p>
<p>新申请并被同意的友链，只要填了可访问的 RSS，就会自动进入聚合列表，完全不用手动维护。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="微信公众号发说说">微信公众号发说说<a href="https://blog.oopss.top/blog/blog-recent-updates#%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E5%8F%91%E8%AF%B4%E8%AF%B4" class="hash-link" aria-label="微信公众号发说说的直接链接" title="微信公众号发说说的直接链接" translate="no">​</a></h2>
<p>这个我觉得最酷——现在<strong>直接在公众号里发消息，就能变成博客的「说说」</strong>。</p>
<p>只要在公众号里发一条文字消息，后端会自动创建一条 Memos，公众号还会回复说说的链接。我设置的是用我自己的账号（Brandon）发布，所以说说页看起来完全是我自己在写。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/img/1789268184994.webp" alt="微信公众号发说说" width="1536" height="1024" class="img_ev3q"></p>
<p>配合之前改版的说说页（换成了类似 X / Twitter 的卡片式信息流），现在发说说、看说说都顺手多了。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="说说页改版">说说页改版<a href="https://blog.oopss.top/blog/blog-recent-updates#%E8%AF%B4%E8%AF%B4%E9%A1%B5%E6%94%B9%E7%89%88" class="hash-link" aria-label="说说页改版的直接链接" title="说说页改版的直接链接" translate="no">​</a></h2>
<p>说说页全部重写了，改成了类似 X / Twitter 的布局——左侧是个人资料栏，右侧是纵向信息流，每条说说有头像、昵称、时间、内容，底部还有评论和分享按钮。图片点击可放大灯箱查看，手机端左侧栏自动隐藏。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/img/1789268191761.webp" alt="说说页信息流" width="1536" height="1024" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="图片灯箱">图片灯箱<a href="https://blog.oopss.top/blog/blog-recent-updates#%E5%9B%BE%E7%89%87%E7%81%AF%E7%AE%B1" class="hash-link" aria-label="图片灯箱的直接链接" title="图片灯箱的直接链接" translate="no">​</a></h2>
<p>博客和说说里的图片，我也给它们加上了灯箱效果——点击图片就能放大预览，支持左右切换，用的是 2KB 的轻量插件 ViewImage，已经集成到站内，不依赖外部 CDN。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/img/1789268198953.webp" alt="图片灯箱" width="1536" height="1024" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="数据统计可视化">数据统计可视化<a href="https://blog.oopss.top/blog/blog-recent-updates#%E6%95%B0%E6%8D%AE%E7%BB%9F%E8%AE%A1%E5%8F%AF%E8%A7%86%E5%8C%96" class="hash-link" aria-label="数据统计可视化的直接链接" title="数据统计可视化的直接链接" translate="no">​</a></h2>
<p>后台也接入了 Umami 统计，现在能直观看到博客的浏览量、访客数、跳出率、浏览器和来源分布，不用再猜"到底有没有人看我的博客"了。</p>
<p><img decoding="async" loading="lazy" src="https://jsd.oopss.top/img/1789268204523.webp" alt="数据统计可视化" width="1536" height="1024" class="img_ev3q"></p>
<hr>
<p>这波更新主要围绕「自动化」和「联动」：让换友链、发说说、看数据这些事都尽量省心。如果你也在折腾博客，欢迎来 <a href="https://blog.oopss.top/friends/apply" target="_blank" rel="noopener noreferrer" class="">申请友链</a>，或者加个 <a href="https://blog.oopss.top/rss.xml" target="_blank" rel="noopener noreferrer" class="">RSS 订阅</a>，一起把内容串起来。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[cfmemos—— 一个跑在 Cloudflare 上的自托管笔记]]></title>
            <link>https://blog.oopss.top/blog/cfmemos-cloudflare-notes</link>
            <guid>https://blog.oopss.top/blog/cfmemos-cloudflare-notes</guid>
            <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[用 Cloudflare 全家桶（Workers + D1 + KV + Assets）1:1 复刻 Memos，做成一个轻量、Markdown 原生、数据完全自持的自托管笔记。]]></description>
            <content:encoded><![CDATA[<blockquote>
<p>开源地址：<a href="https://github.com/Brandon-LIs/cfmemos" target="_blank" rel="noopener noreferrer" class="">https://github.com/Brandon-LIs/cfmemos</a>
在线体验：<a href="https://memos.oopss.top/" target="_blank" rel="noopener noreferrer" class="">https://memos.oopss.top</a></p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="为什么做这个">为什么做这个<a href="https://blog.oopss.top/blog/cfmemos-cloudflare-notes#%E4%B8%BA%E4%BB%80%E4%B9%88%E5%81%9A%E8%BF%99%E4%B8%AA" class="hash-link" aria-label="为什么做这个的直接链接" title="为什么做这个的直接链接" translate="no">​</a></h2>
<p><a href="https://github.com/usememos/memos" target="_blank" rel="noopener noreferrer" class="">Memos</a> 是我非常喜欢的一款自托管笔记工具——轻量、Markdown 原生、数据完全自持。于是我想：能不能用 <strong>Cloudflare 全家桶（Workers + D1 + KV + Assets）</strong> 把它 1:1 复刻一遍，让整个服务挂在 Cloudflare 的免费额度上，连服务器都不用买？</p>
<p>结果就是 <strong>cfmemos</strong>。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="它长什么样">它长什么样<a href="https://blog.oopss.top/blog/cfmemos-cloudflare-notes#%E5%AE%83%E9%95%BF%E4%BB%80%E4%B9%88%E6%A0%B7" class="hash-link" aria-label="它长什么样的直接链接" title="它长什么样的直接链接" translate="no">​</a></h2>
<ul>
<li class="">设计上直接移植了 Memos 官方前端的 <strong>OKLCH 设计令牌</strong>（暖白/石墨深色、可读性蓝主色、系统字体），左侧是固定的图标导航栏，中间是时间线，风格和 Memos 几乎一致。</li>
<li class="">支持浅色/深色主题一键切换。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="功能一览">功能一览<a href="https://blog.oopss.top/blog/cfmemos-cloudflare-notes#%E5%8A%9F%E8%83%BD%E4%B8%80%E8%A7%88" class="hash-link" aria-label="功能一览的直接链接" title="功能一览的直接链接" translate="no">​</a></h2>
<ul>
<li class=""><strong>用户系统</strong>：注册 / 登录 / 退出，登录状态用 <strong>30 天 HttpOnly Cookie</strong> 保存；<strong>第一个注册的用户自动成为管理员</strong>。</li>
<li class=""><strong>说说（Memo）</strong>：发布、编辑、删除、置顶；支持完整 <strong>Markdown</strong>（标题、加粗、列表、任务清单、代码块、引用、图片、链接、<code>#标签</code>）。</li>
<li class=""><strong>可见性</strong>：发布时可选 <strong>公开 / 私密</strong>。公开的进入「广场」供所有人（包括未登录访客）浏览；私密的只有自己和 API 能看。</li>
<li class=""><strong>唯一永久链接 + 评论</strong>：每条说说都有独立链接 <code>https://memos.oopss.top/m/&lt;id&gt;</code>，点进去可以看到详情和评论区，发布者和其他登录用户都可以评论。</li>
<li class=""><strong>图片上传</strong>：复用 Brandon 的图床 <code>admin.oopss.top/upload</code>（无需登录，任意字段名），说说里的图片自动走 jsdelivr 镜像并带兜底。</li>
<li class=""><strong>头像上传</strong>、<strong>昵称修改</strong>、<strong>生成 Memos 兼容的 API Key</strong>。</li>
<li class=""><strong>API 文档页</strong>：内置在 <code>/api-docs</code> 专用 URL，接口表格 + 输出示例齐全。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="技术栈全部免费额度">技术栈（全部免费额度）<a href="https://blog.oopss.top/blog/cfmemos-cloudflare-notes#%E6%8A%80%E6%9C%AF%E6%A0%88%E5%85%A8%E9%83%A8%E5%85%8D%E8%B4%B9%E9%A2%9D%E5%BA%A6" class="hash-link" aria-label="技术栈（全部免费额度）的直接链接" title="技术栈（全部免费额度）的直接链接" translate="no">​</a></h2>
<table><thead><tr><th>组件</th><th>用途</th></tr></thead><tbody><tr><td><strong>Cloudflare Workers</strong></td><td>后端路由 + 静态资源托管</td></tr><tr><td><strong>Cloudflare D1</strong>（SQLite）</td><td>用户、说说、标签、评论数据</td></tr><tr><td><strong>Cloudflare KV</strong></td><td>登录会话</td></tr><tr><td><strong>Cloudflare Assets</strong></td><td>前端 SPA（原生 HTML/CSS/JS，零构建）</td></tr><tr><td><strong>@cloudflare Pages/Workers</strong></td><td>部署（<code>wrangler deploy</code>）</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="与-memos-的-api-兼容">与 Memos 的 API 兼容<a href="https://blog.oopss.top/blog/cfmemos-cloudflare-notes#%E4%B8%8E-memos-%E7%9A%84-api-%E5%85%BC%E5%AE%B9" class="hash-link" aria-label="与 Memos 的 API 兼容的直接链接" title="与 Memos 的 API 兼容的直接链接" translate="no">​</a></h2>
<p>除了自带的前端，我还实现了 <strong>Memos v1 兼容的 REST API</strong>（<code>/api/v1</code>）：<code>instance/profile</code>、<code>auth/me</code>、<code>signin</code>、<code>users</code>、<code>memos</code>、<code>comments</code> 等，返回结构与官方一致。这意味着<strong>官方 Memos 客户端/文档站可以直接对接</strong>这个实例。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="部署">部署<a href="https://blog.oopss.top/blog/cfmemos-cloudflare-notes#%E9%83%A8%E7%BD%B2" class="hash-link" aria-label="部署的直接链接" title="部署的直接链接" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">git clone https://github.com/Brandon-LIs/cfmemos.git &amp;&amp; cd cfmemos</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">wrangler login</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">wrangler d1 create memos-cf-db            # 把 database_id 填进 wrangler.toml</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">wrangler kv namespace create SESSIONS      # 把 id 填进 wrangler.toml</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">npm run db:migrate                        # 应用 D1 迁移</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">wrangler deploy                           # 一键上线</span><br></div></code></pre></div></div>
<p>第一个注册的账号就是管理员。</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="测试">测试<a href="https://blog.oopss.top/blog/cfmemos-cloudflare-notes#%E6%B5%8B%E8%AF%95" class="hash-link" aria-label="测试的直接链接" title="测试的直接链接" translate="no">​</a></h2>
<p>内置了离线后端测试（模拟 D1 + KV，不需要真实账号）：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">node test/backend.test.mjs   # 目前 41 个用例全绿</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="为什么用-cloudflare-而不是-vps">为什么用 Cloudflare 而不是 VPS<a href="https://blog.oopss.top/blog/cfmemos-cloudflare-notes#%E4%B8%BA%E4%BB%80%E4%B9%88%E7%94%A8-cloudflare-%E8%80%8C%E4%B8%8D%E6%98%AF-vps" class="hash-link" aria-label="为什么用 Cloudflare 而不是 VPS的直接链接" title="为什么用 Cloudflare 而不是 VPS的直接链接" translate="no">​</a></h2>
<ul>
<li class=""><strong>零成本</strong>：全部跑在免费额度上。</li>
<li class=""><strong>免运维</strong>：没有服务器要升级、打补丁。</li>
<li class=""><strong>全球加速</strong>：Cloudflare 边缘节点就近响应。</li>
<li class=""><strong>数据可控</strong>：D1 是标准的 SQLite 语义，随时可以导出。</li>
</ul>
<p>如果你也喜欢"小而美"的笔记工具，欢迎去 GitHub 看看、点个 Star、提 Issue，或者直接 fork 一份自定义成你自己的版本。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[襄阳二日游记]]></title>
            <link>https://blog.oopss.top/blog/xiangyang-2-day-trip</link>
            <guid>https://blog.oopss.top/blog/xiangyang-2-day-trip</guid>
            <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[借着楚超第 12 轮宜昌队对襄阳队的比赛，顺道在襄阳游玩两日。现场看球、南阳古城墙、汉江江景与襄阳市博物馆的行程记录。]]></description>
            <content:encoded><![CDATA[<blockquote>
<p>湖北省城市足球联赛（楚超）第 12 轮宜昌东阳光队vs襄阳东风风神队的比赛 8.1 日在襄阳举行。借着这个机会，我顺道在襄阳游玩两日，也算是故地重游了吧。</p>
</blockquote>
<p>·楚超球赛<br>
宜昌队与襄阳队进行了激烈的对抗，作为我现场看的第一场楚超球赛，现场的气氛确实十分震撼，球员之间的配合也相当娴熟，几乎零失误。在双方队员激烈的攻防之下，最终比分保持了 0:0。襄阳队和宜昌队各积 1 分，暂时并列积分榜第三。
<img decoding="async" loading="lazy" src="https://jsd.onmicrosoft.cn/npm/br-blog@1.0.5/covers/08020002.webp" alt="IMG20260801202139_BURST002" width="3072" height="4096" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020003.webp" alt="IMG20260801212416" width="3072" height="4096" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020004.webp" alt="IMG20260801212929" width="4096" height="3072" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020005.webp" alt="IMG20260801214107" width="3072" height="4096" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020006.webp" alt="IMG20260801214527" width="4096" height="3072" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020007.webp" alt="IMG20260801215530" width="3072" height="4096" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020008.webp" alt="IMG20260801215617" width="4096" height="3072" class="img_ev3q"></p>
<p>·米公祠<br>
坐落在襄阳樊城汉江边的米公祠，原名米家庵，是专为纪念北宋书法大家米芾修建的祠宇，也是国内保存最完整的米芾纪念建筑群，属全国重点文保单位、3A级景区。米公祠未成年人免费，全票20元，大学生半票10元。</p>
<p>始建于元代，经明清多次重修，整座院落是雅致的江南园林格局，白墙黛瓦、古银杏与池水相映。祠内碑廊珍藏190余方石刻，复刻米芾《蜀素帖》等经典行书，还有苏轼、黄庭坚、蔡襄宋代四家笔墨，是难得的书法宝库 。</p>
<p>园内拜殿、宝晋斋、洁亭错落分布，既能了解米芾“米颠”爱石、洁癖的趣事，登上仰高堂还能隔江眺望襄阳古城墙，兼具人文底蕴与临水风光，适合慢逛赏字、古风拍照。
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020009.webp" alt="IMG20260802104531" width="3072" height="4096" class="img_ev3q">
园中有很多亭台楼阁，十分雅致。
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020011.webp" alt="IMG20260802110102" width="3072" height="4096" class="img_ev3q"></p>
<p>·襄阳古城<br>
坐落汉江南岸的襄阳古城，有着2800余年建城史，人称华夏第一城池、铁打的襄阳，是国内保存完整的明清古城垣之一 。</p>
<p>古城最独特的亮点是亚洲最宽护城河，平均宽180米，城北以汉江天然为屏障，城墙全长7.3公里，六座城门皆配有瓮城，古代防御体系完整壮观 。登城墙全程免费，地标临汉门（小北门）直面汉江，白日可眺望对岸樊城、米公祠，夜晚城楼灯火倒映江面，氛围感十足。</p>
<p>城内北街古巷烟火浓郁，藏着襄阳牛肉面、黄酒等本地特色小吃；还有明代藩王府遗存绿影壁、昭明台博物馆、夫人城等古迹，三国、南宋守城的历史故事贯穿整座城池。既有金戈铁马的厚重历史，又有市井生活的温柔烟火，逛完对岸米公祠，过江漫步古城，是来襄阳必打卡的行程。</p>
<p>襄阳古城昭明台二楼、三楼为昭明台博物馆，全票 30 元，未成年人、60-70 岁20元。个人认为值得一看。
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020010.webp" alt="IMG20260802121721_01" width="3072" height="4096" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020012.webp" alt="IMG20260802125226" width="3072" height="4096" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020013.webp" alt="IMG20260802134327" width="4096" height="3072" class="img_ev3q"></p>
<p>·汉江江景<br>
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020014.webp" alt="IMG20260802111315" width="4096" height="3072" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020015.webp" alt="IMG20260802120109" width="4096" height="3072" class="img_ev3q"></p>
<p>·襄阳市博物馆<br></p>
<p>馆内文物众多，布展合理，历史底蕴丰富，镇馆之宝为三国青铜马。搭配免费讲解更佳。
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020016.webp" alt="IMG20260802153400" width="3072" height="4096" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020017.webp" alt="IMG20260802153431" width="4096" height="3072" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020018.webp" alt="IMG20260802155714" width="4096" height="3072" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020019.webp" alt="IMG20260802160153" width="4096" height="3072" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020020.webp" alt="IMG20260802160351" width="4096" height="3072" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020021.webp" alt="IMG20260802161504" width="4096" height="3072" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020022.webp" alt="IMG20260802162530" width="3072" height="4096" class="img_ev3q">
<img decoding="async" loading="lazy" src="https://jsd.oopss.top/uploads/2026/08020023.webp" alt="IMG20260802164008" width="3072" height="4096" class="img_ev3q"></p>
<p>总的来说，襄阳这座城市历史悠久，文化深厚，不虚此行！</p>]]></content:encoded>
            <category>生活</category>
        </item>
        <item>
            <title><![CDATA[欢迎来到我的博客]]></title>
            <link>https://blog.oopss.top/blog/welcome-to-my-blog</link>
            <guid>https://blog.oopss.top/blog/welcome-to-my-blog</guid>
            <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[欢迎来到我的博客。这里记录学习与生活，主要分享前端与计算机科学的笔记、AI 与工程化的实践，以及做过的一些小项目。]]></description>
            <content:encoded><![CDATA[<p>欢迎来到我的博客！</p>
<p>这里是我记录学习与生活的地方，主要分享：</p>
<ul>
<li class="">前端与计算机科学的学习笔记</li>
<li class="">AI 与工程化相关内容</li>
<li class="">我做过的一些小项目</li>
</ul>
<p>博客使用 <a href="https://docusaurus.io/" target="_blank" rel="noopener noreferrer" class="">Docusaurus</a> 构建，支持本地搜索，评论区基于 Gitalk，欢迎在评论区交流讨论。</p>
<p>联系邮箱：<a href="mailto:bcihal@qq.com" target="_blank" rel="noopener noreferrer" class="">bcihal@qq.com</a></p>
]]></content:encoded>
            <category>博客</category>
        </item>
    </channel>
</rss>