Compare commits
2 Commits
dependabot
...
b60f893cbf
Author | SHA1 | Date | |
---|---|---|---|
b60f893cbf | |||
182bf44fcd |
2
.github/workflows/main.yml
vendored
@ -14,7 +14,7 @@ jobs:
|
||||
- name: Pull in dev.to posts
|
||||
uses: gautamkrishnar/blog-post-workflow@v1
|
||||
with:
|
||||
template: $newline - [$date $title]($url)
|
||||
template: $newline - [$date 【$categories】 $title]($url)
|
||||
date_format: "yyyy-mm-dd"
|
||||
feed_list: "https://blog.kazoottt.top/rss.xml"
|
||||
max_post_count: 25
|
||||
|
61
README.md
@ -1,15 +1,52 @@
|
||||
# KazooTTT | 声控烤箱 博客
|
||||
|
||||
## 关于我
|
||||
|
||||
无论是博客还是笔记,最重要的服务对象是我自己。
|
||||
|
||||
[平台合集](<https://bento.me/kazoottt>)
|
||||
|
||||
[个人博客|Blog](<https://blog.kazoottt.top/>)
|
||||
|
||||
[个人笔记 | Notes](<https://notes.kazoottt.top/>)
|
||||
|
||||
[GitHub](<https://github.com/KazooTTT>)
|
||||
|
||||
## [Blog](https://blog.kazoottt.top/posts/)
|
||||
<!-- BLOG-POST-LIST:START -->
|
||||
- [2025-02-09 【周报】 2025-W06](https://blog.kazoottt.top/posts/2025-W06/)
|
||||
- [2025-02-09 【前端】 不引入astro wiki plugin实现链接跳转的思路](https://blog.kazoottt.top/posts/redirect-links-without-astro-wiki-plugin/)
|
||||
- [2025-02-06 【软件】 Obsidian Web Clipper 离线阅读同人作品](https://blog.kazoottt.top/posts/obsidian-web-clipper-offline-reading-fanfics/)
|
||||
- [2025-02-01 【软件】 封面生成器推荐](https://blog.kazoottt.top/posts/cover-generator/)
|
||||
- [2025-01-30 【年报】 Y5-2024年度总结](https://blog.kazoottt.top/posts/2024-annual-summary/)
|
||||
- [2025-01-14 【frontend】 how to generate the path like router config in vite + react + react-router project](https://blog.kazoottt.top/posts/how-to-generate-the-path-like-router-config-in-vite-react-react-router-project/)
|
||||
- [2025-01-12 【随笔】 “原来亲人在侧,是我最深重的感谢”](https://blog.kazoottt.top/posts/plain-and-simple-is-true/)
|
||||
- [2025-01-07 【随笔】 ollama + excel处理器开发总结](https://blog.kazoottt.top/posts/ollama-excel-processor-development-summary/)
|
||||
- [2025-01-06 【项目】 MUV家元旦24H限定食堂 - 汇总网站](https://blog.kazoottt.top/posts/milklovemuv/)
|
||||
- [2024-12-19 【推荐】 值得一看的博客](https://blog.kazoottt.top/posts/blogs-worth-reading/)
|
||||
- [2024-12-18 【】 与hanser有关的github仓库](https://blog.kazoottt.top/posts/hanser-repository/)
|
||||
- [2024-12-17 【】 Share My Incorrect Usage Cases of Zustand](https://blog.kazoottt.top/posts/share-my-incorrect-usage-case-of-zustand-en/)
|
||||
- [2024-12-17 【前端】 分享一下我的zustand错误使用案例](https://blog.kazoottt.top/posts/zustand-use-record/)
|
||||
- [2024-12-11 【】 raycast + imessage 2fa,messauto的半平替](https://blog.kazoottt.top/posts/raycast-imessage-2fa/)
|
||||
- [2024-11-29 【】 使用github action定时同步obsidian内容到博客仓库](https://blog.kazoottt.top/posts/synchronize-profiles-to-remote-and-local-on-a-regular-basis/)
|
||||
- [2024-11-23 【软件】 个人工具与设备清单](https://blog.kazoottt.top/posts/personal-tools-and-equipment-inventory-202502/)
|
||||
- [2024-11-12 【旅行】 五一 上海-重庆-成都流水账](https://blog.kazoottt.top/posts/may-1st-shanghai-chongqing-chengdu-flow-account/)
|
||||
- [2024-09-02 【旅行】 2024 永不完结的冒险 武汉线下vlog](https://blog.kazoottt.top/posts/yukari-2024-live/)
|
||||
- [2024-07-30 【项目】 微信读书网页版复制快捷键](https://blog.kazoottt.top/posts/wechat-reading-web-version-copy-shortcut/)
|
||||
- [2024-07-17 【旅行】 BW记录-个人向流水账版](https://blog.kazoottt.top/posts/bw-record-personal-notes/)
|
||||
- [2024-07-11 【周报】 2024-W03.md](https://blog.kazoottt.top/posts/2024-W03/)
|
||||
- [2024-07-11 【周报】 2024-W03-编程篇](https://blog.kazoottt.top/posts/2024-W03-programming/)
|
||||
- [2024-07-11 【周报】 2023-W48 转岗了](https://blog.kazoottt.top/posts/2023-W48/)
|
||||
- [2024-07-08 【旅行】 端午去广州玩了](https://blog.kazoottt.top/posts/duanwu-guangzhou-trip/)
|
||||
- [2024-07-01 【软件】 如何自动同步某个文件夹的图片到某个相册中](https://blog.kazoottt.top/posts/auto-sync-folder-to-album/)<!-- BLOG-POST-LIST:END -->
|
||||
|
||||
## [Memos](https://blog.kazoottt.top/notes/)
|
||||
<!-- MEMO-POST-LIST:START -->
|
||||
- [2025-02-11 碎片-2025-02-11 12时32分](https://blog.kazoottt.top/notes/fragmented-notes-2025-02-11-12-32-42/)
|
||||
- [2025-02-08 如何解决 Nginx 启动时未联网无法访问DNS而挂掉的问题](https://blog.kazoottt.top/notes/nginx-startup-fix-configure-local-hosts-file/)
|
||||
- [2025-02-06 小红书长文切图笔记?其实 craft 就可以实现。](https://blog.kazoottt.top/notes/use-craft-to-cut-the-long-text-note-of-xiaohongshu/)
|
||||
- [2025-02-06 试试action5 pro推流到本地rtmp和有线连接的效果](https://blog.kazoottt.top/notes/action5-pro-obs-rtmp/)
|
||||
- [2025-02-05 askfm的关停](https://blog.kazoottt.top/notes/askfm-shutdown/)
|
||||
- [2025-02-05 使用 1password 的 secure notes 存储提示词](https://blog.kazoottt.top/notes/use-1password-secure-notes-to-store-prompt-templates/)
|
||||
- [2025-02-03 记录一次滴滴打车维权](https://blog.kazoottt.top/notes/record-a-ride-sharing-complaint/)
|
||||
- [2025-01-31 Blender on macOS - Steam Version Limitations for Apple Silicon Devices](https://blog.kazoottt.top/notes/blender-macos-steam-version-limitations/)
|
||||
- [2025-01-31 How to Split Editor Windows in Blender](https://blog.kazoottt.top/notes/split-window-in-blender/)
|
||||
- [2025-01-20 How to Separate Objects in Blender](https://blog.kazoottt.top/notes/how-to-separate-object-in-blender/)
|
||||
- [2025-01-20 win11如何下载chatgpt](https://blog.kazoottt.top/notes/win11chatgpt/)
|
||||
- [2025-01-15 how to make a hollow cylinder in blender](https://blog.kazoottt.top/notes/how-to-make-a-hollow-cylinder-in-blender/)
|
||||
- [2025-01-07 在浏览器中 opengl 的配置与检测](https://blog.kazoottt.top/notes/how-to-check-opengl-configuration-and-detection-in-browser/)
|
||||
- [2025-01-06 2025-01-06 星期一](https://blog.kazoottt.top/notes/diary-2025-01-06/)
|
||||
- [2025-01-06 MUV家元旦24H限定食堂 - 汇总网站](https://blog.kazoottt.top/notes/milklovemuv/)
|
||||
- [2025-01-05 whisper ui 下载模型 镜像设置](https://blog.kazoottt.top/notes/whisper-ui-download-model-mirror-setting/)
|
||||
- [2024-12-23 2024-12-23 星期一 学习 unity day01](https://blog.kazoottt.top/notes/diary-2024-12-23/)
|
||||
- [2024-12-19 2024-12-19 星期四](https://blog.kazoottt.top/notes/diary-2024-12-19/)
|
||||
- [2024-12-19 使用cloudflare部署remix项目](https://blog.kazoottt.top/notes/deploy-remix-app-by-cloudflare/)
|
||||
- [2024-12-19 合并多个PDF](https://blog.kazoottt.top/notes/merge-pdfs/)<!-- MEMO-POST-LIST:END -->
|
||||
|
@ -26,7 +26,7 @@ import rehypeUnwrapImages from "rehype-unwrap-images";
|
||||
export default defineConfig({
|
||||
site: siteConfig.url,
|
||||
image: {
|
||||
domains: ["webmention.io", "kazoottt.top"],
|
||||
domains: ["webmention.io"],
|
||||
service: passthroughImageService(),
|
||||
},
|
||||
integrations: [
|
||||
|
@ -21,7 +21,7 @@
|
||||
"@astrojs/rss": "4.0.11",
|
||||
"@astrojs/sitemap": "3.2.1",
|
||||
"@giscus/react": "^3.1.0",
|
||||
"@tailwindcss/vite": "4.0.7",
|
||||
"@tailwindcss/vite": "4.0.3",
|
||||
"astro": "5.2.5",
|
||||
"astro-expressive-code": "^0.40.1",
|
||||
"astro-icon": "^1.1.5",
|
||||
@ -42,7 +42,7 @@
|
||||
"rehype-unwrap-images": "^1.0.0",
|
||||
"remark-directive": "^3.0.1",
|
||||
"sanitize-html": "^2.14.0",
|
||||
"satori": "0.12.2",
|
||||
"satori": "0.12.1",
|
||||
"satori-html": "^0.3.2",
|
||||
"sharp": "^0.33.5",
|
||||
"tailwind-merge": "^3.0.1",
|
||||
@ -66,8 +66,7 @@
|
||||
"prettier-plugin-astro": "0.14.1",
|
||||
"prettier-plugin-tailwindcss": "^0.6.11",
|
||||
"reading-time": "^1.5.0",
|
||||
"tailwindcss": "4.0.7",
|
||||
"tailwindcss": "4.0.4",
|
||||
"typescript": "^5.7.3"
|
||||
},
|
||||
"packageManager": "pnpm@10.7.0+sha512.6b865ad4b62a1d9842b61d674a393903b871d9244954f652b8842c2b553c72176b278f64c463e52d40fff8aba385c235c8c9ecf5cc7de4fd78b8bb6d49633ab6"
|
||||
}
|
||||
}
|
||||
|
7734
pnpm-lock.yaml
generated
Normal file
Before Width: | Height: | Size: 3.7 MiB |
Before Width: | Height: | Size: 7.0 MiB |
Before Width: | Height: | Size: 4.7 MiB |
Before Width: | Height: | Size: 9.6 MiB |
Before Width: | Height: | Size: 210 KiB |
Before Width: | Height: | Size: 10 MiB |
Before Width: | Height: | Size: 147 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 158 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 134 KiB |
Before Width: | Height: | Size: 458 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 246 KiB |
Before Width: | Height: | Size: 752 KiB |
Before Width: | Height: | Size: 847 KiB |
Before Width: | Height: | Size: 218 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 9.9 MiB |
Before Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 603 KiB |
Before Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 4.1 MiB |
Before Width: | Height: | Size: 19 MiB |
Before Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 134 KiB |
Before Width: | Height: | Size: 791 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 359 KiB |
Before Width: | Height: | Size: 317 KiB |
Before Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 127 KiB |
Before Width: | Height: | Size: 459 KiB |
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 151 KiB |
Before Width: | Height: | Size: 3.6 MiB |
Before Width: | Height: | Size: 3.2 MiB |
Before Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 241 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 3.6 MiB |
Before Width: | Height: | Size: 17 MiB |
Before Width: | Height: | Size: 241 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 219 KiB |
Before Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 17 MiB |
Before Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 788 KiB |
Before Width: | Height: | Size: 147 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 827 KiB |
Before Width: | Height: | Size: 18 MiB |
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 455 KiB |
Before Width: | Height: | Size: 354 KiB |
Before Width: | Height: | Size: 478 KiB |
Before Width: | Height: | Size: 159 KiB |
Before Width: | Height: | Size: 2.2 MiB |
Before Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 151 KiB |
Before Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 282 KiB |
Before Width: | Height: | Size: 454 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 2.0 MiB |
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.0 MiB |
BIN
src/assets/images/IMG-20250104114722956.png
Normal file
After Width: | Height: | Size: 304 KiB |
@ -61,16 +61,19 @@ const { className = "", dataPagefindBody = true } = Astro.props;
|
||||
|
||||
/* 修改图片相关样式 */
|
||||
:global(article img) {
|
||||
opacity: 0;
|
||||
position: relative;
|
||||
background-color: #f0f0f0;
|
||||
transition: all 0.5s ease-in-out;
|
||||
}
|
||||
|
||||
:global(article img.loading) {
|
||||
opacity: 1;
|
||||
filter: blur(10px);
|
||||
}
|
||||
|
||||
:global(article img.loaded) {
|
||||
opacity: 1;
|
||||
filter: blur(0);
|
||||
}
|
||||
</style>
|
||||
|
@ -1,30 +0,0 @@
|
||||
---
|
||||
import { getAllCollectionPosts } from "@/data/post";
|
||||
import { MAX_LATEST_POSTS } from "@/utils/constant";
|
||||
import { getLatestUpdatedPost } from "@/utils/date";
|
||||
const allPosts = await getAllCollectionPosts();
|
||||
const latestUpdatedPost = allPosts.sort(getLatestUpdatedPost).slice(0, MAX_LATEST_POSTS);
|
||||
---
|
||||
|
||||
{
|
||||
(
|
||||
<div>
|
||||
<h2 class="title mb-4 flex items-center gap-2 text-lg">
|
||||
<a class="">最近更新</a>
|
||||
</h2>
|
||||
<ul class="flex flex-wrap gap-2">
|
||||
{latestUpdatedPost.map((post) => (
|
||||
<li>
|
||||
<a
|
||||
href={`${post.collection === "post" ? "/posts/" : "/notes/"}${post.id}/`}
|
||||
class="hover:text-link"
|
||||
>
|
||||
<span>{post.data.date_modified.toLocaleDateString()}</span>
|
||||
{post.data.title}
|
||||
</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
)
|
||||
}
|
@ -27,16 +27,6 @@ const socialLinks: {
|
||||
link: "https://x.com/kazoottt",
|
||||
name: "mdi:twitter",
|
||||
},
|
||||
{
|
||||
friendlyName: "Bilibili",
|
||||
link: "https://space.bilibili.com/391236013",
|
||||
name: "mdi:video",
|
||||
},
|
||||
{
|
||||
friendlyName: "YouTube",
|
||||
link: "https://www.youtube.com/@kazoottt4718",
|
||||
name: "mdi:youtube",
|
||||
},
|
||||
{
|
||||
friendlyName: "Photo",
|
||||
link: "https://unsplash.com/@kazoottt",
|
||||
@ -45,7 +35,7 @@ const socialLinks: {
|
||||
{
|
||||
friendlyName: "汇总",
|
||||
link: "https://bento.me/KazooTTT",
|
||||
name: "mdi:open-in-new",
|
||||
name: "mdi:link",
|
||||
},
|
||||
];
|
||||
---
|
||||
|
@ -1,18 +1,18 @@
|
||||
---
|
||||
import type { CollectionEntry } from "astro:content";
|
||||
import FormattedDate from "@/components/FormattedDate.astro";
|
||||
import Card from "../componentsBefore/Card.astro";
|
||||
import { Icon } from "astro-icon/components";
|
||||
import Label from "../componentsBefore/Label.astro";
|
||||
import type { PostItem } from "@/types";
|
||||
|
||||
interface Props {
|
||||
content: PostItem;
|
||||
content: CollectionEntry<"post">;
|
||||
readingTime: string;
|
||||
ogImage: string;
|
||||
}
|
||||
|
||||
const {
|
||||
content: { data, dateToCmp },
|
||||
content: { data },
|
||||
readingTime,
|
||||
ogImage,
|
||||
} = Astro.props;
|
||||
@ -27,7 +27,13 @@ const socialImageURL = new URL(ogImage ? ogImage : "/social-card.png", Astro.url
|
||||
{
|
||||
socialImageURL && (
|
||||
<div class="mb-6 aspect-video">
|
||||
<img alt={socialImageURL} class="rounded-lg object-cover" src={socialImageURL} />
|
||||
<img
|
||||
alt={socialImageURL}
|
||||
class="rounded-lg object-cover"
|
||||
fetchpriority="high"
|
||||
loading="eager"
|
||||
src={socialImageURL}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@ -48,7 +54,7 @@ const socialImageURL = new URL(ogImage ? ogImage : "/social-card.png", Astro.url
|
||||
</h1>
|
||||
<div class="flex flex-wrap items-center gap-x-3 gap-y-2">
|
||||
<p class="font-semibold">
|
||||
<FormattedDate date={dateToCmp} dateTimeOptions={dateTimeOptions} /> /{" "}
|
||||
<FormattedDate date={data.date} dateTimeOptions={dateTimeOptions} /> /{" "}
|
||||
{readingTime}
|
||||
</p>
|
||||
{
|
||||
|
@ -1,10 +1,10 @@
|
||||
---
|
||||
import type { CollectionEntry } from "astro:content";
|
||||
import FormattedDate from "@/components/FormattedDate.astro";
|
||||
import type { HTMLTag, Polymorphic } from "astro/types";
|
||||
import type { AllItem } from "@/types";
|
||||
|
||||
type Props<Tag extends HTMLTag> = Polymorphic<{ as: Tag }> & {
|
||||
post: AllItem;
|
||||
post: CollectionEntry<"post">;
|
||||
withDesc?: boolean;
|
||||
};
|
||||
|
||||
@ -17,12 +17,7 @@ const { as: Tag = "div", post, withDesc = false } = Astro.props;
|
||||
/>
|
||||
<Tag>
|
||||
{post.data.draft && <span class="text-red-500">(Draft) </span>}
|
||||
<a
|
||||
class="hover:text-link"
|
||||
data-astro-prefetch
|
||||
href={`${post.collection === "post" ? "/posts/" : "/notes/"}${post.id}/`}
|
||||
>
|
||||
{post.data.fixedToTop && <span class="text-accent-2 mr-2">*</span>}
|
||||
<a class="cactus-link" data-astro-prefetch href={`/posts/${post.id}/`}>
|
||||
{post.data.title}
|
||||
</a>
|
||||
</Tag>
|
||||
|
@ -23,15 +23,12 @@ const year = new Date().getFullYear();
|
||||
</div>
|
||||
<nav
|
||||
aria-labelledby="footer_links"
|
||||
class="flex flex-wrap gap-x-2 sm:gap-x-0 sm:divide-x sm:divide-gray-500"
|
||||
class="flex gap-x-2 sm:gap-x-0 sm:divide-x sm:divide-gray-500"
|
||||
>
|
||||
<p id="footer_links" class="sr-only">More on this site</p>
|
||||
{
|
||||
menuLinks.map((link) => (
|
||||
<a
|
||||
class="hover:text-global-text px-2 py-2 hover:underline sm:px-4 sm:py-0"
|
||||
href={link.path}
|
||||
>
|
||||
<a class="hover:text-global-text px-4 py-2 hover:underline sm:py-0" href={link.path}>
|
||||
{link.title}
|
||||
</a>
|
||||
))
|
||||
|