Next.js!!!
3
.eslintrc.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": ["next/core-web-vitals", "next/typescript"]
|
||||
}
|
36
.gitignore
vendored
@ -1,2 +1,36 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/public
|
||||
/.pnp
|
||||
.pnp.js
|
||||
.yarn/install-state.gz
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# local env files
|
||||
.env*.local
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
# typescript
|
||||
*.tsbuildinfo
|
||||
next-env.d.ts
|
||||
|
116
_config.yml
@ -1,116 +0,0 @@
|
||||
# Hexo Configuration
|
||||
## Docs: https://hexo.io/docs/configuration.html
|
||||
## Source: https://github.com/hexojs/hexo/
|
||||
|
||||
# Site
|
||||
title: APS NAV
|
||||
subtitle: https://aps.icu
|
||||
description: APS NAV
|
||||
keywords: APS NAV,导航,APS,mei,linuxcat,linuxcat周刊,开源,软件,推荐,分享
|
||||
author: mei
|
||||
language: zh_CN
|
||||
timezone: "Asia/Shanghai"
|
||||
|
||||
# URL
|
||||
## If your site is put in a subdirectory, set url as 'http://example.com/child' and root as '/child/'
|
||||
url: https://navi.harriswong.top
|
||||
root: /
|
||||
permalink: :title.html
|
||||
permalink_defaults:
|
||||
pretty_urls:
|
||||
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
|
||||
trailing_html: true # Set to false to remove trailing '.html' from permalinks
|
||||
|
||||
# Directory
|
||||
source_dir: source
|
||||
public_dir: public
|
||||
# tag_dir:
|
||||
# archive_dir:
|
||||
# category_dir:
|
||||
code_dir: downloads/code
|
||||
i18n_dir: :lang
|
||||
skip_render:
|
||||
|
||||
# Writing
|
||||
new_post_name: :title.md # File name of new posts
|
||||
default_layout: post
|
||||
titlecase: false # Transform title into titlecase
|
||||
external_link:
|
||||
enable: true # Open external links in new tab
|
||||
field: site # Apply to the whole site
|
||||
exclude: ""
|
||||
filename_case: 0
|
||||
render_drafts: false
|
||||
post_asset_folder: false
|
||||
relative_link: false
|
||||
future: true
|
||||
highlight:
|
||||
enable: true
|
||||
line_number: true
|
||||
auto_detect: false
|
||||
tab_replace: ""
|
||||
wrap: true
|
||||
hljs: false
|
||||
prismjs:
|
||||
enable: false
|
||||
preprocess: true
|
||||
line_number: true
|
||||
tab_replace: ""
|
||||
|
||||
# Home page setting
|
||||
# path: Root path for your blogs index page. (default = '')
|
||||
# per_page: Posts displayed per page. (0 = disable pagination)
|
||||
# order_by: Posts order. (Order by date descending by default)
|
||||
index_generator:
|
||||
path: ""
|
||||
per_page: 10
|
||||
order_by: -date
|
||||
|
||||
# Category & Tag
|
||||
default_category: uncategorized
|
||||
category_map:
|
||||
tag_map:
|
||||
|
||||
# Metadata elements
|
||||
## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
|
||||
meta_generator: true
|
||||
|
||||
# Date / Time format
|
||||
## Hexo uses Moment.js to parse and display date
|
||||
## You can customize the date format as defined in
|
||||
## http://momentjs.com/docs/#/displaying/format/
|
||||
date_format: YYYY-MM-DD
|
||||
time_format: HH:mm:ss
|
||||
## updated_option supports 'mtime', 'date', 'empty'
|
||||
updated_option: "mtime"
|
||||
|
||||
# Pagination
|
||||
## Set per_page to 0 to disable pagination
|
||||
per_page: 10
|
||||
pagination_dir: page
|
||||
|
||||
# Include / Exclude file(s)
|
||||
## include:/exclude: options only apply to the 'source/' folder
|
||||
include:
|
||||
exclude:
|
||||
ignore:
|
||||
|
||||
# Extensions
|
||||
## Plugins: https://hexo.io/plugins/
|
||||
## Themes: https://hexo.io/themes/
|
||||
theme: webstack
|
||||
|
||||
# Deployment
|
||||
## Docs: https://hexo.io/docs/one-command-deployment
|
||||
deploy:
|
||||
type: git
|
||||
#type: baidu_url_submitter
|
||||
repo: git@github.com:harrisblog/navigation.git
|
||||
branch: main
|
||||
|
||||
# 百度收录
|
||||
baidu_url_submit:
|
||||
count: 100 # 提交最新的一个链接
|
||||
host: navi.harriswong.top # 在百度站长平台中注册的域名
|
||||
token: DWR6kIWxQCP9u9SW # 请注意这是您的秘钥, 所以请不要把博客源代码发布在公众仓库里!
|
||||
path: baidu_urls.txt # 文本文档的地址, 新链接会保存在此文本文档里
|
68
app/api/load-yaml-data/route.ts
Normal file
@ -0,0 +1,68 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
import fs from 'fs/promises';
|
||||
import path from 'path';
|
||||
import yaml from 'js-yaml';
|
||||
|
||||
// Define the structure of the parsed data
|
||||
type ParsedItem = {
|
||||
name: string;
|
||||
url: string;
|
||||
description: string;
|
||||
subcategory?: string;
|
||||
};
|
||||
|
||||
type CategoryData = {
|
||||
[category: string]: {
|
||||
name: string;
|
||||
items: ParsedItem[];
|
||||
}[];
|
||||
};
|
||||
|
||||
export async function GET() {
|
||||
try {
|
||||
const dataDir = path.join(process.cwd(), 'data');
|
||||
const files = await fs.readdir(dataDir);
|
||||
const yamlFiles = files.filter(file => file.endsWith('.yml') || file.endsWith('.yaml'));
|
||||
|
||||
const data: CategoryData = {};
|
||||
|
||||
for (const file of yamlFiles) {
|
||||
const filePath = path.join(dataDir, file);
|
||||
const fileContent = await fs.readFile(filePath, 'utf8');
|
||||
const parsedData = yaml.load(fileContent) as ParsedItem[];
|
||||
|
||||
// Ensure parsedData is an array
|
||||
if (!Array.isArray(parsedData)) {
|
||||
console.error(`Parsed data from ${file} is not an array:`, parsedData);
|
||||
continue;
|
||||
}
|
||||
|
||||
const category = path.parse(file).name;
|
||||
|
||||
// Group items by their subcategory
|
||||
const subCategories: { [key: string]: ParsedItem[] } = {};
|
||||
parsedData.forEach(item => {
|
||||
const subCategory = item.subcategory || '默认';
|
||||
if (!subCategories[subCategory]) {
|
||||
subCategories[subCategory] = [];
|
||||
}
|
||||
subCategories[subCategory].push({
|
||||
name: item.name,
|
||||
url: item.url,
|
||||
description: item.description
|
||||
});
|
||||
});
|
||||
|
||||
// Convert to array of subcategories
|
||||
data[category] = Object.entries(subCategories).map(([name, items]) => ({
|
||||
name,
|
||||
items
|
||||
}));
|
||||
}
|
||||
|
||||
return NextResponse.json(data);
|
||||
} catch (error) {
|
||||
console.error('Error loading YAML data:', error);
|
||||
return NextResponse.json({ error: 'Failed to load data' }, { status: 500 });
|
||||
}
|
||||
}
|
BIN
app/favicon.ico
Normal file
After Width: | Height: | Size: 6.0 KiB |
BIN
app/fonts/GeistMonoVF.woff
Normal file
BIN
app/fonts/GeistVF.woff
Normal file
78
app/globals.css
Normal file
@ -0,0 +1,78 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
body {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
@layer utilities {
|
||||
.text-balance {
|
||||
text-wrap: balance;
|
||||
}
|
||||
}
|
||||
|
||||
@layer base {
|
||||
:root {
|
||||
--background: 0 0% 100%;
|
||||
--foreground: 0 0% 3.9%;
|
||||
--card: 0 0% 100%;
|
||||
--card-foreground: 0 0% 3.9%;
|
||||
--popover: 0 0% 100%;
|
||||
--popover-foreground: 0 0% 3.9%;
|
||||
--primary: 0 0% 9%;
|
||||
--primary-foreground: 0 0% 98%;
|
||||
--secondary: 0 0% 96.1%;
|
||||
--secondary-foreground: 0 0% 9%;
|
||||
--muted: 0 0% 96.1%;
|
||||
--muted-foreground: 0 0% 45.1%;
|
||||
--accent: 0 0% 96.1%;
|
||||
--accent-foreground: 0 0% 9%;
|
||||
--destructive: 0 84.2% 60.2%;
|
||||
--destructive-foreground: 0 0% 98%;
|
||||
--border: 0 0% 89.8%;
|
||||
--input: 0 0% 89.8%;
|
||||
--ring: 0 0% 3.9%;
|
||||
--chart-1: 12 76% 61%;
|
||||
--chart-2: 173 58% 39%;
|
||||
--chart-3: 197 37% 24%;
|
||||
--chart-4: 43 74% 66%;
|
||||
--chart-5: 27 87% 67%;
|
||||
--radius: 0.5rem;
|
||||
}
|
||||
.dark {
|
||||
--background: 0 0% 3.9%;
|
||||
--foreground: 0 0% 98%;
|
||||
--card: 0 0% 3.9%;
|
||||
--card-foreground: 0 0% 98%;
|
||||
--popover: 0 0% 3.9%;
|
||||
--popover-foreground: 0 0% 98%;
|
||||
--primary: 0 0% 98%;
|
||||
--primary-foreground: 0 0% 9%;
|
||||
--secondary: 0 0% 14.9%;
|
||||
--secondary-foreground: 0 0% 98%;
|
||||
--muted: 0 0% 14.9%;
|
||||
--muted-foreground: 0 0% 63.9%;
|
||||
--accent: 0 0% 14.9%;
|
||||
--accent-foreground: 0 0% 98%;
|
||||
--destructive: 0 62.8% 30.6%;
|
||||
--destructive-foreground: 0 0% 98%;
|
||||
--border: 0 0% 14.9%;
|
||||
--input: 0 0% 14.9%;
|
||||
--ring: 0 0% 83.1%;
|
||||
--chart-1: 220 70% 50%;
|
||||
--chart-2: 160 60% 45%;
|
||||
--chart-3: 30 80% 55%;
|
||||
--chart-4: 280 65% 60%;
|
||||
--chart-5: 340 75% 55%;
|
||||
}
|
||||
}
|
||||
|
||||
@layer base {
|
||||
* {
|
||||
@apply border-border;
|
||||
}
|
||||
body {
|
||||
@apply bg-background text-foreground;
|
||||
}
|
||||
}
|
39
app/layout.tsx
Normal file
@ -0,0 +1,39 @@
|
||||
import type { Metadata } from "next";
|
||||
import localFont from "next/font/local";
|
||||
import "./globals.css";
|
||||
|
||||
const geistSans = localFont({
|
||||
src: "./fonts/GeistVF.woff",
|
||||
variable: "--font-geist-sans",
|
||||
weight: "100 900",
|
||||
});
|
||||
const geistMono = localFont({
|
||||
src: "./fonts/GeistMonoVF.woff",
|
||||
variable: "--font-geist-mono",
|
||||
weight: "100 900",
|
||||
});
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "APS NAV - https://aps.icu",
|
||||
description: "APS NAV",
|
||||
keywords: ['APS NAV', '导航', 'APS', 'mei', 'linuxcat', 'linuxcat周刊', '开源', '软件', '分享', '推荐'],
|
||||
authors: [{ name: 'mei' }],
|
||||
creator: 'mei',
|
||||
publisher: 'mei',
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
return (
|
||||
<html lang="zh-Hans">
|
||||
<body
|
||||
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
|
||||
>
|
||||
{children}
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
5
app/page.tsx
Normal file
@ -0,0 +1,5 @@
|
||||
import { Navigation } from "@/components/navigation"
|
||||
|
||||
export default function Page() {
|
||||
return <Navigation />
|
||||
}
|
21
components.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema.json",
|
||||
"style": "new-york",
|
||||
"rsc": true,
|
||||
"tsx": true,
|
||||
"tailwind": {
|
||||
"config": "tailwind.config.ts",
|
||||
"css": "app/globals.css",
|
||||
"baseColor": "neutral",
|
||||
"cssVariables": true,
|
||||
"prefix": ""
|
||||
},
|
||||
"aliases": {
|
||||
"components": "@/components",
|
||||
"utils": "@/lib/utils",
|
||||
"ui": "@/components/ui",
|
||||
"lib": "@/lib",
|
||||
"hooks": "@/hooks"
|
||||
},
|
||||
"iconLibrary": "lucide"
|
||||
}
|
163
components/navigation.tsx
Normal file
@ -0,0 +1,163 @@
|
||||
'use client'
|
||||
|
||||
import { Input } from "@/components/ui/input"
|
||||
import { ScrollArea } from "@/components/ui/scroll-area"
|
||||
import { ChevronDown, ChevronRight } from 'lucide-react'
|
||||
import { useEffect, useState } from "react"
|
||||
|
||||
type NavItem = {
|
||||
name: string
|
||||
url: string
|
||||
description: string
|
||||
}
|
||||
|
||||
type SubCategory = {
|
||||
name: string
|
||||
items: NavItem[]
|
||||
}
|
||||
|
||||
type CategoryData = {
|
||||
[key: string]: SubCategory[]
|
||||
}
|
||||
|
||||
export function Navigation() {
|
||||
const [searchTerm, setSearchTerm] = useState("")
|
||||
const [activeCategory, setActiveCategory] = useState("all")
|
||||
const [activeSubCategory, setActiveSubCategory] = useState("all")
|
||||
const [data, setData] = useState<CategoryData>({})
|
||||
const [filteredItems, setFilteredItems] = useState<NavItem[]>([])
|
||||
const [expandedCategories, setExpandedCategories] = useState<string[]>([])
|
||||
|
||||
useEffect(() => {
|
||||
async function loadData() {
|
||||
try {
|
||||
const response = await fetch('/api/load-yaml-data');
|
||||
const yamlData = await response.json();
|
||||
setData(yamlData);
|
||||
} catch (error) {
|
||||
console.error('Failed to load YAML data:', error);
|
||||
}
|
||||
}
|
||||
loadData();
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
let items: NavItem[] = []
|
||||
|
||||
if (activeCategory === "all") {
|
||||
items = Object.values(data).flatMap(subCategories =>
|
||||
subCategories.flatMap(subCategory => subCategory.items)
|
||||
)
|
||||
} else if (activeSubCategory === "all") {
|
||||
items = data[activeCategory]?.flatMap(subCategory => subCategory.items) || []
|
||||
} else {
|
||||
items = data[activeCategory]?.find(subCategory => subCategory.name === activeSubCategory)?.items || []
|
||||
}
|
||||
|
||||
if (searchTerm) {
|
||||
items = items.filter(item =>
|
||||
item.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
|
||||
item.description.toLowerCase().includes(searchTerm.toLowerCase())
|
||||
)
|
||||
}
|
||||
|
||||
setFilteredItems(items)
|
||||
}, [searchTerm, activeCategory, activeSubCategory, data])
|
||||
|
||||
const toggleCategory = (category: string) => {
|
||||
setExpandedCategories(prev =>
|
||||
prev.includes(category)
|
||||
? prev.filter(c => c !== category)
|
||||
: [...prev, category]
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="flex h-screen bg-gray-100 dark:bg-gray-900">
|
||||
{/* Left Sidebar Navigation */}
|
||||
<aside className="w-64 bg-white dark:bg-gray-800 shadow-md overflow-y-auto">
|
||||
<ScrollArea className="h-full">
|
||||
<nav className="p-4">
|
||||
<h2 className="text-lg font-semibold mb-4 text-gray-700 dark:text-gray-200">APS NAV</h2>
|
||||
<button
|
||||
onClick={() => {
|
||||
setActiveCategory("all")
|
||||
setActiveSubCategory("all")
|
||||
}}
|
||||
className={`w-full text-left p-2 rounded-lg transition-colors duration-200 ease-in-out ${activeCategory === "all" ? "bg-primary text-primary-foreground" : "text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700"}`}
|
||||
>
|
||||
全部
|
||||
</button>
|
||||
{Object.entries(data).map(([category, subCategories]) => (
|
||||
<div key={category} className="mt-2">
|
||||
<button
|
||||
onClick={() => {
|
||||
toggleCategory(category)
|
||||
setActiveCategory(category)
|
||||
setActiveSubCategory("all")
|
||||
}}
|
||||
className={`w-full text-left p-2 rounded-lg transition-colors duration-200 ease-in-out flex items-center justify-between ${activeCategory === category ? "bg-primary text-primary-foreground" : "text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700"}`}
|
||||
>
|
||||
<span>{category}</span>
|
||||
{expandedCategories.includes(category) ? <ChevronDown className="w-4 h-4" /> : <ChevronRight className="w-4 h-4" />}
|
||||
</button>
|
||||
{expandedCategories.includes(category) && (
|
||||
<div className="ml-4 mt-1">
|
||||
{subCategories.map((subCategory) => (
|
||||
<button
|
||||
key={subCategory.name}
|
||||
onClick={() => {
|
||||
setActiveCategory(category)
|
||||
setActiveSubCategory(subCategory.name)
|
||||
}}
|
||||
className={`w-full text-left p-2 rounded-lg transition-colors duration-200 ease-in-out ${activeCategory === category && activeSubCategory === subCategory.name ? "bg-secondary text-secondary-foreground" : "text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700"}`}
|
||||
>
|
||||
{subCategory.name}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
</nav>
|
||||
</ScrollArea>
|
||||
</aside>
|
||||
|
||||
{/* Main Content */}
|
||||
<main className="flex-1 overflow-y-auto p-8">
|
||||
{/* Search Bar */}
|
||||
<div className="mb-8">
|
||||
<Input
|
||||
className="w-full max-w-md mx-auto"
|
||||
placeholder="搜索项目..."
|
||||
value={searchTerm}
|
||||
onChange={(e) => setSearchTerm(e.target.value)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Items Grid */}
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
||||
{filteredItems.map((item) => (
|
||||
<a
|
||||
key={item.name}
|
||||
href={item.url}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="block overflow-hidden rounded-lg border bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 shadow-md transition-all hover:shadow-lg p-6"
|
||||
>
|
||||
<h3 className="text-lg font-semibold mb-2">{item.name}</h3>
|
||||
<p className="text-sm text-gray-600 dark:text-gray-300">{item.description}</p>
|
||||
</a>
|
||||
))}
|
||||
</div>
|
||||
|
||||
{/* Empty State */}
|
||||
{filteredItems.length === 0 && (
|
||||
<div className="text-center py-12">
|
||||
<p className="text-gray-500 dark:text-gray-400">没有找到相关项目</p>
|
||||
</div>
|
||||
)}
|
||||
</main>
|
||||
</div>
|
||||
)
|
||||
}
|
22
components/ui/input.tsx
Normal file
@ -0,0 +1,22 @@
|
||||
import * as React from "react"
|
||||
|
||||
import { cn } from "@/lib/utils"
|
||||
|
||||
const Input = React.forwardRef<HTMLInputElement, React.ComponentProps<"input">>(
|
||||
({ className, type, ...props }, ref) => {
|
||||
return (
|
||||
<input
|
||||
type={type}
|
||||
className={cn(
|
||||
"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
||||
className
|
||||
)}
|
||||
ref={ref}
|
||||
{...props}
|
||||
/>
|
||||
)
|
||||
}
|
||||
)
|
||||
Input.displayName = "Input"
|
||||
|
||||
export { Input }
|
48
components/ui/scroll-area.tsx
Normal file
@ -0,0 +1,48 @@
|
||||
"use client"
|
||||
|
||||
import * as React from "react"
|
||||
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area"
|
||||
|
||||
import { cn } from "@/lib/utils"
|
||||
|
||||
const ScrollArea = React.forwardRef<
|
||||
React.ElementRef<typeof ScrollAreaPrimitive.Root>,
|
||||
React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>
|
||||
>(({ className, children, ...props }, ref) => (
|
||||
<ScrollAreaPrimitive.Root
|
||||
ref={ref}
|
||||
className={cn("relative overflow-hidden", className)}
|
||||
{...props}
|
||||
>
|
||||
<ScrollAreaPrimitive.Viewport className="h-full w-full rounded-[inherit]">
|
||||
{children}
|
||||
</ScrollAreaPrimitive.Viewport>
|
||||
<ScrollBar />
|
||||
<ScrollAreaPrimitive.Corner />
|
||||
</ScrollAreaPrimitive.Root>
|
||||
))
|
||||
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName
|
||||
|
||||
const ScrollBar = React.forwardRef<
|
||||
React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,
|
||||
React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>
|
||||
>(({ className, orientation = "vertical", ...props }, ref) => (
|
||||
<ScrollAreaPrimitive.ScrollAreaScrollbar
|
||||
ref={ref}
|
||||
orientation={orientation}
|
||||
className={cn(
|
||||
"flex touch-none select-none transition-colors",
|
||||
orientation === "vertical" &&
|
||||
"h-full w-2.5 border-l border-l-transparent p-[1px]",
|
||||
orientation === "horizontal" &&
|
||||
"h-2.5 flex-col border-t border-t-transparent p-[1px]",
|
||||
className
|
||||
)}
|
||||
{...props}
|
||||
>
|
||||
<ScrollAreaPrimitive.ScrollAreaThumb className="relative flex-1 rounded-full bg-border" />
|
||||
</ScrollAreaPrimitive.ScrollAreaScrollbar>
|
||||
))
|
||||
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName
|
||||
|
||||
export { ScrollArea, ScrollBar }
|
113
data/AI.yml
Normal file
@ -0,0 +1,113 @@
|
||||
# ASR
|
||||
- name: CapsWriter
|
||||
url: https://github.com/HaujetZhao/CapsWriter
|
||||
description: 一款电脑语音输入工具,也可以用来添加字幕
|
||||
subcategory: ASR
|
||||
|
||||
# TTS
|
||||
- name: ChatTTS
|
||||
url: https://github.com/2noise/ChatTTS
|
||||
description: 一款适用于日常对话的生成式语音模型
|
||||
subcategory: TTS
|
||||
- name: GPT-SoVITS
|
||||
url: https://github.com/RVC-Boss/GPT-SoVITS
|
||||
description: 强大的少样本语音转换与语音合成Web用户界面
|
||||
subcategory: TTS
|
||||
- name: Bert-VITS2
|
||||
url: https://github.com/2noise/ChatTTS
|
||||
description: 强大的开源TTS模型
|
||||
subcategory: TTS
|
||||
|
||||
# 大语言模型
|
||||
- name: bilibot
|
||||
img: /img/bilibot.jfif
|
||||
description: 由哔哩哔哩用户评论微调训练而成的本地聊天机器人
|
||||
subcategory: 大语言模型
|
||||
- name: ChatGLM3
|
||||
img: /img/ChatGLM3.png
|
||||
description: 开源双语对话语言模型,智谱AI和清华大学 KEG 实验室联合发布
|
||||
subcategory: 大语言模型
|
||||
- name: GLM-4
|
||||
img: /img/GLM-4.png
|
||||
description: 开源多语言多模态对话模型,智谱 AI 推出
|
||||
subcategory: 大语言模型
|
||||
- name: Ask Many AI
|
||||
img: /img/askmanyai.ico
|
||||
description: 同时向多种模型提问
|
||||
subcategory: 大语言模型
|
||||
- name: petercat
|
||||
img: /img/petercat.png
|
||||
description: 为自己的 GitHub 仓库一键创建智能答疑机器人
|
||||
subcategory: 大语言模型
|
||||
|
||||
# 其它
|
||||
- name: MemFree
|
||||
url: https://github.com/memfreeme/memfree
|
||||
description: 一个混合 AI 搜索引擎,代码开源,可以自托管
|
||||
subcategory: 其它
|
||||
- name: 数字生命
|
||||
url: https://github.com/zixiiu/Digital_Life_Server
|
||||
description: 极客湾的数字生命项目
|
||||
subcategory: 其它
|
||||
- name: firecrawl
|
||||
url: https://github.com/mendableai/firecrawl
|
||||
description: 将网站自动转换为LLM数据
|
||||
subcategory: 其它
|
||||
- name: Real-time-translation-typing
|
||||
url: https://github.com/sxzxs/Real-time-translation-typing
|
||||
description: 实时打字翻译助手
|
||||
subcategory: 其它
|
||||
- name: RefAudioEmoTagger
|
||||
url: https://github.com/Alexw1111/RefAudioEmoTagger
|
||||
description: 一种基于Emotion2Vec的批量音频情感自动标注脚本
|
||||
subcategory: 其它
|
||||
- name: Crawl4AI
|
||||
url: https://github.com/unclecode/crawl4ai
|
||||
description: 开源AI网络爬虫工具,可以直接用于大语言模型和AI应用。性能快,还能输出适合大语言模型的格式,比如JSON、清理过的HTML和markdown。它还支持同时爬取多个网址,能提取所有媒体标签(图片、音频、视频),以及所有内外部链接。可以自定义用户代理,还能给网页截图,甚至在爬取之前执行自定义JavaScript。
|
||||
subcategory: 其它
|
||||
|
||||
# 图像影音
|
||||
- name: IC-Light
|
||||
url: https://github.com/lllyasviel/IC-Light
|
||||
description: 为图像重新打光和更换背景
|
||||
subcategory: 图像影音
|
||||
- name: APISR
|
||||
url: https://github.com/Kiteretsu77/APISR
|
||||
description: 开源的图像超分辨率模型
|
||||
subcategory: 图像影音
|
||||
- name: ComfyUI
|
||||
url: https://github.com/comfyanonymous/ComfyUI
|
||||
description: 一个强大的、模块化的 Stable Diffusion GUI,具有图形/节点界面
|
||||
subcategory: 图像影音
|
||||
- name: LivePortrait
|
||||
url: https://github.com/KwaiVGI/LivePortrait
|
||||
description: 控制图像的面部表情和动作
|
||||
subcategory: 图像影音
|
||||
- name: CogVideo
|
||||
url: https://github.com/THUDM/CogVideo
|
||||
description: 质谱开源的文生视频模型
|
||||
subcategory: 图像影音
|
||||
- name: metahuman-stream
|
||||
url: https://github.com/lipku/metahuman-stream
|
||||
description: 实时交互流式数字人项目
|
||||
subcategory: 图像影音
|
||||
- name: image-matting
|
||||
url: https://github.com/pangxiaobin/image-matting
|
||||
description: 本地桌面AI抠图软件
|
||||
subcategory: 图像影音
|
||||
- name: Deep Live Cam
|
||||
url: https://deeplive.cam/zh
|
||||
description: 只需一张图片,就可实现视频的人脸替换
|
||||
subcategory: 图像影音
|
||||
- name: Linly-Dubbing
|
||||
url: https://github.com/Kedreamix/Linly-Dubbing
|
||||
description: AI 视频配音的开源工具,自动将外语视频改成中文配音
|
||||
subcategory: 图像影音
|
||||
- name: HivisionIDPhotos
|
||||
url: https://github.com/Zeyi-Lin/HivisionIDPhotos
|
||||
description: 一个轻量级的AI证件照制作算法
|
||||
subcategory: 图像影音
|
||||
- name: facefusion
|
||||
url: https://github.com/facefusion/facefusion
|
||||
description: AI 换脸工具
|
||||
subcategory: 图像影音
|
@ -1,4 +1,4 @@
|
||||
- name: NotchDrop
|
||||
url: https://github.com/Lakr233/NotchDrop/
|
||||
img: /img/NotchDrop.png
|
||||
description: 将 MacBook 刘海变成一个文件传输和暂存区域
|
||||
description: 将 MacBook 刘海变成一个文件传输和暂存区域
|
||||
subcategory: 实用软件
|
43
data/VSCode.yml
Normal file
@ -0,0 +1,43 @@
|
||||
# 前端
|
||||
- name: Vue 3 Snippets
|
||||
url: https://marketplace.visualstudio.com/items?itemName=hollowtree.vue-snippets
|
||||
description: Vue.js 3 和 Vue.js 2 代码片段扩展
|
||||
subcategory: 前端
|
||||
- name: Vue - Official
|
||||
url: https://marketplace.visualstudio.com/items?itemName=Vue.volar
|
||||
description: Vue 代码补全和检查
|
||||
subcategory: 前端
|
||||
- name: JavaScript Debugger
|
||||
url: https://marketplace.visualstudio.com/items?itemName=ms-vscode.js-debug
|
||||
description: 将断点映射到浏览器中
|
||||
subcategory: 前端
|
||||
- name: Live Server
|
||||
url: https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer
|
||||
description: 启动一个本地 WEB 服务器
|
||||
subcategory: 前端
|
||||
- name: CSS Peek
|
||||
url: https://marketplace.visualstudio.com/items?itemName=pranaygp.vscode-css-peek
|
||||
description: 根据 css 类和 id 定位到对应的文件中
|
||||
subcategory: 前端
|
||||
- name: Console Ninja
|
||||
url: https://marketplace.visualstudio.com/items?itemName=WallabyJs.console-ninja
|
||||
description: 将 console.log 的打印显示在代码右侧
|
||||
subcategory: 前端
|
||||
|
||||
# 其它
|
||||
- name: aide
|
||||
url: https://github.com/nicepkg/aide
|
||||
description: 在 VSCode 中征服任何代码:一键注释、转换、UI 图生成代码、AI 批量处理文件
|
||||
subcategory: 其它
|
||||
- name: GitLens
|
||||
url: https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens
|
||||
description: 在 VS Code 中增强 Git
|
||||
subcategory: 其它
|
||||
- name: Easy CodeSnap
|
||||
url: https://marketplace.visualstudio.com/items?itemName=ArthurLobo.easy-codesnap
|
||||
description: 生成美观的代码截图
|
||||
subcategory: 其它
|
||||
- name: TODO Highlight
|
||||
url: https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight
|
||||
description: 高亮 TODO、FIXME 等关键词,注视
|
||||
subcategory: 其它
|
11
data/linux.yml
Normal file
@ -0,0 +1,11 @@
|
||||
# 应用适配
|
||||
- name: 星火应用商店
|
||||
url: https://www.spark-app.store/
|
||||
description: 专注Linux应用适配的应用商店
|
||||
subcategory: 应用适配
|
||||
|
||||
# 外设驱动
|
||||
- name: logiops
|
||||
url: https://github.com/PixlOne/logiops
|
||||
description: 适用于 HID++ Logitech 设备的非官方用户空间驱动程序
|
||||
subcategory: 外设驱动
|
87
data/前端.yml
Normal file
@ -0,0 +1,87 @@
|
||||
# 工具
|
||||
- name: CSS可视化
|
||||
url: https://css.bqrdh.com/
|
||||
description: CSS可视化
|
||||
subcategory: 工具
|
||||
- name: CSS灵感
|
||||
url: https://csscoco.com/inspiration/#/
|
||||
description: 可以让你寻找到使用或者是学习 CSS 的灵感
|
||||
subcategory: 工具
|
||||
- name: iCSS
|
||||
url: https://github.com/chokcoco/iCSS
|
||||
description: 围绕 CSS/Web动画 展开,谈一些有趣的话题
|
||||
subcategory: 工具
|
||||
- name: icons8
|
||||
url: https://icons8.com/
|
||||
description: 免费图标工具
|
||||
subcategory: 工具
|
||||
- name: fontright
|
||||
url: https://js.design/fontright?source=OMG&plan=bz
|
||||
description: 字体版权工具
|
||||
subcategory: 工具
|
||||
- name: HTML5 UP
|
||||
url: https://html5up.net/
|
||||
description: 大量好看的免费 HTML 模板
|
||||
subcategory: 工具
|
||||
- name: ConvertFast UI
|
||||
url: https://ui.convertfa.st/
|
||||
description: 一个快速生成落地页的工具,可以选择落地页的常见模块
|
||||
subcategory: 工具
|
||||
- name: favicon.im
|
||||
url: https://favicon.im/
|
||||
description: 下载或在网页中插入其他网站的 Favicon 图片,可以放大显示
|
||||
subcategory: 工具
|
||||
- name: Porn Logo Maker
|
||||
url: https://porn-logo.com/
|
||||
description: 定制拼色 Logo 的在线工具
|
||||
subcategory: 工具
|
||||
- name: Penpot
|
||||
url: https://penpot.app/
|
||||
description: 一个基于 Web 的开源设计工具,Figma 的替代品
|
||||
subcategory: 工具
|
||||
- name: jsongenerator
|
||||
url: https://www.jsongenerator.io/
|
||||
description: 生成符合要求的 Json 伪数据
|
||||
subcategory: 工具
|
||||
- name: JSON For You
|
||||
url: https://github.com/loggerhead/json4u/
|
||||
description: 开源的 JSON 数据的在线可视化、处理工具
|
||||
subcategory: 工具
|
||||
|
||||
# Javascript库
|
||||
- name: anti-baidu
|
||||
url: https://github.com/lurongkai/anti-baidu
|
||||
description: 如果有人通过百度搜索访问您的网站,就会弹出一个反百度对话框
|
||||
subcategory: Javascript库
|
||||
- name: Toastr
|
||||
url: https://github.com/CodeSeven/toastr
|
||||
description: 简单的 javascript Toast 通知
|
||||
subcategory: Javascript库
|
||||
- name: Swiper
|
||||
url: https://www.swiper.com.cn/
|
||||
description: 目前应用较广泛的移动端网页触摸内容滑动js插件
|
||||
subcategory: Javascript库
|
||||
- name: tesseract.js
|
||||
url: https://github.com/naptha/tesseract.js
|
||||
description: 适用于 100 多种语言的纯 Javascript OCR
|
||||
subcategory: Javascript库
|
||||
- name: nsfwjs
|
||||
url: https://github.com/infinitered/nsfwjs
|
||||
description: 鉴黄JS
|
||||
subcategory: Javascript库
|
||||
- name: driver.js
|
||||
url: https://github.com/kamranahmedse/driver.js
|
||||
description: 精美,轻量的用户引导JS
|
||||
subcategory: Javascript库
|
||||
- name: quicklink
|
||||
url: https://github.com/GoogleChromeLabs/quicklink
|
||||
description: 在空闲时间预加载视口内链接,会增加带宽负担
|
||||
subcategory: Javascript库
|
||||
- name: Text Search Engine
|
||||
url: https://github.com/cjinhuo/text-search-engine
|
||||
description: 模糊搜索库,具有中文拼音的模糊搜索等多种功能
|
||||
subcategory: Javascript库
|
||||
- name: fakeCAPTCHA
|
||||
url: https://github.com/fucklinux/fakeCAPTCHA
|
||||
description: 假的人机验证组件,可自定义显示内容
|
||||
subcategory: Javascript库
|
21
data/好玩的东西.yml
Normal file
@ -0,0 +1,21 @@
|
||||
- name: chinese-programmer-wrong-pronunciation
|
||||
url: https://github.com/shimohq/chinese-programmer-wrong-pronunciation
|
||||
description: 中国程序员容易发音错误的单词
|
||||
- name: AI 嘴替
|
||||
url: https://zuiti.app/
|
||||
description: 对指定的微博用户进行人格分析
|
||||
- name: similar-websites
|
||||
url: https://sitechecker.pro/similar-websites/
|
||||
description: 查找相似的网站
|
||||
- name: saucenao.com
|
||||
url: https://saucenao.com/
|
||||
description: 强大的以图搜图,尤其是 pixiv 上的图片
|
||||
- name: 退休计算器
|
||||
url: https://daojishi.fun/
|
||||
description: 退休计算器,人生找乐子
|
||||
- name: AntiZhaPian
|
||||
url: https://github.com/XJP-GIT/AntiZhaPian
|
||||
description: 假的国家反诈中心
|
||||
- name: debian-media-box
|
||||
url: https://github.com/moesoha/debian-media-box
|
||||
description: “Debian 小药盒”,一个用来包装 Debian 安装介质的盒子设计和介绍用的说明书。
|
@ -1,108 +1,75 @@
|
||||
- name: telegraph
|
||||
url: https://github.com/0-RTT/telegraph
|
||||
img: /img/telegraph.jfif
|
||||
description: 基于telegraph的图床,图片大于5MB自动压缩
|
||||
- name: newredlens
|
||||
url: https://github.com/CQUPTMirror/newredlens
|
||||
img: /img/newredlens.png
|
||||
description: 好看的开源软件镜像站前端
|
||||
- name: LookingGlass
|
||||
url: https://github.com/telephone/LookingGlass
|
||||
img: /img/LookingGlass.jfif
|
||||
description: 适合云服务商展示服务器线路的PHP项目
|
||||
- name: Page Replica
|
||||
url: https://github.com/Page-Replica/page-replica
|
||||
img: /img/page-replica.png
|
||||
description: 架设一个缓存网站,可以抓取其他网站和网页,建立一个缓存版本,通过它来中介访问
|
||||
- name: DirectoryLister
|
||||
url: https://github.com/DirectoryLister/DirectoryLister
|
||||
img: /img/DirectoryLister.png
|
||||
description: 一个Web文件浏览器,功能极其丰富
|
||||
- name: AntiZhaPian
|
||||
url: https://github.com/XJP-GIT/AntiZhaPian
|
||||
img: /img/AntiZhaPian.jpg
|
||||
description: 假的国家反诈中心
|
||||
- name: shit-url
|
||||
url: https://llili.li/
|
||||
img: /img/shit-url.png
|
||||
description: 屑链生成,最屑的短链接生成站
|
||||
- name: BroadcastChannel
|
||||
url: https://github.com/ccbikai/BroadcastChannel
|
||||
img: /img/BroadcastChannel.png
|
||||
description: 把你的Telegram频道变成一个微博,无需服务器
|
||||
- name: debian-media-box
|
||||
url: https://github.com/moesoha/debian-media-box
|
||||
img: /img/debian-media-box.png
|
||||
description: “Debian 小药盒”,一个用来包装 Debian 安装介质的盒子设计和介绍用的说明书。
|
||||
- name: OpenGFW
|
||||
url: https://github.com/apernet/OpenGFW
|
||||
img: /img/OpenGFW.png
|
||||
description: 可以部署在家用路由器上的网络主权 - 你也能是老大哥
|
||||
- name: heyform
|
||||
url: https://github.com/heyform/heyform
|
||||
img: /img/heyform.jfif
|
||||
description: 一个开源表单构建器,允许任何人为调查、问卷、测验和民意调查创建引人入胜的对话表单
|
||||
- name: Minecraft-Server-Ports-Scanner-GUI
|
||||
url: https://github.com/hite4044/Minecraft-Server-Ports-Scanner-GUI
|
||||
img: /img/Minecraft-Server-Ports-Scanner-GUI.png
|
||||
description: 扫描服务器上所有的MC服务器,并使用GUI显示几乎所有信息
|
||||
- name: ente
|
||||
url: https://github.com/ente-io/ente
|
||||
img: /img/ente.png
|
||||
description: 完全开源,端到端加密的Google照片和Apple Photos替代品
|
||||
- name: 文件快递柜
|
||||
url: https://github.com/vastsa/FileCodeBox
|
||||
img: /img/FileCodeBox.png
|
||||
description: 匿名口令分享文本,文件,像拿快递一样取文件
|
||||
- name: Docker-OSX
|
||||
url: https://github.com/sickcodes/Docker-OSX
|
||||
img: /img/Docker-OSX.png
|
||||
description: 快速使用 Docker 启动一个 MacOS
|
||||
- name: devzat
|
||||
url: https://github.com/quackduck/devzat
|
||||
img: /img/devzat.png
|
||||
description: 程序员专属 SSH 聊天室
|
||||
- name: synctv
|
||||
url: https://github.com/synctv-org/synctv
|
||||
img: /img/synctv.png
|
||||
description: 一个可以远程一起看电影/直播的程序,目前存在严重的xss注入漏洞
|
||||
- name: inter-knot
|
||||
url: https://github.com/share121/inter-knot
|
||||
img: /img/inter-knot.svg
|
||||
description: 绳网
|
||||
- name: frp内网穿透全端口映射方案
|
||||
url: https://github.com/bkywksj/frp
|
||||
img: /img/bkywksjfrp.jfif
|
||||
description: frp内网穿透全端口映射方案(支持ssh、http、https)
|
||||
- name: frpc-desktop
|
||||
url: https://github.com/luckjiawei/frpc-desktop
|
||||
img: /img/frpc-desktop.png
|
||||
description: 一个frpc桌面客户端
|
||||
- name: AsmBB
|
||||
url: https://asmbb.org/
|
||||
img: /img/asmbb.png
|
||||
description: 一个使用汇编语言写的论坛应用,性能很强,对机器配置的要求很低
|
||||
- name: Coolify
|
||||
url: https://github.com/coollabsio/coolify
|
||||
img: /img/Coolify.png
|
||||
description: 开源的应用运行平台,相当于自己搭建一个 Heroku / Netlify / Vercel 替代品,各种应用可以轻松在上面运行
|
||||
- name: Marsview
|
||||
url: https://github.com/JackySoft/marsview
|
||||
img: /img/Marsview.png
|
||||
description: 一款面向后台的低代码可视化搭建平台,快速搭建中后台管理系统
|
||||
- name: Class-Widgets
|
||||
url: https://github.com/RinLit-233-shiroko/Class-Widgets
|
||||
img: /img/Class-Widgets.png
|
||||
description: 提供了易用课程表编辑和美观的桌面组件
|
||||
- name: socialify
|
||||
url: https://github.com/wei/socialify
|
||||
img: /img/socialify.ico
|
||||
description: 以图片展示 Github 项目的数据
|
||||
- name: WebChat
|
||||
url: https://github.com/molvqingtai/WebChat
|
||||
img: /img/WebChat.png
|
||||
description: 一个去中心化、无服务器的匿名聊天浏览器扩展程序
|
||||
- name: IPTV电视直播源更新工具
|
||||
url: https://github.com/Guovin/TV
|
||||
img: /img/Guovin.tv.png
|
||||
description: 自定义频道菜单,根据模板频道,自动获取并更新最新的直播源接口,测速校验后生成可用的接口文件
|
||||
description: 自定义频道菜单,根据模板频道,自动获取并更新最新的直播源接口,测速校验后生成可用的接口文件
|
||||
- name: public-apis
|
||||
url: https://github.com/public-apis/public-apis
|
||||
description: 收集了大量公开API,有好用的,也有好玩的
|
@ -1,12 +1,15 @@
|
||||
# 资讯
|
||||
- name: SBDJI
|
||||
url: https://sbdji.cc/
|
||||
img: /img/SBDJI.ico
|
||||
description: 全球无人机资讯汇总
|
||||
subcategory: 资讯
|
||||
|
||||
# 工具
|
||||
- name: 天空之城
|
||||
url: https://www.skypixel.com/
|
||||
img: /img/天空之城.png
|
||||
description: 小偷模拟器,获取各景点保安的详细活动轨迹和性格
|
||||
subcategory: 工具
|
||||
- name: 民用无人驾驶航空器综合管理平台
|
||||
url: https://uom.caac.gov.cn/
|
||||
img: /img/uom.png
|
||||
description: 国家无人驾驶航空器一体化综合监管服务平台(民用无人驾驶航空器综合管理平台)
|
||||
description: 国家无人驾驶航空器一体化综合监管服务平台(民用无人驾驶航空器综合管理平台)
|
||||
subcategory: 工具
|
24
data/资源.yml
Normal file
@ -0,0 +1,24 @@
|
||||
# 书籍资料
|
||||
- name: 鸠摩搜索 Jiumo Search
|
||||
url: https://www.jiumodiary.com/
|
||||
description: 免费书籍下载
|
||||
subcategory: 书籍资料
|
||||
- name: LoreFree 电子书
|
||||
url: https://ebook2.lorefree.com/
|
||||
description: 免费电子书共享社区
|
||||
subcategory: 书籍资料
|
||||
- name: LoreFree 学术文库
|
||||
url: http://paper.lorefree.com/
|
||||
description: 学术共享,资源共建,让知识自由传播
|
||||
subcategory: 书籍资料
|
||||
|
||||
# 网络
|
||||
- name: local-ISPs-to-CN
|
||||
url: https://github.com/sjlleo/local-ISPs-to-CN/blob/cd760ca23cc9d1e4981af8993ab42a67885cc2f6/report_zh_CN.md
|
||||
description: 国内/国际互联线路知识
|
||||
subcategory: 网络
|
||||
- name: China Internationally-connected
|
||||
url: https://github.com/china-net/Internationally-connected
|
||||
description: 中国的国际网络互联状态介绍
|
||||
subcategory: 网络
|
||||
|
6
lib/utils.ts
Normal file
@ -0,0 +1,6 @@
|
||||
import { clsx, type ClassValue } from "clsx"
|
||||
import { twMerge } from "tailwind-merge"
|
||||
|
||||
export function cn(...inputs: ClassValue[]) {
|
||||
return twMerge(clsx(inputs))
|
||||
}
|
6
next.config.mjs
Normal file
@ -0,0 +1,6 @@
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {
|
||||
output: 'export'
|
||||
};
|
||||
|
||||
export default nextConfig;
|
9073
package-lock.json
generated
51
package.json
@ -1,26 +1,37 @@
|
||||
{
|
||||
"name": "hexo-site",
|
||||
"version": "0.0.0",
|
||||
"name": "nav-next",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "hexo generate",
|
||||
"clean": "hexo clean",
|
||||
"deploy": "hexo deploy",
|
||||
"server": "hexo server"
|
||||
},
|
||||
"hexo": {
|
||||
"version": "6.3.0"
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"hexo": "^6.3.0",
|
||||
"hexo-generator-archive": "^2.0.0",
|
||||
"hexo-generator-category": "^2.0.0",
|
||||
"hexo-generator-index": "^3.0.0",
|
||||
"hexo-generator-tag": "^2.0.0",
|
||||
"hexo-renderer-ejs": "^2.0.0",
|
||||
"hexo-renderer-marked": "^6.0.0",
|
||||
"hexo-renderer-stylus": "^2.1.0",
|
||||
"hexo-server": "^3.0.0",
|
||||
"hexo-theme-landscape": "^1.0.0"
|
||||
"@radix-ui/react-label": "^2.1.0",
|
||||
"@radix-ui/react-scroll-area": "^1.2.1",
|
||||
"class-variance-authority": "^0.7.0",
|
||||
"clsx": "^2.1.1",
|
||||
"js-yaml": "^4.1.0",
|
||||
"lucide-react": "^0.460.0",
|
||||
"next": "14.2.16",
|
||||
"next-auth": "^4.24.10",
|
||||
"react": "^18",
|
||||
"react-dom": "^18",
|
||||
"react-toastify": "^10.0.6",
|
||||
"tailwind-merge": "^2.5.4",
|
||||
"tailwindcss-animate": "^1.0.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/js-yaml": "^4.0.9",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^18",
|
||||
"@types/react-dom": "^18",
|
||||
"eslint": "^8",
|
||||
"eslint-config-next": "14.2.16",
|
||||
"postcss": "^8",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"typescript": "^5"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
8
postcss.config.mjs
Normal file
@ -0,0 +1,8 @@
|
||||
/** @type {import('postcss-load-config').Config} */
|
||||
const config = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
tags:
|
||||
---
|
@ -1,4 +0,0 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
date: {{ date }}
|
||||
---
|
@ -1,5 +0,0 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
date: {{ date }}
|
||||
tags:
|
||||
---
|
@ -1,4 +0,0 @@
|
||||
- name: CapsWriter
|
||||
url: https://github.com/HaujetZhao/CapsWriter
|
||||
img: /img/CapsWriter.ico
|
||||
description: 一款电脑语音输入工具,也可以用来添加字幕
|
@ -1,12 +0,0 @@
|
||||
- name: ChatTTS
|
||||
url: https://github.com/2noise/ChatTTS
|
||||
img: /img/ChatTTS.ico
|
||||
description: 一款适用于日常对话的生成式语音模型
|
||||
- name: GPT-SoVITS
|
||||
url: https://github.com/RVC-Boss/GPT-SoVITS
|
||||
img:
|
||||
description: 强大的少样本语音转换与语音合成Web用户界面
|
||||
- name: Bert-VITS2
|
||||
url: https://github.com/2noise/ChatTTS
|
||||
img: /img/Bert-VITS2.png
|
||||
description: 强大的开源TTS模型
|
@ -1,24 +0,0 @@
|
||||
- name: MemFree
|
||||
url: https://github.com/memfreeme/memfree
|
||||
img: /img/MemFree.png
|
||||
description: 一个混合 AI 搜索引擎,代码开源,可以自托管
|
||||
- name: 数字生命
|
||||
url: https://github.com/zixiiu/Digital_Life_Server
|
||||
img: /img/Digital_Life_Server.jfif
|
||||
description: 极客湾的数字生命项目
|
||||
- name: firecrawl
|
||||
url: https://github.com/mendableai/firecrawl
|
||||
img: /img/firecrawl.png
|
||||
description: 将网站自动转换为LLM数据
|
||||
- name: Real-time-translation-typing
|
||||
url: https://github.com/sxzxs/Real-time-translation-typing
|
||||
img: /img/Real-time-translation-typing.png
|
||||
description: 实时打字翻译助手
|
||||
- name: RefAudioEmoTagger
|
||||
url: https://github.com/Alexw1111/RefAudioEmoTagger
|
||||
img: /img/RefAudioEmoTagger.jfif
|
||||
description: 一种基于Emotion2Vec的批量音频情感自动标注脚本
|
||||
- name: Crawl4AI
|
||||
url: https://github.com/unclecode/crawl4ai
|
||||
img: /img/RefAudioEmoTagger.jfif
|
||||
description: 开源AI网络爬虫工具,可以直接用于大语言模型和AI应用。性能快,还能输出适合大语言模型的格式,比如JSON、清理过的HTML和markdown。它还支持同时爬取多个网址,能提取所有媒体标签(图片、音频、视频),以及所有内外部链接。可以自定义用户代理,还能给网页截图,甚至在爬取之前执行自定义JavaScript。
|
@ -1,44 +0,0 @@
|
||||
- name: IC-Light
|
||||
url: https://github.com/lllyasviel/IC-Light
|
||||
img: /img/IC-Light.jfif
|
||||
description: 为图像重新打光和更换背景
|
||||
- name: APISR
|
||||
url: https://github.com/Kiteretsu77/APISR
|
||||
img: /img/APISR.png
|
||||
description: 开源的图像超分辨率模型
|
||||
- name: ComfyUI
|
||||
url: https://github.com/comfyanonymous/ComfyUI
|
||||
img: /img/ComfyUI.png
|
||||
description: 一个强大的、模块化的 Stable Diffusion GUI,具有图形/节点界面
|
||||
- name: LivePortrait
|
||||
url: https://github.com/KwaiVGI/LivePortrait
|
||||
img: /img/LivePortrait.png
|
||||
description: 控制图像的面部表情和动作
|
||||
- name: CogVideo
|
||||
url: https://github.com/THUDM/CogVideo
|
||||
img: /img/CogVideo.png
|
||||
description: 质谱开源的文生视频模型
|
||||
- name: metahuman-stream
|
||||
url: https://github.com/lipku/metahuman-stream
|
||||
img:
|
||||
description: 实时交互流式数字人项目
|
||||
- name: image-matting
|
||||
url: https://github.com/pangxiaobin/image-matting
|
||||
img: /img/image-matting.png
|
||||
description: 本地桌面AI抠图软件
|
||||
- name: Deep Live Cam
|
||||
url: https://deeplive.cam/zh
|
||||
img: /img/deeplive.ico
|
||||
description: 只需一张图片,就可实现视频的人脸替换
|
||||
- name: Linly-Dubbing
|
||||
url: https://github.com/Kedreamix/Linly-Dubbing
|
||||
img: /img/Linly-Dubbing.jfif
|
||||
description: AI 视频配音的开源工具,自动将外语视频改成中文配音
|
||||
- name: HivisionIDPhotos
|
||||
url: https://github.com/Zeyi-Lin/HivisionIDPhotos
|
||||
img: /img/HivisionIDPhotos.jpeg
|
||||
description: 一个轻量级的AI证件照制作算法
|
||||
- name: facefusion
|
||||
url: https://github.com/facefusion/facefusion
|
||||
img: /img/facefusion.jfif
|
||||
description: AI 换脸工具
|
@ -1,20 +0,0 @@
|
||||
- name: bilibot
|
||||
url: https://github.com/linyiLYi/bilibot
|
||||
img: /img/bilibot.jfif
|
||||
description: 由哔哩哔哩用户评论微调训练而成的本地聊天机器人
|
||||
- name: ChatGLM3
|
||||
url: https://github.com/THUDM/ChatGLM3
|
||||
img: /img/ChatGLM3.png
|
||||
description: 开源双语对话语言模型,智谱AI和清华大学 KEG 实验室联合发布
|
||||
- name: GLM-4
|
||||
url: https://github.com/THUDM/GLM-4
|
||||
img: /img/GLM-4.png
|
||||
description: 开源多语言多模态对话模型,智谱 AI 推出
|
||||
- name: Ask Many AI
|
||||
url: https://www.askmanyai.cn/
|
||||
img: /img/askmanyai.ico
|
||||
description: 同时向多种模型提问
|
||||
- name: petercat
|
||||
url: https://github.com/petercat-ai/petercat
|
||||
img: /img/petercat.png
|
||||
description: 为自己的 GitHub 仓库一键创建智能答疑机器人
|
@ -1,16 +0,0 @@
|
||||
- name: aide
|
||||
url: https://github.com/nicepkg/aide
|
||||
img: /img/aide.svg
|
||||
description: 在 VSCode 中征服任何代码:一键注释、转换、UI 图生成代码、AI 批量处理文件
|
||||
- name: GitLens
|
||||
url: https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens
|
||||
img: /img/GitLens.png
|
||||
description: 在 VS Code 中增强 Git
|
||||
- name: Easy CodeSnap
|
||||
url: https://marketplace.visualstudio.com/items?itemName=ArthurLobo.easy-codesnap
|
||||
img: /img/easy-codesnap.png
|
||||
description: 生成美观的代码截图
|
||||
- name: TODO Highlight
|
||||
url: https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight
|
||||
img: /img/todo-highlight.png
|
||||
description: 高亮 TODO、FIXME 等关键词,注视
|
@ -1,24 +0,0 @@
|
||||
- name: Vue 3 Snippets
|
||||
url: https://marketplace.visualstudio.com/items?itemName=hollowtree.vue-snippets
|
||||
img: /img/Vue3Snippets.jfif
|
||||
description: Vue.js 3 和 Vue.js 2 代码片段扩展
|
||||
- name: Vue - Official
|
||||
url: https://marketplace.visualstudio.com/items?itemName=Vue.volar
|
||||
img: /img/Vue-Official.png
|
||||
description: Vue 代码补全和检查
|
||||
- name: JavaScript Debugger
|
||||
url: https://marketplace.visualstudio.com/items?itemName=ms-vscode.js-debug
|
||||
img: /img/JavaScriptDebugger.png
|
||||
description: 将断点映射到浏览器中
|
||||
- name: Live Server
|
||||
url: https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer
|
||||
img: /img/LiveServer.png
|
||||
description: 启动一个本地 WEB 服务器
|
||||
- name: CSS Peek
|
||||
url: https://marketplace.visualstudio.com/items?itemName=pranaygp.vscode-css-peek
|
||||
img: /img/CSSPeek.png
|
||||
description: 根据 css 类和 id 定位到对应的文件中
|
||||
- name: Console Ninja
|
||||
url: https://marketplace.visualstudio.com/items?itemName=WallabyJs.console-ninja
|
||||
img: /img/console-ninja.png
|
||||
description: 将 console.log 的打印显示在代码右侧
|
@ -1,12 +0,0 @@
|
||||
- name: 酷壳 – CoolShell.cn
|
||||
url: https://coolshell.cn/
|
||||
img: /img/CoolShell.png
|
||||
description: 纪念陈皓
|
||||
- name: 阮一峰的个人网站
|
||||
url: https://www.ruanyifeng.com/
|
||||
img: /img/ruanyifeng.ico
|
||||
description: 阮一峰的个人网站 - Ruan YiFeng's Personal Website
|
||||
- name: 电脑星人
|
||||
url: https://imkero.net/
|
||||
img: /img/电脑星人.jpg
|
||||
description: 让此刻不会老
|
@ -1,12 +0,0 @@
|
||||
- name: 星火应用商店
|
||||
url: https://www.spark-app.store/
|
||||
img: /img/spark-app.ico
|
||||
description: 专注Linux应用适配的应用商店
|
||||
- name: 网易云音乐-linux
|
||||
url: https://d1.music.126.net/dmusic/netease-cloud-music_1.2.1_amd64_ubuntu_20190428.deb
|
||||
img: /img/163music.ico
|
||||
description: Linux 版本的网易云音乐,2019年与 Deepin 联合开发,已停更
|
||||
- name: logiops
|
||||
url: https://github.com/PixlOne/logiops
|
||||
img: /img/logiops.png
|
||||
description: 适用于 HID++ Logitech 设备的非官方用户空间驱动程序
|
@ -1,36 +0,0 @@
|
||||
- name: anti-baidu
|
||||
url: https://github.com/lurongkai/anti-baidu
|
||||
img: /img/anti-baidu.jpg
|
||||
description: 如果有人通过百度搜索访问您的网站,就会弹出一个反百度对话框
|
||||
- name: Toastr
|
||||
url: https://github.com/CodeSeven/toastr
|
||||
img:
|
||||
description: 简单的 javascript Toast 通知
|
||||
- name: Swiper
|
||||
url: https://www.swiper.com.cn/
|
||||
img: /img/Swiper.ico
|
||||
description: 目前应用较广泛的移动端网页触摸内容滑动js插件
|
||||
- name: tesseract.js
|
||||
url: https://github.com/naptha/tesseract.js
|
||||
img: /img/tesseract.js.png
|
||||
description: 适用于 100 多种语言的纯 Javascript OCR
|
||||
- name: nsfwjs
|
||||
url: https://github.com/infinitered/nsfwjs
|
||||
img: /img/nsfwjs.jpg
|
||||
description: 鉴黄JS
|
||||
- name: driver.js
|
||||
url: https://github.com/kamranahmedse/driver.js
|
||||
img: /img/driver.js.svg
|
||||
description: 精美,轻量的用户引导JS
|
||||
- name: quicklink
|
||||
url: https://github.com/GoogleChromeLabs/quicklink
|
||||
img: /img/quicklink.png
|
||||
description: 在空闲时间预加载视口内链接,会增加带宽负担
|
||||
- name: Text Search Engine
|
||||
url: https://github.com/cjinhuo/text-search-engine
|
||||
img: /img/Text Search Engine.png.jfif
|
||||
description: 模糊搜索库,具有中文拼音的模糊搜索等多种功能
|
||||
- name: fakeCAPTCHA
|
||||
url: https://github.com/fucklinux/fakeCAPTCHA
|
||||
img: /img/Text Search Engine.png.jfif
|
||||
description: 假的人机验证组件,可自定义显示内容
|
@ -1,48 +0,0 @@
|
||||
- name: CSS可视化
|
||||
url: https://css.bqrdh.com/
|
||||
img: /img/css.ico
|
||||
description: CSS可视化
|
||||
- name: CSS灵感
|
||||
url: https://csscoco.com/inspiration/#/
|
||||
img: /img/css-inspiration.png
|
||||
description: 可以让你寻找到使用或者是学习 CSS 的灵感
|
||||
- name: iCSS
|
||||
url: https://github.com/chokcoco/iCSS
|
||||
img: /img/iCSS.jpg
|
||||
description: 围绕 CSS/Web动画 展开,谈一些有趣的话题
|
||||
- name: icons8
|
||||
url: https://icons8.com/
|
||||
img: /img/icons8.svg
|
||||
description: 免费图标工具
|
||||
- name: fontright
|
||||
url: https://js.design/fontright?source=OMG&plan=bz
|
||||
img: /img/fontright.ico
|
||||
description: 字体版权工具
|
||||
- name: HTML5 UP
|
||||
url: https://html5up.net/
|
||||
img: /img/html5up.ico
|
||||
description: 大量好看的免费 HTML 模板
|
||||
- name: ConvertFast UI
|
||||
url: https://ui.convertfa.st/
|
||||
img:
|
||||
description: 一个快速生成落地页的工具,可以选择落地页的常见模块
|
||||
- name: favicon.im
|
||||
url: https://favicon.im/
|
||||
img: /img/favicon.im.png
|
||||
description: 下载或在网页中插入其他网站的 Favicon 图片,可以放大显示
|
||||
- name: Porn Logo Maker
|
||||
url: https://porn-logo.com/
|
||||
img: /img/porn-logo.png
|
||||
description: 定制拼色 Logo 的在线工具
|
||||
- name: Penpot
|
||||
url: https://penpot.app/
|
||||
img: /img/penpot.ico
|
||||
description: 一个基于 Web 的开源设计工具,Figma 的替代品
|
||||
- name: jsongenerator
|
||||
url: https://www.jsongenerator.io/
|
||||
img: /img/jsongenerator.ico
|
||||
description: 生成符合要求的 Json 伪数据
|
||||
- name: JSON For You
|
||||
url: https://github.com/loggerhead/json4u/
|
||||
img: /img/json4u.svg
|
||||
description: 开源的 JSON 数据的在线可视化、处理工具
|
@ -1,36 +0,0 @@
|
||||
- name: Canva - 可画 🔥
|
||||
url: https://www.canva.cn/
|
||||
img: https://static.canva.cn/static/images/favicon.ico
|
||||
description: 封面制作网站
|
||||
- name: Figma 🔥
|
||||
url: https://www.figma.com/
|
||||
img: https://static.figma.com/app/icon/1/favicon.png
|
||||
description: 软件原型设计网站
|
||||
- name: 爱设计
|
||||
url: https://www.isheji.com/
|
||||
img: https://www.isheji.com/isheji_favicon.ico
|
||||
description: 在线封面设计神器
|
||||
- name: Photopea 🔥
|
||||
url: https://www.photopea.com/
|
||||
img: https://www.photopea.com/promo/icon512.png
|
||||
description: 网页版PhotoShop
|
||||
- name: Brandmark
|
||||
url: https://app.brandmark.io/v3/
|
||||
img: https://app.brandmark.io/favicon32.gif
|
||||
description: Logo制作网站
|
||||
- name: 绘图 Diagram
|
||||
url: https://app.diagrams.net
|
||||
img: https://app.diagrams.net/favicon.ico
|
||||
description: 在线绘图网站
|
||||
- name: ProcessOn
|
||||
url: https://www.processon.com/
|
||||
img: https://www.processon.com/favicon.ico
|
||||
description: 免费在线作图,思维导图,流程图,实时协作
|
||||
- name: Bilibili封面提取
|
||||
url: https://bilicover.magecorn.com/
|
||||
img: https://www.bilibili.com/favicon.ico
|
||||
description: 通过输入B站视频链接即可在线获取封面地址
|
||||
- name: Xnapper Studio
|
||||
url: https://xnapper.com/app
|
||||
img: /img/Xnapper-Studio.ico
|
||||
description: 截图美化工具
|
@ -1,16 +0,0 @@
|
||||
- name: AI 嘴替
|
||||
url: https://zuiti.app/
|
||||
img: /img/zuiti.png
|
||||
description: 对指定的微博用户进行人格分析
|
||||
- name: similar-websites
|
||||
url: https://sitechecker.pro/similar-websites/
|
||||
img: /img/sitechecker.ico
|
||||
description: 查找相似的网站
|
||||
- name: saucenao.com
|
||||
url: https://saucenao.com/
|
||||
img: /img/saucenao.ico
|
||||
description: 强大的以图搜图,尤其是 pixiv 上的图片
|
||||
- name: 退休计算器
|
||||
url: https://daojishi.fun/
|
||||
img: /img/退休计算器.ico
|
||||
description: 退休计算器,人生找乐子
|
@ -1,132 +0,0 @@
|
||||
- name: BewlyBewly
|
||||
url: https://github.com/hakadao/BewlyBewly/
|
||||
img: /img/BewlyBewly.png
|
||||
description: 重新设计 BiliBili 用户界面来提升用户体验
|
||||
- name: terminal
|
||||
url: https://github.com/microsoft/terminal
|
||||
img: /img/terminal.png
|
||||
description: 好看且好用的终端,微软出品
|
||||
- name: DistroSea
|
||||
url: https://distrosea.com/
|
||||
img: /img/DistroSea.ico
|
||||
description: 在线试用各种 Linux 发行版,它会分配一个虚拟机,浏览器里连接桌面
|
||||
- name: 错别字检测
|
||||
url: http://www.biezi.com/
|
||||
img: /img/biezi.png
|
||||
description: 为文章检查错别字
|
||||
- name: 特殊英文字体生成器
|
||||
url: https://www.jiuwa.net/ywzm/
|
||||
img: /img/jiuwa.png
|
||||
description: 可用在一些社交平台的昵称和简介里
|
||||
- name: RTranslator
|
||||
url: https://github.com/niedev/RTranslator
|
||||
img: /img/RTranslator.png
|
||||
description: 在本地运行的适用于 Android 的开源实时翻译应用程序
|
||||
- name: xiaoju-survey
|
||||
url: https://github.com/didi/xiaoju-survey
|
||||
img: /img/xiaoju-survey.jpg
|
||||
description: 提供企业级调研服务,「快速」打造「专属」问卷系统, 让调研「更轻松」
|
||||
- name: ncmdump
|
||||
url: https://github.com/taurusxin/ncmdump
|
||||
img: /img/ncmdump.png
|
||||
description: 转换网易云音乐 ncm 到 mp3 / flac
|
||||
- name: EasySpider
|
||||
url: https://github.com/NaiboWang/EasySpider
|
||||
img: /img/EasySpider.jfif
|
||||
description: 一个可视化浏览器自动化测试/数据采集/爬虫软件
|
||||
- name: FluentRead
|
||||
url: https://github.com/Bistutu/FluentRead
|
||||
img: /img/FluentRead.jfif
|
||||
description: 拥有基于上下文语境的人工智能翻译引擎,为网站提供更加友好的翻译,让所有人都能够拥有基于母语般的阅读体验
|
||||
- name: my-tv
|
||||
url: https://github.com/lizongying/my-tv
|
||||
img: /img/my-tv.jfif
|
||||
description: 电视直播软件,安装即可使用
|
||||
- name: EarTrumpet
|
||||
url: https://github.com/File-New-Project/EarTrumpet
|
||||
img: /img/EarTrumpet.png
|
||||
description: 在 Windows 上调整每个应用的音量
|
||||
- name: Fluent Reader
|
||||
url: https://github.com/yang991178/fluent-reader
|
||||
img: /img/fluent-reader.png
|
||||
description: 现代桌面 RSS 阅读器
|
||||
- name: 域名百科
|
||||
url: https://dotwiki.com/
|
||||
img: /img/dotwiki.ico
|
||||
description: 域名百科
|
||||
- name: 哪煮米
|
||||
url: https://www.nazhumi.com/
|
||||
img: /img/哪煮米.ico
|
||||
description: 全网域名,一站比价
|
||||
- name: cobalt
|
||||
url: https://github.com/imputnet/cobalt
|
||||
img: /img/cobalt.png
|
||||
description: 音视频资源下载器,支持国内外几乎所有网站
|
||||
- name: SQLYNX
|
||||
url: https://www.sqlynx.com/
|
||||
img: /img/SQLYNX.svg
|
||||
description: WEB 和桌面 SQL 编辑器
|
||||
- name: KasmVNC
|
||||
url: https://github.com/kasmtech/KasmVNC
|
||||
img: /img/KasmVNC.jpg
|
||||
description: 一个远程桌面的 VNC 软件,不需要客户端,只要服务器安装后,就可以通过浏览器访问
|
||||
- name: openalternative
|
||||
url: https://openalternative.co/
|
||||
img: /img/openalternative.ico
|
||||
description: 查询软件的开源平替
|
||||
- name: alternativeto
|
||||
url: https://alternativeto.net/
|
||||
img: /img/alternativeto.ico
|
||||
description: 查询软件的替代品,与上一个类似
|
||||
- name: mikufans录播姬
|
||||
url: https://github.com/BililiveRecorder/BililiveRecorder
|
||||
img: /img/BililiveRecorder.png
|
||||
description: 录播姬 | mikufans 生放送录制
|
||||
- name: biliup
|
||||
url: https://github.com/biliup/biliup
|
||||
img:
|
||||
description: 全自动录播、直播录制、分p投稿工具,支持twitch、ytb频道搬运
|
||||
- name: Ente Auth
|
||||
url: https://ente.io/auth/
|
||||
img: /img/ente.png
|
||||
description: 一个开源的双因素认证码管理器
|
||||
- name: 图片盲水印查看器
|
||||
url: http://www.atoolbox.net/Tool.php?Id=1052
|
||||
img: /img/atoolbox.png
|
||||
description: 查看图片各通道的最低位(LSB)信息
|
||||
- name: screen studio
|
||||
url: https://www.screen.studio/
|
||||
img: /img/www.screen.png
|
||||
description: 录制演示录屏工具(Mac)
|
||||
- name: Focusee
|
||||
url: https://gemoo.com/focusee/
|
||||
img: /img/gemoo.ico
|
||||
description: 录制演示录屏工具(Win)
|
||||
- name: MinerU
|
||||
url: https://github.com/opendatalab/MinerU
|
||||
img: /img/MinerU-logo.png
|
||||
description: 强大的数据提取工具,将PDF,DOC等格式转换为Markdown
|
||||
- name: B站空降助手
|
||||
url: https://github.com/hanydd/BilibiliSponsorBlock
|
||||
img: /img/LogoSponsorBlocker256px.png
|
||||
description: 一款跳过B站视频中恰饭片段的浏览器插件
|
||||
- name: DawnLauncher
|
||||
url: https://github.com/fanchenio/DawnLauncher
|
||||
img:
|
||||
description: Windows快捷启动工具,帮助您整理杂乱无章的桌面,分门别类管理您的桌面快捷方式,让您的桌面保持干净整洁
|
||||
- name: omnivore
|
||||
url: https://github.com/omnivore-app/omnivore
|
||||
img: /img/omnivore.png
|
||||
description: 一个稍后阅读文章工具
|
||||
- name: Inbox Zero
|
||||
url: https://github.com/elie222/inbox-zero
|
||||
img:
|
||||
description: 借助AI整理收件箱 保持零邮件
|
||||
- name: screenshot-to-code
|
||||
url: https://github.com/liseami/screenshot-to-code
|
||||
img:
|
||||
description: 一个简单的工具,可使用 AI 将屏幕截图、模型和 Figma 设计转换为干净、实用的代码。现在支持 Claude Sonnet 3.5 和 GPT-4o
|
||||
- name: MusicFree
|
||||
url: https://musicfree.catcat.work/
|
||||
img: /img/MusicFree.png
|
||||
description: 一个插件化的音乐播放器
|
@ -1,8 +0,0 @@
|
||||
- name: 影视飓风
|
||||
url: https://www.ysjf.com/materialLibrary
|
||||
img: /img/影视飓风.png
|
||||
description: 影视飓风拍摄的大量可免费商用素材
|
||||
- name: Video file compressor
|
||||
url: https://tools.rotato.app/compress
|
||||
img:
|
||||
description: 强大的视频压缩工具
|
@ -1,28 +0,0 @@
|
||||
- name: Squoosh
|
||||
url: https://github.com/GoogleChromeLabs/squoosh
|
||||
img: /img/squoosh.webp
|
||||
description: 直接在浏览器中使用一流的编解码器缩小图像,Google出品
|
||||
- name: screenshot.rocks
|
||||
url: https://screenshot.rocks/
|
||||
img: /img/screenshot.rocks.ico
|
||||
description: 一个在线工具,可以为网页截图加上浏览器边框
|
||||
- name: HTML👉JADE/PUG
|
||||
url: http://html2jade.org/
|
||||
img: /img/HTML👉JADEPUG.ico
|
||||
description: HTML👉JADE/PUG 实时在线转换网站
|
||||
- name: I❤️IMG
|
||||
url: https://www.iloveimg.com/zh-cn
|
||||
img: /img/I❤️IMG.png
|
||||
description: 免费批量编辑图片工具(包括透明图片裁剪)
|
||||
- name: iconfont-阿里巴巴矢量图标库
|
||||
url: https://www.iconfont.cn/
|
||||
img: /img/iconfont.png
|
||||
description: 阿里巴巴矢量图标库
|
||||
- name: Billfish素材管家
|
||||
url: https://www.billfish.cn/
|
||||
img: /img/Billfish.ico
|
||||
description: 专为设计师打造的图片素材管理工具,所有功能全部免费
|
||||
- name: 全球酷站
|
||||
url: https://matrixflip.com/discoveries/page/1
|
||||
img: /img/全球酷站.png
|
||||
description: 收录了大量设计惊艳的网站
|
@ -1,24 +0,0 @@
|
||||
- name: 中国网络防火长城简史
|
||||
url: https://blog.tsingjyujing.com/spam/gfw-history
|
||||
img: /img/中国网络防火长城简史.avif
|
||||
description: 中国网络防火长城简史
|
||||
- name: 科技爱好者周刊
|
||||
url: https://github.com/ruanyf/weekly
|
||||
img: /img/科技爱好者周刊.jfif
|
||||
description: 科技爱好者周刊,每周五发布
|
||||
- name: 纪念陈皓(左耳朵耗子)
|
||||
url: https://www.cnblogs.com/Solstice/p/haoel.html
|
||||
img: /img/纪念陈皓(左耳朵耗子).webp
|
||||
description: 纪念陈皓(左耳朵耗子)
|
||||
- name: 戒鸡瘾的办法
|
||||
url: https://www.nodeseek.com/post-113191-1
|
||||
img:
|
||||
description: pve快速配置IPv6+nat教程 && Lxc评测脚本发布,评测宿主机系统
|
||||
- name: quicklink:实现原理与给前端的启发
|
||||
url: https://www.jianshu.com/p/7dc94efe7e2e
|
||||
img:
|
||||
description: 【性能优化】quicklink:实现原理与给前端的启发
|
||||
- name: 秒开的艺术:Hexo 博客首屏耗时优化实践
|
||||
url: https://imkero.net/posts/hexo-page-performance/
|
||||
img:
|
||||
description: 秒开的艺术:Hexo 博客首屏耗时优化实践
|
@ -1,24 +0,0 @@
|
||||
- name: chinese-programmer-wrong-pronunciation
|
||||
url: https://github.com/shimohq/chinese-programmer-wrong-pronunciation
|
||||
img: /img/chinese-programmer-wrong-pronunciation.png
|
||||
description: 中国程序员容易发音错误的单词
|
||||
- name: code-box
|
||||
url: https://github.com/027xiguapi/code-box
|
||||
img: /img/code-box.png
|
||||
description: 用来解除 CSDN/知乎/脚本之家等网站的限制(比如要求登录)的开源的浏览器插件
|
||||
- name: 菜鸟教程
|
||||
url: https://www.runoob.com/
|
||||
img: /img/runoob.ico
|
||||
description: 供了编程的基础技术教程, 介绍了HTML、CSS、Javascript、Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识。 同时本站中也提供了大量的在线实例,通过实例,您可以更好的学习编程
|
||||
- name: RegExr
|
||||
url: https://regexr.com/
|
||||
img: /img/RegExr.png
|
||||
description: 学习,测试正则表达式
|
||||
- name: APISQL
|
||||
url: https://apisql.cn/
|
||||
img: /img/APISQL.ico
|
||||
description: 轻松将内网数据库的增删改查,发布为外网可访问的HTTPS API
|
||||
- name: public-apis
|
||||
url: https://github.com/public-apis/public-apis
|
||||
img: /img/public-apis.png
|
||||
description: 收集了大量公开API,有好用的,也有好玩的
|
@ -1,12 +0,0 @@
|
||||
- name: local-ISPs-to-CN
|
||||
url: https://github.com/sjlleo/local-ISPs-to-CN/blob/cd760ca23cc9d1e4981af8993ab42a67885cc2f6/report_zh_CN.md
|
||||
img: /img/local-ISPs-to-CN.jfif
|
||||
description: 国内/国际互联线路知识
|
||||
- name: ZBProxy
|
||||
url: https://github.com/layou233/ZBProxy/
|
||||
img: /img/ZBProxy.png
|
||||
description: 一个简单、快速、高性能的多用途 TCP 中继,主要为搭建 Hypixel 加速 IP 而开发。
|
||||
- name: China Internationally-connected
|
||||
url: https://github.com/china-net/Internationally-connected
|
||||
img: /img/China-Internationally-connected.png
|
||||
description: 中国的国际网络互联状态介绍
|
@ -1,44 +0,0 @@
|
||||
- name: 阿里巴巴矢量图标库 iconfont 🔥
|
||||
url: https://www.iconfont.cn/
|
||||
img: https://img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico
|
||||
description: 国内功能很强大且图标内容很丰富的矢量图标库
|
||||
- name: OfficePLUS 🔥
|
||||
url: https://www.officeplus.cn/
|
||||
img: https://fe.officeplus.cn/favicon.ico
|
||||
description: 微软官方Office免费模板服务平台
|
||||
- name: 优品 PPT
|
||||
url: https://www.ypppt.com/
|
||||
img: https://cdn.jsdelivr.net/npm/hassan-assets/navi/alphabet/Letter_Y.png
|
||||
description: 一个有情怀的免费PPT模板下载网站!
|
||||
- name: Wallpaper ABYSS
|
||||
url: https://wall.alphacoders.com
|
||||
img: https://wall.alphacoders.com/favicon.ico
|
||||
description: 壁纸的聚集地
|
||||
- name: Pexels
|
||||
url: https://www.pexels.com/
|
||||
img: https://www.pexels.com/favicon.ico
|
||||
description: 才华横溢的摄影作者在这里免费分享最精彩的素材图片和视频
|
||||
- name: Font Awesome
|
||||
url: https://fontawesome.dashgame.com/
|
||||
img: https://cdn.jsdelivr.net/npm/hassan-assets/navi/logos/Font_Awesome.png
|
||||
description: 一套绝佳的图标字体库和CSS框架
|
||||
- name: 鸠摩搜索 Jiumo Search
|
||||
url: https://www.jiumodiary.com/
|
||||
img: https://www.jiumodiary.com/images/favicon.png
|
||||
description: 免费书籍下载
|
||||
- name: LoreFree 电子书
|
||||
url: https://ebook2.lorefree.com/
|
||||
img: https://ebook2.lorefree.com/favicon.ico
|
||||
description: 免费电子书共享社区
|
||||
- name: LoreFree 学术文库
|
||||
url: http://paper.lorefree.com/
|
||||
img: https://ebook2.lorefree.com/favicon.ico
|
||||
description: 学术共享,资源共建,让知识自由传播
|
||||
- name: 第一字体转换器
|
||||
url: http://www.diyiziti.com/
|
||||
img: http://www.diyiziti.com/favicon.ico
|
||||
description: 字体转换器在线转换,艺术字体在线生成器
|
||||
- name: 字体家
|
||||
url: https://www.zitijia.com/
|
||||
img: https://www.zitijia.com/static/img/favicon.ico
|
||||
description: 一家开发书法字体网站,内含正版付费、免费字体下载,另有字体在线转换程序
|
@ -1,72 +0,0 @@
|
||||
- name: Ban-Hacker-IP-Plan
|
||||
url: https://github.com/Aabyss-Team/Ban-Hacker-IP-Plan
|
||||
img: /img/Ban-Hacker-IP-Plan.jfif
|
||||
description: 国内恶意IP封禁计划,还赛博空间一片朗朗乾坤
|
||||
- name: LinuxMirors
|
||||
url: https://linuxmirrors.cn/
|
||||
img: /img/LinuxMirors.png
|
||||
description: GNU/Linux 更换系统软件源脚本及 Docker 安装脚本
|
||||
- name: lxc-toolkit
|
||||
url: https://github.com/no-passwd/lxc-toolkit
|
||||
img:
|
||||
description: lxc系统检测工具,用于获取lxc宿主信息
|
||||
- name: docker_image_pusher
|
||||
url: https://github.com/tech-shrimp/docker_image_pusher
|
||||
img: /img/docker_image_pusher.png
|
||||
description: 使用Github Action将国外的Docker镜像转存到阿里云私有仓库,供国内服务器使用,免费易用
|
||||
- name: fscan
|
||||
url: https://github.com/shadow1ng/fscan
|
||||
img: /img/fscan.jfif
|
||||
description: 一款内网综合扫描工具,方便一键自动化、全方位漏扫扫描
|
||||
- name: vscan
|
||||
url: https://github.com/veo/vscan
|
||||
img: /img/vscan.gif
|
||||
description: 网站漏洞扫描工具,帮助您快速检测网站安全隐患
|
||||
- name: china-operator-ip
|
||||
url: https://github.com/gaoyifan/china-operator-ip
|
||||
img: /img/china-operator-ip.jfif
|
||||
description: 中国运营商IPv4/IPv6地址库-每日更新
|
||||
- name: 1Panel
|
||||
url: https://github.com/1Panel-dev/1Panel
|
||||
img: /img/1Panel.jfif
|
||||
description: 现代化、开源的 Linux 服务器运维管理面板
|
||||
- name: ddns-go
|
||||
url: https://github.com/jeessy2/ddns-go
|
||||
img: /img/ddns-go.jfif
|
||||
description: 简单易用的DDNS
|
||||
- name: electerm
|
||||
url: https://github.com/electerm/electerm
|
||||
img: /img/electerm.png
|
||||
description: 开源终端/ssh/telnet/serialport/RDP/VNC/sftp客户端
|
||||
- name: xterminal
|
||||
url: https://www.xterminal.cn/
|
||||
img: /img/xterminal.svg
|
||||
description: 不仅是强大的SSH工具,更提供本地控制台
|
||||
- name: MegaEase
|
||||
url: https://megaease.cn/
|
||||
img: /img/MegaEase.png
|
||||
description: 开源、自主可控、低成本、高可用 Cloud Native 平台
|
||||
- name: NETworkManager
|
||||
url: https://github.com/BornToBeRoot/NETworkManager
|
||||
img: /img/NETworkManager.svg
|
||||
description: 开源的强大网管工具
|
||||
- name: Nmap
|
||||
url: https://github.com/nmap/nmap
|
||||
img: /img/Nmap.png
|
||||
description: 网络扫描神器
|
||||
- name: hackingtool
|
||||
url: https://github.com/Z4nzu/hackingtool
|
||||
img: /img/hackingtool.png
|
||||
description: 融合了各类漏洞扫描和攻击工具
|
||||
- name: InternetTest Pro
|
||||
url: https://github.com/Leo-Corporation/InternetTest
|
||||
img: /img/InternetTest Pro.png
|
||||
description: 一款Windows连接工具,功能强大
|
||||
- name: pvetools
|
||||
url: https://github.com/ivanhao/pvetools
|
||||
img: /img/pvetools.webp
|
||||
description: Proxmox VE Tools 脚本(Debian 9+ 可以使用)。包括电子邮件、samba、NFS set zfs max ram、嵌套虚拟化、docker、pci passthrough等
|
||||
- name: cloud_dns_exporter
|
||||
url: https://github.com/eryajf/cloud_dns_exporter
|
||||
img:
|
||||
description: 自动获取DNS提供商的域名及解析列表,同时自动获取每个域名解析的证书信息,并导出为Prometheus Metrics。
|
@ -1,38 +0,0 @@
|
||||
---
|
||||
title: Hello World
|
||||
---
|
||||
Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](https://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues).
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Create a new post
|
||||
|
||||
``` bash
|
||||
$ hexo new "My New Post"
|
||||
```
|
||||
|
||||
More info: [Writing](https://hexo.io/docs/writing.html)
|
||||
|
||||
### Run server
|
||||
|
||||
``` bash
|
||||
$ hexo server
|
||||
```
|
||||
|
||||
More info: [Server](https://hexo.io/docs/server.html)
|
||||
|
||||
### Generate static files
|
||||
|
||||
``` bash
|
||||
$ hexo generate
|
||||
```
|
||||
|
||||
More info: [Generating](https://hexo.io/docs/generating.html)
|
||||
|
||||
### Deploy to remote sites
|
||||
|
||||
``` bash
|
||||
$ hexo deploy
|
||||
```
|
||||
|
||||
More info: [Deployment](https://hexo.io/docs/one-command-deployment.html)
|
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 887 B |
Before Width: | Height: | Size: 139 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 746 B |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 549 B |
Before Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 1.8 KiB |