├── requirements.txt ├── .gitignore ├── vercel.json ├── package.json ├── public ├── image │ └── favicon.ico ├── assets │ ├── svg │ │ ├── search.svg │ │ ├── moon.svg │ │ └── sun.svg │ └── data.json ├── js │ ├── main.js │ ├── theme.js │ ├── context-menu.js │ └── data-loader.js ├── css │ ├── dark.css │ ├── daytime.css │ ├── context-menu.css │ └── style.css ├── index.html └── service-worker.js ├── .github └── workflows │ └── scraping.yml ├── scripts └── scrape.py ├── README.md └── LICENSE /requirements.txt: -------------------------------------------------------------------------------- 1 | notion_client==2.2.1 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | .DS_store 3 | node_modules 4 | package-lock.json -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "cleanUrls": true, 3 | "trailingSlash": false 4 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "axios": "^1.4.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /public/image/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nowscott/OldIndWebIndex/HEAD/public/image/favicon.ico -------------------------------------------------------------------------------- /public/assets/svg/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/js/main.js: -------------------------------------------------------------------------------- 1 | if ('serviceWorker' in navigator) { 2 | window.addEventListener('load', () => { 3 | navigator.serviceWorker.register('/service-worker.js').then(registration => { 4 | registration.onupdatefound = () => { 5 | const installingWorker = registration.installing; 6 | installingWorker.onstatechange = () => { 7 | if (installingWorker.state === 'installed') { 8 | if (navigator.serviceWorker.controller) { 9 | // 新内容已下载,用户需要重新加载页面以获取更新 10 | if (confirm('新版本已更新,是否立即刷新页面?')) { 11 | window.location.reload(); 12 | } 13 | } else { 14 | console.log('Content is now available offline!'); 15 | } 16 | } 17 | }; 18 | }; 19 | }).catch(error => { 20 | console.log('Service Worker registration failed:', error); 21 | }); 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /public/assets/svg/moon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/css/dark.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #222; 3 | } 4 | 5 | .title-1 { 6 | text-decoration: underline; 7 | text-decoration-color: khaki; 8 | } 9 | 10 | h1 a { 11 | color: khaki; 12 | } 13 | 14 | .title-2 { 15 | text-decoration: underline; 16 | text-decoration-color: #eee; 17 | } 18 | 19 | h2 a { 20 | color: #eee; 21 | } 22 | 23 | .title-tags, 24 | .title-webs { 25 | color: #eee; 26 | } 27 | 28 | .search-in { 29 | color: lightgrey; 30 | background-color: rgb(0, 0, 49); 31 | } 32 | 33 | .search-btn { 34 | background-color: rgb(0, 0, 49); 35 | } 36 | 37 | .tag, 38 | #web { 39 | border: #909090 1.5px solid; 40 | } 41 | 42 | #web { 43 | color: lightgrey; 44 | background-color: rgb(0, 0, 49); 45 | } 46 | 47 | .on { 48 | background-color: lightgrey; 49 | color: darkslategrey; 50 | } 51 | 52 | .off { 53 | background-color: darkslategrey; 54 | color: lightgrey; 55 | } 56 | .footer-text{ 57 | color: lightpink; 58 | } -------------------------------------------------------------------------------- /public/css/daytime.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #f7f7f7; 3 | } 4 | 5 | .title-1 { 6 | text-decoration: underline; 7 | text-decoration-color: darkorange; 8 | } 9 | 10 | h1 a { 11 | color: darkorange; 12 | } 13 | 14 | .title-2 { 15 | text-decoration: underline; 16 | text-decoration-color: darkslateblue; 17 | } 18 | 19 | h2 a { 20 | color: darkslateblue; 21 | } 22 | 23 | .title-tags, 24 | .title-webs { 25 | color: darkblue; 26 | } 27 | 28 | .search-in { 29 | color: navy; 30 | background-color: lemonchiffon; 31 | } 32 | 33 | .search-btn { 34 | background-color: lemonchiffon; 35 | } 36 | 37 | .tag, 38 | #web { 39 | border: #909090 1.5px solid; 40 | } 41 | 42 | #web { 43 | color: navy; 44 | background-color: lemonchiffon; 45 | } 46 | 47 | .on { 48 | background-color: darkslategray; 49 | color: #eee; 50 | } 51 | 52 | .off { 53 | background-color: #eee; 54 | color: darkslategray; 55 | } 56 | 57 | .footer-text { 58 | color: purple; 59 | } -------------------------------------------------------------------------------- /public/css/context-menu.css: -------------------------------------------------------------------------------- 1 | /* 右键菜单 */ 2 | #customContextMenu { 3 | display: none; 4 | position: absolute; 5 | z-index: 1000; 6 | background-color: #ffffff; 7 | border: 1px solid #ddd; 8 | box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2); 9 | border-radius: 3px; 10 | padding: 0px; 11 | width: 120px; 12 | } 13 | 14 | #customContextMenu li { 15 | padding: 8px 10px; 16 | /* 增加填充,使菜单项更易点击 */ 17 | border-top: 1px solid #ddd; 18 | /* 为每个菜单项添加上边框 */ 19 | } 20 | 21 | #customContextMenu li:first-child { 22 | border-top: none; 23 | /* 第一个菜单项不需要上边框 */ 24 | } 25 | 26 | #customContextMenu li:last-child { 27 | border-bottom: none; 28 | /* 为最后一个菜单项不需要下边框 */ 29 | } 30 | 31 | #customContextMenu ul { 32 | list-style-type: none; 33 | margin: 0; 34 | padding: 0; 35 | } 36 | 37 | #customContextMenu ul li { 38 | padding: 8px 12px; 39 | cursor: pointer; 40 | color: #333; 41 | } 42 | 43 | /* #customContextMenu ul li:hover { 44 | background-color: #f5f5f5; 45 | color: #000; 46 | } */ 47 | 48 | #customContextMenu li.selected-font { 49 | box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2); 50 | /* 添加阴影效果 */ 51 | background-color: #f0f0f0; 52 | /* 可选:改变背景颜色增强视觉效果 */ 53 | } -------------------------------------------------------------------------------- /.github/workflows/scraping.yml: -------------------------------------------------------------------------------- 1 | name: update data.json 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: "0 * * * *" 7 | 8 | jobs: 9 | scrape_and_save: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout code 13 | uses: actions/checkout@v4 14 | - name: Set up Python 15 | uses: actions/setup-python@v5 16 | with: 17 | python-version: "3.x" 18 | - name: Install dependencies 19 | run: | 20 | python -m pip install --upgrade pip 21 | pip install -r requirements.txt 22 | - name: Run scraping script 23 | env: 24 | NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }} 25 | DATABASE_ID: ${{ secrets.DATABASE_ID }} 26 | run: | 27 | python scripts/scrape.py 28 | - name: Commit data.json 29 | run: | 30 | git diff --quiet --exit-code public/assets/data.json || ( 31 | git config --global user.name "NowScott" 32 | git config --global user.email "nowscott@qq.com" 33 | git add public/assets/data.json 34 | DATE=$(TZ="Asia/Shanghai" date "+%Y-%m-%d %H:%M:%S") 35 | git commit -m "Update data.json at $DATE" 36 | git push origin main 37 | ) 38 | 39 | 40 | -------------------------------------------------------------------------------- /public/assets/svg/sun.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 网站索引 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 |
25 | 28 |
29 |

30 | 31 | Individual Web Index. 32 | 33 |

34 |

35 | 36 | 如何部署 37 | 38 |

39 | 43 |

选择标签

44 |
45 |

筛选网页

46 |
47 | 48 |
49 | 50 | -------------------------------------------------------------------------------- /public/js/theme.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', function () { 2 | var currentTime = new Date(); // 创建一个 Date 对象 3 | var currentHour = currentTime.getHours(); // 获取当前时间(小时) 4 | 5 | var dark_mode = document.getElementById('darkcss'); 6 | var dark_mode_icon = document.getElementById('icon'); 7 | var dark_mode_btn = document.getElementById('darkbtn'); 8 | 9 | // 读取 cookie 中的模式设置 10 | var userPref = getCookie('themeMode'); 11 | 12 | if (userPref) { 13 | applyTheme(userPref); 14 | } else { 15 | // 如果没有用户偏好设置,根据时间自动切换模式 16 | if (currentHour >= 22 || currentHour < 8) { 17 | applyTheme('dark'); 18 | } else { 19 | applyTheme('daytime'); 20 | } 21 | } 22 | 23 | dark_mode_btn.onclick = function () { 24 | var newTheme = (dark_mode_btn.className === 'daytime') ? 'dark' : 'daytime'; 25 | applyTheme(newTheme); 26 | setCookie('themeMode', newTheme, 12); // 设置 cookie,有效期为 12 小时 27 | } 28 | }); 29 | 30 | function applyTheme(theme) { 31 | var dark_mode = document.getElementById('darkcss'); 32 | var dark_mode_icon = document.getElementById('icon'); 33 | var dark_mode_btn = document.getElementById('darkbtn'); 34 | 35 | if (theme === 'dark') { 36 | dark_mode.href = "/css/dark.css"; 37 | dark_mode_icon.src = 'assets/svg/sun.svg'; 38 | dark_mode_btn.className = 'dark'; 39 | } else { 40 | dark_mode.href = "/css/daytime.css"; 41 | dark_mode_icon.src = 'assets/svg/moon.svg'; 42 | dark_mode_btn.className = 'daytime'; 43 | } 44 | } 45 | 46 | function setCookie(name, value, hours) { 47 | var expires = ""; 48 | if (hours) { 49 | var date = new Date(); 50 | date.setTime(date.getTime() + (hours * 60 * 60 * 1000)); 51 | expires = "; expires=" + date.toUTCString(); 52 | } 53 | document.cookie = name + "=" + (value || "") + expires + "; path=/"; 54 | } 55 | 56 | function getCookie(name) { 57 | var nameEQ = name + "="; 58 | var ca = document.cookie.split(';'); 59 | for (var i = 0; i < ca.length; i++) { 60 | var c = ca[i]; 61 | while (c.charAt(0) == ' ') c = c.substring(1, c.length); 62 | if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 63 | } 64 | return null; 65 | } 66 | -------------------------------------------------------------------------------- /scripts/scrape.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | from notion_client import Client 4 | import traceback # 引入 traceback 用于打印详细的错误信息 5 | 6 | # 本地调试时候取消注释来加载本地环境变量 7 | # from dotenv import load_dotenv 8 | # dotenv_path = '.env' 9 | # load_dotenv(dotenv_path) 10 | 11 | notion = Client(auth=os.getenv("NOTION_TOKEN")) 12 | database_id = os.getenv("DATABASE_ID") 13 | 14 | def process_data(pages): 15 | processed_data = [] 16 | for item in pages['results']: 17 | properties = item['properties'] 18 | name = properties['name']['title'][0]['text']['content'] if properties['name']['title'] else '' 19 | web = properties.get('web', {}).get('url', '') 20 | tags = [tag['name'] for tag in properties.get('tags', {}).get('multi_select', [])] 21 | brief_text_list = properties.get('brief', {}).get('rich_text', []) 22 | brief = brief_text_list[0].get('text', {}).get('content', '') if brief_text_list else '' 23 | 24 | # 对 state 的处理添加 None 检查 25 | state_prop = properties.get('state') 26 | if state_prop and 'select' in state_prop and state_prop['select']: 27 | state = state_prop['select'].get('name', '') 28 | else: 29 | state = '' 30 | 31 | processed_data.append({ 32 | "name": name, 33 | "web": web, 34 | "tags": tags, 35 | "brief": brief, 36 | "state": state 37 | }) 38 | return processed_data 39 | 40 | 41 | def fetch_database(database_id): 42 | """从Notion数据库获取所有数据,并处理""" 43 | data = [] 44 | has_more = True 45 | start_cursor = None 46 | while has_more: 47 | try: 48 | response = notion.databases.query(database_id=database_id, start_cursor=start_cursor) 49 | data.extend(process_data(response)) 50 | has_more = response.get('has_more', False) # type: ignore 51 | start_cursor = response.get('next_cursor') # type: ignore 52 | except Exception as e: 53 | print("Failed to query database:", e) 54 | traceback.print_exc() 55 | break # 出错时退出循环 56 | return data 57 | 58 | def main(): 59 | """主函数,获取数据并保存到文件""" 60 | try: 61 | data = fetch_database(database_id) 62 | # 过滤数据 63 | filtered_data = [item for item in data if item['name'] and item['state'] == '正常'] 64 | # 保存到JSON文件 65 | with open('public/assets/data.json', 'w', encoding='utf-8') as f: 66 | json.dump(filtered_data, f, ensure_ascii=False, indent=4) 67 | except Exception as e: 68 | print(f"An error occurred: {e}") 69 | traceback.print_exc() 70 | 71 | if __name__ == "__main__": 72 | main() 73 | -------------------------------------------------------------------------------- /public/service-worker.js: -------------------------------------------------------------------------------- 1 | const CACHE_NAME = 'indwebindex-cache-v2'; // 更新缓存版本 2 | const urlsToCache = [ 3 | '/', 4 | '/index.html', 5 | '/css/dark.css', 6 | '/css/context-menu.css', 7 | '/css/style.css', 8 | '/css/daytime.css', 9 | '/js/data-loader.js', 10 | '/js/theme.js', 11 | '/js/context-menu.js', 12 | '/js/main.js', 13 | '/image/favicon.ico', 14 | '/assets/svg/search.svg', 15 | '/assets/svg/sun.svg', 16 | '/assets/svg/moon.svg', 17 | '/assets/data.json', 18 | 'https://cdn.jsdelivr.net/npm/cn-fontsource-smiley-sans-oblique-regular@1.0.1/font.min.css', 19 | 'https://npm.elemecdn.com/lxgw-wenkai-webfont@1.6.0/style.css', 20 | 'https://jhlst.nowscott.top/result.css', 21 | 'https://zqfs.nowscott.top/result.css' 22 | ]; 23 | 24 | self.addEventListener('install', event => { 25 | event.waitUntil( 26 | caches.open(CACHE_NAME) 27 | .then(cache => { 28 | console.log('Opened cache'); 29 | return cache.addAll(urlsToCache); 30 | }) 31 | ); 32 | }); 33 | 34 | self.addEventListener('fetch', event => { 35 | // 检查请求的来源是否为 chrome-extension 或者其他不支持的协议 36 | if (event.request.url.startsWith('chrome-extension://') || 37 | !event.request.url.startsWith('http') || 38 | event.request.method !== 'GET') { 39 | return; // 直接返回,不处理此请求 40 | } 41 | 42 | event.respondWith( 43 | caches.match(event.request).then(response => { 44 | if (response) { 45 | // 检查缓存版本是否过期 46 | return caches.open(CACHE_NAME).then(cache => { 47 | return fetch(event.request).then(fetchResponse => { 48 | if (fetchResponse && fetchResponse.status === 200) { 49 | cache.put(event.request, fetchResponse.clone()); 50 | } 51 | return fetchResponse; 52 | }).catch(() => { 53 | console.error('Fetch failed, returning cached response', event.request.url); 54 | return response; 55 | }); // 如果网络请求失败,使用缓存 56 | }); 57 | } else { 58 | return fetch(event.request).then(fetchResponse => { 59 | if (fetchResponse && fetchResponse.status === 200) { 60 | return caches.open(CACHE_NAME).then(cache => { 61 | cache.put(event.request, fetchResponse.clone()); 62 | return fetchResponse; 63 | }); 64 | } else { 65 | return fetchResponse; 66 | } 67 | }).catch(error => { 68 | console.error('Fetch failed for:', event.request.url, error); 69 | throw error; // 处理错误并返回 70 | }); 71 | } 72 | }) 73 | ); 74 | }); 75 | 76 | self.addEventListener('activate', event => { 77 | const cacheWhitelist = [CACHE_NAME]; 78 | event.waitUntil( 79 | caches.keys().then(cacheNames => { 80 | return Promise.all( 81 | cacheNames.map(cacheName => { 82 | if (cacheWhitelist.indexOf(cacheName) === -1) { 83 | console.log('Deleting old cache:', cacheName); 84 | return caches.delete(cacheName); 85 | } 86 | }) 87 | ); 88 | }) 89 | ); 90 | }); 91 | -------------------------------------------------------------------------------- /public/css/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://cdn.jsdelivr.net/npm/cn-fontsource-smiley-sans-oblique-regular@1.0.1/font.min.css'); 2 | @import url('https://npm.elemecdn.com/lxgw-wenkai-webfont@1.6.0/style.css'); 3 | @import url('https://jhlst.nowscott.top/result.css'); 4 | @import url('https://zqfs.nowscott.top/result.css'); 5 | 6 | * { 7 | margin: 0; 8 | padding: 0; 9 | } 10 | 11 | /* 字体部分 */ 12 | 13 | :root { 14 | --main-font-family: 'KingHwa_OldSong'; 15 | } 16 | 17 | body { 18 | user-select: none; 19 | /* 所有现代浏览器 */ 20 | -webkit-user-select: none; 21 | /* Safari */ 22 | -moz-user-select: none; 23 | /* Firefox */ 24 | -ms-user-select: none; 25 | /* IE10+ */ 26 | backdrop-filter: blur(15px); 27 | width: 98vw; 28 | height: 100vh; 29 | margin: 0 auto; 30 | font-family: var(--main-font-family); 31 | letter-spacing: 1px; 32 | text-align: center; 33 | } 34 | 35 | /* 需要黑白时专用 */ 36 | /* body { filter: grayscale(100%); } */ 37 | 38 | #darkbtn { 39 | border: none; 40 | background-color: transparent; 41 | margin-left: 80vw; 42 | margin-top: 2vh; 43 | } 44 | 45 | .html-container { 46 | width: 98vw; 47 | text-align: center; 48 | margin: 0 auto; 49 | position: relative; 50 | min-height: 88vh; 51 | padding-bottom: 5vh; 52 | } 53 | 54 | h1, 55 | h2 { 56 | text-align: center; 57 | font-weight: normal; 58 | font-family: var(--main-font-family); 59 | } 60 | 61 | /* 为标题设置样式 */ 62 | h1 { 63 | margin: 3vh 0; 64 | } 65 | 66 | h2 { 67 | margin: 1vh 0; 68 | font-size: 1.1em; 69 | } 70 | 71 | .search-box { 72 | text-align: center; 73 | display: inline-block; 74 | padding: 1vh 0; 75 | width: 80vw; 76 | } 77 | 78 | .search-in { 79 | width: 9rem; 80 | } 81 | 82 | .search-btn { 83 | height: 34px; 84 | width: 34px; 85 | } 86 | 87 | .search-in, 88 | .search-btn { 89 | margin: 2px 1px; 90 | padding: 5px; 91 | font-size: 16px; 92 | line-height: 20px; 93 | border: 2px solid #909090; 94 | border-radius: 10px; 95 | font-family: var(--main-font-family); 96 | 97 | } 98 | 99 | .title-tags, 100 | .title-webs { 101 | text-align: center; 102 | font-size: 1em; 103 | margin: 1vh 0; 104 | } 105 | 106 | a:link, 107 | :hover { 108 | text-decoration: none; 109 | } 110 | 111 | #tags-container, 112 | #webs-container { 113 | margin: 0 8vw; 114 | padding: 1vh 0; 115 | text-align: center; 116 | } 117 | 118 | .tag, 119 | #web { 120 | display: inline-block; 121 | margin: 5px; 122 | padding: 1px 5px; 123 | line-height: 24px; 124 | border-radius: 5px; 125 | letter-spacing: 0.5px; 126 | font-size: 0.9em; 127 | font-family: var(--main-font-family); 128 | } 129 | 130 | .footer-text { 131 | position: absolute; 132 | font-size: xx-small; 133 | white-space: nowrap; 134 | bottom: 2vh; 135 | left: 50%; 136 | transform: translateX(-50%); 137 | /* text-align: center; */ 138 | /* padding: 2vh 0 ; */ 139 | /* font-size: x-small; */ 140 | /* white-space: nowrap; */ 141 | /* left: 50%; */ 142 | } -------------------------------------------------------------------------------- /public/js/context-menu.js: -------------------------------------------------------------------------------- 1 | // 字体列表 2 | const fonts = ['Smiley Sans Oblique', 'LXGW WenKai', 'Zhuque Fangsong', 'KingHwa_OldSong']; 3 | const fontnames = ['得意黑', '霞鹜文楷', '朱雀仿宋', '京華老宋体']; 4 | 5 | function populateContextMenu() { 6 | const menu = document.getElementById('customContextMenu').querySelector('ul'); 7 | menu.innerHTML = ''; // 清空现有的菜单项,防止重复添加 8 | 9 | fonts.forEach((font, index) => { 10 | let li = document.createElement('li'); 11 | li.textContent = fontnames[index]; // 显示中文字体名 12 | li.style.cursor = 'pointer'; 13 | li.style.fontFamily = font; // 设置每个字体选项的字体样式 14 | li.onclick = () => { 15 | changeFont(font); // 调用更改字体的函数 16 | }; 17 | menu.appendChild(li); 18 | }); 19 | } 20 | 21 | 22 | function changeFont(font) { 23 | document.documentElement.style.setProperty('--main-font-family', `"${font}"`); 24 | setCookie('userFont', font, 7); // 更新Cookie,持续7天 25 | updateMenuSelection(font); // 更新菜单选择状态 26 | document.getElementById('customContextMenu').style.display = 'none'; // 隐藏菜单 27 | } 28 | 29 | function updateMenuSelection(selectedFont) { 30 | const items = document.querySelectorAll('#customContextMenu li'); 31 | items.forEach(item => { 32 | if (item.textContent.trim() === fontnames[fonts.indexOf(selectedFont)]) { // 使用正确的友好名称进行比较 33 | item.classList.add('selected-font'); 34 | } else { 35 | item.classList.remove('selected-font'); 36 | } 37 | }); 38 | } 39 | 40 | 41 | 42 | document.addEventListener('DOMContentLoaded', function() { 43 | populateContextMenu(); // 填充右键菜单 44 | loadFont(); // 加载用户之前选择的字体 45 | }); 46 | 47 | // 处理右键菜单事件 48 | document.addEventListener('contextmenu', function (event) { 49 | event.preventDefault(); 50 | var contextMenu = document.getElementById('customContextMenu'); 51 | contextMenu.style.display = 'block'; 52 | contextMenu.style.left = event.pageX + 'px'; 53 | contextMenu.style.top = event.pageY + 'px'; 54 | }); 55 | 56 | // 处理点击事件,隐藏自定义的右键菜单 57 | document.addEventListener('click', function (event) { 58 | var contextMenu = document.getElementById('customContextMenu'); 59 | if (event.target.offsetParent !== contextMenu) { 60 | contextMenu.style.display = 'none'; 61 | } 62 | }); 63 | 64 | function setCookie(name, value, days) { 65 | var expires = ""; 66 | if (days) { 67 | var date = new Date(); 68 | date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 69 | expires = "; expires=" + date.toUTCString(); 70 | } 71 | document.cookie = name + "=" + (value || "") + expires + "; path=/"; 72 | } 73 | 74 | function getCookie(name) { 75 | var nameEQ = name + "="; 76 | var ca = document.cookie.split(';'); 77 | for (var i = 0; i < ca.length; i++) { 78 | var c = ca[i]; 79 | while (c.charAt(0) == ' ') c = c.substring(1, c.length); 80 | if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 81 | } 82 | return null; 83 | } 84 | 85 | function loadFont() { 86 | var userFont = getCookie('userFont'); 87 | if (userFont) { 88 | document.documentElement.style.setProperty('--main-font-family', userFont); 89 | updateMenuSelection(userFont); // 更新菜单选择状态 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Old Individual Web Index(网页索引旧版本) 2 | 3 | [![data update][data-update-image]][data-update-url] 4 | [![GitHub stars][stars-image]][stars-url] 5 | [![GitHub forks][forks-image]][forks-url] 6 | [![license GPL-3.0][license-image]][license-url] 7 | 8 | [![commit-count-permonth][commit-image]][commit-url] 9 | [![contributors-count][contributors-image]][contributors-url] 10 | 11 | [![Star History Chart][stars-history-image]][stars-url] 12 | 13 | 14 | ## 1.如何部署 15 | 16 | 在2024年4月9日的更新之后,部署这个项目变得更加简单。您只需要复制这个[Notion页面][notion-url]作为您自己的数据库,根据需要添加网站数据,然后fork这个仓库。 17 | 18 | 接下来,进入仓库设置,找到Actions下的Secrets and variables。在那里添加两个Repository secrets:ACCESS_TOKEN和DATABASE_ID。这些分别是从[我的集成][access-url]网站获得的密钥,以及您的Notion数据库的ID。 19 | 20 | 请注意,在获取密钥之后,您需要将您的集成连接到您的数据库,并手动运行GitHub Actions中的update data.json。这样就完成了部署。 21 | 22 | ## 2.创建的目的 23 | 24 | 很久以前,互联网初期有一个叫做黄页的网站,上面索引了许多其他网站。随着时间的推移,它逐渐演变成了搜索引擎。 25 | 26 | 然而,在搜索引擎中,当涉及到寻找特定网站时,结果往往缺乏准确性。因此,我仍然认为每个人都需要自己的黄页。 27 | 28 | 这个个人黄页将包含一系列经常使用的网站,以及添加标签和简短描述的功能,方便搜索和浏览。 29 | 30 | 最终,我决定将这个个人黄页命名为“个人网站索引”。 31 | 32 | ## 3.网站迭代 33 | 34 | 从我有这个想法到现在,这个网站经历了多次迭代,URL也变化了几次。当前并且是最终的网站是[nowscott.top](https://nowscott.top)。 35 | 36 | 起初,数据文件是直接手动输入的,每次想要更新数据内容,我都必须访问开发者接口,对数据文件进行更改,然后上传到GitHub。这让我感到非常不友好。 37 | 38 | 因此,在最新版本中,我利用Notion API将数据存储在Notion的数据库中。具体的实现细节将在下一部分解释。 39 | 40 | ## 4.如何使用Notion API 41 | (从Notion获取数据的代码未包含在此项目中。) 42 | 43 | 这个想法起源于Bilibili上一个上传者的视频,下面提供链接: 44 | 45 | [【S1E3】用Notion当数据库写一个简单的API](https://www.bilibili.com/video/BV1gF411E7pV/?share_source=copy_web&vd_source=98c7014c35363c157a4fba4929dbda77) 46 | 47 | 在这个视频中,我学习到了如何使用Notion API从Notion获取数据并在网页上显示。如果你有任何问题,可以观看视频了解更多信息。 48 | 49 | 总而言之,我利用一个叫Netlify的网站部署了一个服务。这个服务每次有人访问我部署的域名时都会运行,它从Notion获取数据并返回给前端。一旦前端接收到数据,就可以在网页上显示。 50 | 51 | 听起来很棒,对吧?然而,这个简单的过程最多需要7到8秒的时间,这与快速加载个人网站的愿景不符。因此,我在这方面做了进一步的改进。 52 | 53 | ## 5.一些优化 54 | 55 | 我无法改变Notion API的访问速度,但我可以改变获取数据的方式。如果我们想要更方便地进行修改,我们可以在一个便利的位置存储一份数据副本。在访问网站时,我们可以获取这个存储的数据,有效地解决了访问速度慢的问题。 56 | 57 | 当数据被修改时,上述便利的数据副本不会立即更新,因为它不能与Notion直接通信。为了解决这个问题,我利用GitHub Actions定期更新存储的数据。这确保了数据保持最新。 58 | 59 | ## 6.最后的说明 60 | 61 | 总之,这个项目是一个基于网络的个人网站索引,它解决了访问速度慢的问题,并确保了数据及时更新。这些优化使修改变得更加容易,并提供了更高效、无缝的用户体验。感谢您对这个项目的兴趣。 62 | 63 | 如果您对这个项目有任何问题或询问,可以通过电子邮件联系我:[nowscott@qq.com](mailto:nowscott@qq.com) 64 | 65 | 66 | [data-update-url]:https://github.com/nowscott/OldIndWebIndex/actions/workflows/scraping.yml "数据更新" 67 | [data-update-image]:https://github.com/nowscott/OldIndWebIndex/actions/workflows/scraping.yml/badge.svg 68 | [stars-url]:https://github.com/NowScott/IndWebIndex/stargazers "星标" 69 | [stars-image]: https://img.shields.io/github/stars/NowScott/IndWebIndex?label=Star 70 | [forks-url]: https://github.com/NowScott/IndWebIndex/forks "复刻" 71 | [forks-image]: https://img.shields.io/github/forks/NowScott/IndWebIndex?label=Fork 72 | [license-url]: https://opensource.org/license/gpl-3-0/ "许可证" 73 | [license-image]: https://img.shields.io/github/license/NowScott/IndWebIndex 74 | 75 | [commit-url]:https://github.com/NowScott/IndWebIndex/commits/main "提交" 76 | [commit-image]:https://img.shields.io/github/commit-activity/m/NowScott/IndWebIndex 77 | [contributors-url]:https://github.com/NowScott/IndWebIndex/graphs/contributors "贡献者" 78 | [contributors-image]:https://img.shields.io/github/contributors/NowScott/IndWebIndex 79 | 80 | [web-url]:https://www.nowscott.top "中文网页" 81 | [web-image]:https://img.shields.io/badge/%E7%BD%91%E9%A1%B5%E9%A2%84%E8%A7%88-%E4%B8%AD%E6%96%87-blue 82 | [stars-history-image]:https://api.star-history.com/svg?repos=NowScott/IndWebIndex&type=Date 83 | 84 | [notion-url]:https://nowscott.notion.site/aef09fbce63649cba8b9269374dbb641?v=36b6f2625b8e4e5faf9f68e1284bd2bc&pvs=74 85 | 86 | [access-url]:https://www.notion.so/my-integrations -------------------------------------------------------------------------------- /public/js/data-loader.js: -------------------------------------------------------------------------------- 1 | window.onload = function () { 2 | var sources, taglist = [], onlist = [], reslist = []; 3 | 4 | function randomSort(arr) { 5 | for (let i = 0, l = arr.length; i < l; i++) { 6 | let rc = parseInt(Math.random() * l); 7 | const empty = arr[i]; 8 | arr[i] = arr[rc]; 9 | arr[rc] = empty; 10 | } 11 | return arr; 12 | } 13 | 14 | function unique(arr) { return Array.from(new Set(arr)); } 15 | 16 | function renderWebs(list) { 17 | for (let l in list) { 18 | var a = document.createElement('a'); 19 | a.id = 'web'; 20 | a.href = list[l].web; 21 | a.target = '_blank'; 22 | a.innerHTML = list[l].name; 23 | a.title = list[l].brief; 24 | document.getElementById('webs-container').appendChild(a); 25 | } 26 | } 27 | 28 | function renderTags(tags) { 29 | document.getElementById('tags-container').innerHTML = ''; // 清空旧标签以重新渲染 30 | tags.forEach((tag, index) => { 31 | var button = document.createElement('button'); 32 | button.id = 'tag' + index; 33 | button.innerHTML = tag; 34 | // 设置按钮的类名基于是否被选中 35 | button.className = onlist.includes(tag) ? 'tag on' : 'tag off'; 36 | document.getElementById('tags-container').appendChild(button); 37 | button.onclick = () => toggleTagButton(button.id); 38 | }); 39 | } 40 | 41 | function toggleTagButton(buttonId) { 42 | var button = document.getElementById(buttonId); 43 | var tagText = button.textContent; 44 | var tagIndex = onlist.indexOf(tagText); 45 | 46 | if (tagIndex === -1) { 47 | onlist.push(tagText); // 添加到选中列表 48 | } else { 49 | onlist.splice(tagIndex, 1); // 从选中列表移除 50 | } 51 | 52 | button.className = button.className === 'tag off' ? 'tag on' : 'tag off'; 53 | updateResults(); // 更新结果和标签列表 54 | } 55 | 56 | function updateResults() { 57 | reslist = sources.filter(source => onlist.every(tag => source.tags.includes(tag))); 58 | document.getElementById('webs-container').innerHTML = reslist.length > 0 ? '' : '未找到符合条件的网页'; 59 | renderWebs(randomSort(unique(reslist))); 60 | 61 | // 更新标签列表,将选中的标签放在前面 62 | let availableTags = []; 63 | reslist.forEach(source => { 64 | source.tags.forEach(tag => { 65 | if (!availableTags.includes(tag)) { 66 | availableTags.push(tag); 67 | } 68 | }); 69 | }); 70 | 71 | onlist.forEach(tag => { 72 | const index = availableTags.indexOf(tag); 73 | if (index > -1) { 74 | availableTags.splice(index, 1); 75 | } 76 | }); 77 | 78 | const sortedTags = onlist.concat(availableTags.filter(tag => !onlist.includes(tag))); 79 | renderTags(sortedTags); 80 | } 81 | 82 | function searchFunction() { 83 | var keyword = document.getElementById('s-in').value.toLowerCase(); 84 | reslist = sources.filter(source => 85 | source.name.toLowerCase().includes(keyword) || 86 | source.brief.toLowerCase().includes(keyword) || 87 | source.tags.some(tag => tag.toLowerCase().includes(keyword)) 88 | ); 89 | document.getElementById('webs-container').innerHTML = reslist.length > 0 ? '' : '未找到符合条件的网页'; 90 | renderWebs(randomSort(unique(reslist))); 91 | } 92 | 93 | function extractAndRenderTags(sources) { 94 | let taglist = []; 95 | sources.forEach(source => { 96 | source.tags.forEach(tag => { 97 | if (!taglist.includes(tag)) { 98 | taglist.push(tag); 99 | } 100 | }); 101 | }); 102 | taglist = randomSort(unique(taglist)); // 随机排序并去重标签列表 103 | renderTags(taglist); // 渲染标签列表 104 | } 105 | 106 | fetch("/assets/data.json") // 从服务器上获取数据 107 | .then(response => response.json()) 108 | .then(data => { 109 | sources = data; // 存储数据源 110 | renderWebs(randomSort(unique(sources))); // 初始渲染网页列表 111 | extractAndRenderTags(sources); // 使用封装后的函数处理和渲染标签 112 | document.getElementById('s-btn').onclick = searchFunction; // 绑定搜索按钮的点击事件 113 | document.addEventListener('keydown', event => { 114 | if (event.keyCode === 13) { 115 | document.getElementById('s-btn').click(); 116 | } 117 | }); 118 | }); 119 | } 120 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU AFFERO GENERAL PUBLIC LICENSE 2 | Version 3, 19 November 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU Affero General Public License is a free, copyleft license for 11 | software and other kinds of works, specifically designed to ensure 12 | cooperation with the community in the case of network server software. 13 | 14 | The licenses for most software and other practical works are designed 15 | to take away your freedom to share and change the works. By contrast, 16 | our General Public Licenses are intended to guarantee your freedom to 17 | share and change all versions of a program--to make sure it remains free 18 | software for all its users. 19 | 20 | When we speak of free software, we are referring to freedom, not 21 | price. Our General Public Licenses are designed to make sure that you 22 | have the freedom to distribute copies of free software (and charge for 23 | them if you wish), that you receive source code or can get it if you 24 | want it, that you can change the software or use pieces of it in new 25 | free programs, and that you know you can do these things. 26 | 27 | Developers that use our General Public Licenses protect your rights 28 | with two steps: (1) assert copyright on the software, and (2) offer 29 | you this License which gives you legal permission to copy, distribute 30 | and/or modify the software. 31 | 32 | A secondary benefit of defending all users' freedom is that 33 | improvements made in alternate versions of the program, if they 34 | receive widespread use, become available for other developers to 35 | incorporate. Many developers of free software are heartened and 36 | encouraged by the resulting cooperation. However, in the case of 37 | software used on network servers, this result may fail to come about. 38 | The GNU General Public License permits making a modified version and 39 | letting the public access it on a server without ever releasing its 40 | source code to the public. 41 | 42 | The GNU Affero General Public License is designed specifically to 43 | ensure that, in such cases, the modified source code becomes available 44 | to the community. It requires the operator of a network server to 45 | provide the source code of the modified version running there to the 46 | users of that server. Therefore, public use of a modified version, on 47 | a publicly accessible server, gives the public access to the source 48 | code of the modified version. 49 | 50 | An older license, called the Affero General Public License and 51 | published by Affero, was designed to accomplish similar goals. This is 52 | a different license, not a version of the Affero GPL, but Affero has 53 | released a new version of the Affero GPL which permits relicensing under 54 | this license. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | TERMS AND CONDITIONS 60 | 61 | 0. Definitions. 62 | 63 | "This License" refers to version 3 of the GNU Affero General Public License. 64 | 65 | "Copyright" also means copyright-like laws that apply to other kinds of 66 | works, such as semiconductor masks. 67 | 68 | "The Program" refers to any copyrightable work licensed under this 69 | License. Each licensee is addressed as "you". "Licensees" and 70 | "recipients" may be individuals or organizations. 71 | 72 | To "modify" a work means to copy from or adapt all or part of the work 73 | in a fashion requiring copyright permission, other than the making of an 74 | exact copy. The resulting work is called a "modified version" of the 75 | earlier work or a work "based on" the earlier work. 76 | 77 | A "covered work" means either the unmodified Program or a work based 78 | on the Program. 79 | 80 | To "propagate" a work means to do anything with it that, without 81 | permission, would make you directly or secondarily liable for 82 | infringement under applicable copyright law, except executing it on a 83 | computer or modifying a private copy. Propagation includes copying, 84 | distribution (with or without modification), making available to the 85 | public, and in some countries other activities as well. 86 | 87 | To "convey" a work means any kind of propagation that enables other 88 | parties to make or receive copies. Mere interaction with a user through 89 | a computer network, with no transfer of a copy, is not conveying. 90 | 91 | An interactive user interface displays "Appropriate Legal Notices" 92 | to the extent that it includes a convenient and prominently visible 93 | feature that (1) displays an appropriate copyright notice, and (2) 94 | tells the user that there is no warranty for the work (except to the 95 | extent that warranties are provided), that licensees may convey the 96 | work under this License, and how to view a copy of this License. If 97 | the interface presents a list of user commands or options, such as a 98 | menu, a prominent item in the list meets this criterion. 99 | 100 | 1. Source Code. 101 | 102 | The "source code" for a work means the preferred form of the work 103 | for making modifications to it. "Object code" means any non-source 104 | form of a work. 105 | 106 | A "Standard Interface" means an interface that either is an official 107 | standard defined by a recognized standards body, or, in the case of 108 | interfaces specified for a particular programming language, one that 109 | is widely used among developers working in that language. 110 | 111 | The "System Libraries" of an executable work include anything, other 112 | than the work as a whole, that (a) is included in the normal form of 113 | packaging a Major Component, but which is not part of that Major 114 | Component, and (b) serves only to enable use of the work with that 115 | Major Component, or to implement a Standard Interface for which an 116 | implementation is available to the public in source code form. A 117 | "Major Component", in this context, means a major essential component 118 | (kernel, window system, and so on) of the specific operating system 119 | (if any) on which the executable work runs, or a compiler used to 120 | produce the work, or an object code interpreter used to run it. 121 | 122 | The "Corresponding Source" for a work in object code form means all 123 | the source code needed to generate, install, and (for an executable 124 | work) run the object code and to modify the work, including scripts to 125 | control those activities. However, it does not include the work's 126 | System Libraries, or general-purpose tools or generally available free 127 | programs which are used unmodified in performing those activities but 128 | which are not part of the work. For example, Corresponding Source 129 | includes interface definition files associated with source files for 130 | the work, and the source code for shared libraries and dynamically 131 | linked subprograms that the work is specifically designed to require, 132 | such as by intimate data communication or control flow between those 133 | subprograms and other parts of the work. 134 | 135 | The Corresponding Source need not include anything that users 136 | can regenerate automatically from other parts of the Corresponding 137 | Source. 138 | 139 | The Corresponding Source for a work in source code form is that 140 | same work. 141 | 142 | 2. Basic Permissions. 143 | 144 | All rights granted under this License are granted for the term of 145 | copyright on the Program, and are irrevocable provided the stated 146 | conditions are met. This License explicitly affirms your unlimited 147 | permission to run the unmodified Program. The output from running a 148 | covered work is covered by this License only if the output, given its 149 | content, constitutes a covered work. This License acknowledges your 150 | rights of fair use or other equivalent, as provided by copyright law. 151 | 152 | You may make, run and propagate covered works that you do not 153 | convey, without conditions so long as your license otherwise remains 154 | in force. You may convey covered works to others for the sole purpose 155 | of having them make modifications exclusively for you, or provide you 156 | with facilities for running those works, provided that you comply with 157 | the terms of this License in conveying all material for which you do 158 | not control copyright. Those thus making or running the covered works 159 | for you must do so exclusively on your behalf, under your direction 160 | and control, on terms that prohibit them from making any copies of 161 | your copyrighted material outside their relationship with you. 162 | 163 | Conveying under any other circumstances is permitted solely under 164 | the conditions stated below. Sublicensing is not allowed; section 10 165 | makes it unnecessary. 166 | 167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 168 | 169 | No covered work shall be deemed part of an effective technological 170 | measure under any applicable law fulfilling obligations under article 171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 172 | similar laws prohibiting or restricting circumvention of such 173 | measures. 174 | 175 | When you convey a covered work, you waive any legal power to forbid 176 | circumvention of technological measures to the extent such circumvention 177 | is effected by exercising rights under this License with respect to 178 | the covered work, and you disclaim any intention to limit operation or 179 | modification of the work as a means of enforcing, against the work's 180 | users, your or third parties' legal rights to forbid circumvention of 181 | technological measures. 182 | 183 | 4. Conveying Verbatim Copies. 184 | 185 | You may convey verbatim copies of the Program's source code as you 186 | receive it, in any medium, provided that you conspicuously and 187 | appropriately publish on each copy an appropriate copyright notice; 188 | keep intact all notices stating that this License and any 189 | non-permissive terms added in accord with section 7 apply to the code; 190 | keep intact all notices of the absence of any warranty; and give all 191 | recipients a copy of this License along with the Program. 192 | 193 | You may charge any price or no price for each copy that you convey, 194 | and you may offer support or warranty protection for a fee. 195 | 196 | 5. Conveying Modified Source Versions. 197 | 198 | You may convey a work based on the Program, or the modifications to 199 | produce it from the Program, in the form of source code under the 200 | terms of section 4, provided that you also meet all of these conditions: 201 | 202 | a) The work must carry prominent notices stating that you modified 203 | it, and giving a relevant date. 204 | 205 | b) The work must carry prominent notices stating that it is 206 | released under this License and any conditions added under section 207 | 7. This requirement modifies the requirement in section 4 to 208 | "keep intact all notices". 209 | 210 | c) You must license the entire work, as a whole, under this 211 | License to anyone who comes into possession of a copy. This 212 | License will therefore apply, along with any applicable section 7 213 | additional terms, to the whole of the work, and all its parts, 214 | regardless of how they are packaged. This License gives no 215 | permission to license the work in any other way, but it does not 216 | invalidate such permission if you have separately received it. 217 | 218 | d) If the work has interactive user interfaces, each must display 219 | Appropriate Legal Notices; however, if the Program has interactive 220 | interfaces that do not display Appropriate Legal Notices, your 221 | work need not make them do so. 222 | 223 | A compilation of a covered work with other separate and independent 224 | works, which are not by their nature extensions of the covered work, 225 | and which are not combined with it such as to form a larger program, 226 | in or on a volume of a storage or distribution medium, is called an 227 | "aggregate" if the compilation and its resulting copyright are not 228 | used to limit the access or legal rights of the compilation's users 229 | beyond what the individual works permit. Inclusion of a covered work 230 | in an aggregate does not cause this License to apply to the other 231 | parts of the aggregate. 232 | 233 | 6. Conveying Non-Source Forms. 234 | 235 | You may convey a covered work in object code form under the terms 236 | of sections 4 and 5, provided that you also convey the 237 | machine-readable Corresponding Source under the terms of this License, 238 | in one of these ways: 239 | 240 | a) Convey the object code in, or embodied in, a physical product 241 | (including a physical distribution medium), accompanied by the 242 | Corresponding Source fixed on a durable physical medium 243 | customarily used for software interchange. 244 | 245 | b) Convey the object code in, or embodied in, a physical product 246 | (including a physical distribution medium), accompanied by a 247 | written offer, valid for at least three years and valid for as 248 | long as you offer spare parts or customer support for that product 249 | model, to give anyone who possesses the object code either (1) a 250 | copy of the Corresponding Source for all the software in the 251 | product that is covered by this License, on a durable physical 252 | medium customarily used for software interchange, for a price no 253 | more than your reasonable cost of physically performing this 254 | conveying of source, or (2) access to copy the 255 | Corresponding Source from a network server at no charge. 256 | 257 | c) Convey individual copies of the object code with a copy of the 258 | written offer to provide the Corresponding Source. This 259 | alternative is allowed only occasionally and noncommercially, and 260 | only if you received the object code with such an offer, in accord 261 | with subsection 6b. 262 | 263 | d) Convey the object code by offering access from a designated 264 | place (gratis or for a charge), and offer equivalent access to the 265 | Corresponding Source in the same way through the same place at no 266 | further charge. You need not require recipients to copy the 267 | Corresponding Source along with the object code. If the place to 268 | copy the object code is a network server, the Corresponding Source 269 | may be on a different server (operated by you or a third party) 270 | that supports equivalent copying facilities, provided you maintain 271 | clear directions next to the object code saying where to find the 272 | Corresponding Source. Regardless of what server hosts the 273 | Corresponding Source, you remain obligated to ensure that it is 274 | available for as long as needed to satisfy these requirements. 275 | 276 | e) Convey the object code using peer-to-peer transmission, provided 277 | you inform other peers where the object code and Corresponding 278 | Source of the work are being offered to the general public at no 279 | charge under subsection 6d. 280 | 281 | A separable portion of the object code, whose source code is excluded 282 | from the Corresponding Source as a System Library, need not be 283 | included in conveying the object code work. 284 | 285 | A "User Product" is either (1) a "consumer product", which means any 286 | tangible personal property which is normally used for personal, family, 287 | or household purposes, or (2) anything designed or sold for incorporation 288 | into a dwelling. In determining whether a product is a consumer product, 289 | doubtful cases shall be resolved in favor of coverage. For a particular 290 | product received by a particular user, "normally used" refers to a 291 | typical or common use of that class of product, regardless of the status 292 | of the particular user or of the way in which the particular user 293 | actually uses, or expects or is expected to use, the product. A product 294 | is a consumer product regardless of whether the product has substantial 295 | commercial, industrial or non-consumer uses, unless such uses represent 296 | the only significant mode of use of the product. 297 | 298 | "Installation Information" for a User Product means any methods, 299 | procedures, authorization keys, or other information required to install 300 | and execute modified versions of a covered work in that User Product from 301 | a modified version of its Corresponding Source. The information must 302 | suffice to ensure that the continued functioning of the modified object 303 | code is in no case prevented or interfered with solely because 304 | modification has been made. 305 | 306 | If you convey an object code work under this section in, or with, or 307 | specifically for use in, a User Product, and the conveying occurs as 308 | part of a transaction in which the right of possession and use of the 309 | User Product is transferred to the recipient in perpetuity or for a 310 | fixed term (regardless of how the transaction is characterized), the 311 | Corresponding Source conveyed under this section must be accompanied 312 | by the Installation Information. But this requirement does not apply 313 | if neither you nor any third party retains the ability to install 314 | modified object code on the User Product (for example, the work has 315 | been installed in ROM). 316 | 317 | The requirement to provide Installation Information does not include a 318 | requirement to continue to provide support service, warranty, or updates 319 | for a work that has been modified or installed by the recipient, or for 320 | the User Product in which it has been modified or installed. Access to a 321 | network may be denied when the modification itself materially and 322 | adversely affects the operation of the network or violates the rules and 323 | protocols for communication across the network. 324 | 325 | Corresponding Source conveyed, and Installation Information provided, 326 | in accord with this section must be in a format that is publicly 327 | documented (and with an implementation available to the public in 328 | source code form), and must require no special password or key for 329 | unpacking, reading or copying. 330 | 331 | 7. Additional Terms. 332 | 333 | "Additional permissions" are terms that supplement the terms of this 334 | License by making exceptions from one or more of its conditions. 335 | Additional permissions that are applicable to the entire Program shall 336 | be treated as though they were included in this License, to the extent 337 | that they are valid under applicable law. If additional permissions 338 | apply only to part of the Program, that part may be used separately 339 | under those permissions, but the entire Program remains governed by 340 | this License without regard to the additional permissions. 341 | 342 | When you convey a copy of a covered work, you may at your option 343 | remove any additional permissions from that copy, or from any part of 344 | it. (Additional permissions may be written to require their own 345 | removal in certain cases when you modify the work.) You may place 346 | additional permissions on material, added by you to a covered work, 347 | for which you have or can give appropriate copyright permission. 348 | 349 | Notwithstanding any other provision of this License, for material you 350 | add to a covered work, you may (if authorized by the copyright holders of 351 | that material) supplement the terms of this License with terms: 352 | 353 | a) Disclaiming warranty or limiting liability differently from the 354 | terms of sections 15 and 16 of this License; or 355 | 356 | b) Requiring preservation of specified reasonable legal notices or 357 | author attributions in that material or in the Appropriate Legal 358 | Notices displayed by works containing it; or 359 | 360 | c) Prohibiting misrepresentation of the origin of that material, or 361 | requiring that modified versions of such material be marked in 362 | reasonable ways as different from the original version; or 363 | 364 | d) Limiting the use for publicity purposes of names of licensors or 365 | authors of the material; or 366 | 367 | e) Declining to grant rights under trademark law for use of some 368 | trade names, trademarks, or service marks; or 369 | 370 | f) Requiring indemnification of licensors and authors of that 371 | material by anyone who conveys the material (or modified versions of 372 | it) with contractual assumptions of liability to the recipient, for 373 | any liability that these contractual assumptions directly impose on 374 | those licensors and authors. 375 | 376 | All other non-permissive additional terms are considered "further 377 | restrictions" within the meaning of section 10. If the Program as you 378 | received it, or any part of it, contains a notice stating that it is 379 | governed by this License along with a term that is a further 380 | restriction, you may remove that term. If a license document contains 381 | a further restriction but permits relicensing or conveying under this 382 | License, you may add to a covered work material governed by the terms 383 | of that license document, provided that the further restriction does 384 | not survive such relicensing or conveying. 385 | 386 | If you add terms to a covered work in accord with this section, you 387 | must place, in the relevant source files, a statement of the 388 | additional terms that apply to those files, or a notice indicating 389 | where to find the applicable terms. 390 | 391 | Additional terms, permissive or non-permissive, may be stated in the 392 | form of a separately written license, or stated as exceptions; 393 | the above requirements apply either way. 394 | 395 | 8. Termination. 396 | 397 | You may not propagate or modify a covered work except as expressly 398 | provided under this License. Any attempt otherwise to propagate or 399 | modify it is void, and will automatically terminate your rights under 400 | this License (including any patent licenses granted under the third 401 | paragraph of section 11). 402 | 403 | However, if you cease all violation of this License, then your 404 | license from a particular copyright holder is reinstated (a) 405 | provisionally, unless and until the copyright holder explicitly and 406 | finally terminates your license, and (b) permanently, if the copyright 407 | holder fails to notify you of the violation by some reasonable means 408 | prior to 60 days after the cessation. 409 | 410 | Moreover, your license from a particular copyright holder is 411 | reinstated permanently if the copyright holder notifies you of the 412 | violation by some reasonable means, this is the first time you have 413 | received notice of violation of this License (for any work) from that 414 | copyright holder, and you cure the violation prior to 30 days after 415 | your receipt of the notice. 416 | 417 | Termination of your rights under this section does not terminate the 418 | licenses of parties who have received copies or rights from you under 419 | this License. If your rights have been terminated and not permanently 420 | reinstated, you do not qualify to receive new licenses for the same 421 | material under section 10. 422 | 423 | 9. Acceptance Not Required for Having Copies. 424 | 425 | You are not required to accept this License in order to receive or 426 | run a copy of the Program. Ancillary propagation of a covered work 427 | occurring solely as a consequence of using peer-to-peer transmission 428 | to receive a copy likewise does not require acceptance. However, 429 | nothing other than this License grants you permission to propagate or 430 | modify any covered work. These actions infringe copyright if you do 431 | not accept this License. Therefore, by modifying or propagating a 432 | covered work, you indicate your acceptance of this License to do so. 433 | 434 | 10. Automatic Licensing of Downstream Recipients. 435 | 436 | Each time you convey a covered work, the recipient automatically 437 | receives a license from the original licensors, to run, modify and 438 | propagate that work, subject to this License. You are not responsible 439 | for enforcing compliance by third parties with this License. 440 | 441 | An "entity transaction" is a transaction transferring control of an 442 | organization, or substantially all assets of one, or subdividing an 443 | organization, or merging organizations. If propagation of a covered 444 | work results from an entity transaction, each party to that 445 | transaction who receives a copy of the work also receives whatever 446 | licenses to the work the party's predecessor in interest had or could 447 | give under the previous paragraph, plus a right to possession of the 448 | Corresponding Source of the work from the predecessor in interest, if 449 | the predecessor has it or can get it with reasonable efforts. 450 | 451 | You may not impose any further restrictions on the exercise of the 452 | rights granted or affirmed under this License. For example, you may 453 | not impose a license fee, royalty, or other charge for exercise of 454 | rights granted under this License, and you may not initiate litigation 455 | (including a cross-claim or counterclaim in a lawsuit) alleging that 456 | any patent claim is infringed by making, using, selling, offering for 457 | sale, or importing the Program or any portion of it. 458 | 459 | 11. Patents. 460 | 461 | A "contributor" is a copyright holder who authorizes use under this 462 | License of the Program or a work on which the Program is based. The 463 | work thus licensed is called the contributor's "contributor version". 464 | 465 | A contributor's "essential patent claims" are all patent claims 466 | owned or controlled by the contributor, whether already acquired or 467 | hereafter acquired, that would be infringed by some manner, permitted 468 | by this License, of making, using, or selling its contributor version, 469 | but do not include claims that would be infringed only as a 470 | consequence of further modification of the contributor version. For 471 | purposes of this definition, "control" includes the right to grant 472 | patent sublicenses in a manner consistent with the requirements of 473 | this License. 474 | 475 | Each contributor grants you a non-exclusive, worldwide, royalty-free 476 | patent license under the contributor's essential patent claims, to 477 | make, use, sell, offer for sale, import and otherwise run, modify and 478 | propagate the contents of its contributor version. 479 | 480 | In the following three paragraphs, a "patent license" is any express 481 | agreement or commitment, however denominated, not to enforce a patent 482 | (such as an express permission to practice a patent or covenant not to 483 | sue for patent infringement). To "grant" such a patent license to a 484 | party means to make such an agreement or commitment not to enforce a 485 | patent against the party. 486 | 487 | If you convey a covered work, knowingly relying on a patent license, 488 | and the Corresponding Source of the work is not available for anyone 489 | to copy, free of charge and under the terms of this License, through a 490 | publicly available network server or other readily accessible means, 491 | then you must either (1) cause the Corresponding Source to be so 492 | available, or (2) arrange to deprive yourself of the benefit of the 493 | patent license for this particular work, or (3) arrange, in a manner 494 | consistent with the requirements of this License, to extend the patent 495 | license to downstream recipients. "Knowingly relying" means you have 496 | actual knowledge that, but for the patent license, your conveying the 497 | covered work in a country, or your recipient's use of the covered work 498 | in a country, would infringe one or more identifiable patents in that 499 | country that you have reason to believe are valid. 500 | 501 | If, pursuant to or in connection with a single transaction or 502 | arrangement, you convey, or propagate by procuring conveyance of, a 503 | covered work, and grant a patent license to some of the parties 504 | receiving the covered work authorizing them to use, propagate, modify 505 | or convey a specific copy of the covered work, then the patent license 506 | you grant is automatically extended to all recipients of the covered 507 | work and works based on it. 508 | 509 | A patent license is "discriminatory" if it does not include within 510 | the scope of its coverage, prohibits the exercise of, or is 511 | conditioned on the non-exercise of one or more of the rights that are 512 | specifically granted under this License. You may not convey a covered 513 | work if you are a party to an arrangement with a third party that is 514 | in the business of distributing software, under which you make payment 515 | to the third party based on the extent of your activity of conveying 516 | the work, and under which the third party grants, to any of the 517 | parties who would receive the covered work from you, a discriminatory 518 | patent license (a) in connection with copies of the covered work 519 | conveyed by you (or copies made from those copies), or (b) primarily 520 | for and in connection with specific products or compilations that 521 | contain the covered work, unless you entered into that arrangement, 522 | or that patent license was granted, prior to 28 March 2007. 523 | 524 | Nothing in this License shall be construed as excluding or limiting 525 | any implied license or other defenses to infringement that may 526 | otherwise be available to you under applicable patent law. 527 | 528 | 12. No Surrender of Others' Freedom. 529 | 530 | If conditions are imposed on you (whether by court order, agreement or 531 | otherwise) that contradict the conditions of this License, they do not 532 | excuse you from the conditions of this License. If you cannot convey a 533 | covered work so as to satisfy simultaneously your obligations under this 534 | License and any other pertinent obligations, then as a consequence you may 535 | not convey it at all. For example, if you agree to terms that obligate you 536 | to collect a royalty for further conveying from those to whom you convey 537 | the Program, the only way you could satisfy both those terms and this 538 | License would be to refrain entirely from conveying the Program. 539 | 540 | 13. Remote Network Interaction; Use with the GNU General Public License. 541 | 542 | Notwithstanding any other provision of this License, if you modify the 543 | Program, your modified version must prominently offer all users 544 | interacting with it remotely through a computer network (if your version 545 | supports such interaction) an opportunity to receive the Corresponding 546 | Source of your version by providing access to the Corresponding Source 547 | from a network server at no charge, through some standard or customary 548 | means of facilitating copying of software. This Corresponding Source 549 | shall include the Corresponding Source for any work covered by version 3 550 | of the GNU General Public License that is incorporated pursuant to the 551 | following paragraph. 552 | 553 | Notwithstanding any other provision of this License, you have 554 | permission to link or combine any covered work with a work licensed 555 | under version 3 of the GNU General Public License into a single 556 | combined work, and to convey the resulting work. The terms of this 557 | License will continue to apply to the part which is the covered work, 558 | but the work with which it is combined will remain governed by version 559 | 3 of the GNU General Public License. 560 | 561 | 14. Revised Versions of this License. 562 | 563 | The Free Software Foundation may publish revised and/or new versions of 564 | the GNU Affero General Public License from time to time. Such new versions 565 | will be similar in spirit to the present version, but may differ in detail to 566 | address new problems or concerns. 567 | 568 | Each version is given a distinguishing version number. If the 569 | Program specifies that a certain numbered version of the GNU Affero General 570 | Public License "or any later version" applies to it, you have the 571 | option of following the terms and conditions either of that numbered 572 | version or of any later version published by the Free Software 573 | Foundation. If the Program does not specify a version number of the 574 | GNU Affero General Public License, you may choose any version ever published 575 | by the Free Software Foundation. 576 | 577 | If the Program specifies that a proxy can decide which future 578 | versions of the GNU Affero General Public License can be used, that proxy's 579 | public statement of acceptance of a version permanently authorizes you 580 | to choose that version for the Program. 581 | 582 | Later license versions may give you additional or different 583 | permissions. However, no additional obligations are imposed on any 584 | author or copyright holder as a result of your choosing to follow a 585 | later version. 586 | 587 | 15. Disclaimer of Warranty. 588 | 589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 597 | 598 | 16. Limitation of Liability. 599 | 600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 608 | SUCH DAMAGES. 609 | 610 | 17. Interpretation of Sections 15 and 16. 611 | 612 | If the disclaimer of warranty and limitation of liability provided 613 | above cannot be given local legal effect according to their terms, 614 | reviewing courts shall apply local law that most closely approximates 615 | an absolute waiver of all civil liability in connection with the 616 | Program, unless a warranty or assumption of liability accompanies a 617 | copy of the Program in return for a fee. 618 | 619 | END OF TERMS AND CONDITIONS 620 | 621 | How to Apply These Terms to Your New Programs 622 | 623 | If you develop a new program, and you want it to be of the greatest 624 | possible use to the public, the best way to achieve this is to make it 625 | free software which everyone can redistribute and change under these terms. 626 | 627 | To do so, attach the following notices to the program. It is safest 628 | to attach them to the start of each source file to most effectively 629 | state the exclusion of warranty; and each file should have at least 630 | the "copyright" line and a pointer to where the full notice is found. 631 | 632 | 633 | Copyright (C) 634 | 635 | This program is free software: you can redistribute it and/or modify 636 | it under the terms of the GNU Affero General Public License as published 637 | by the Free Software Foundation, either version 3 of the License, or 638 | (at your option) any later version. 639 | 640 | This program is distributed in the hope that it will be useful, 641 | but WITHOUT ANY WARRANTY; without even the implied warranty of 642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 643 | GNU Affero General Public License for more details. 644 | 645 | You should have received a copy of the GNU Affero General Public License 646 | along with this program. If not, see . 647 | 648 | Also add information on how to contact you by electronic and paper mail. 649 | 650 | If your software can interact with users remotely through a computer 651 | network, you should also make sure that it provides a way for users to 652 | get its source. For example, if your program is a web application, its 653 | interface could display a "Source" link that leads users to an archive 654 | of the code. There are many ways you could offer source, and different 655 | solutions will be better for different programs; see section 13 for the 656 | specific requirements. 657 | 658 | You should also get your employer (if you work as a programmer) or school, 659 | if any, to sign a "copyright disclaimer" for the program, if necessary. 660 | For more information on this, and how to apply and follow the GNU AGPL, see 661 | . 662 | -------------------------------------------------------------------------------- /public/assets/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "羽享平台", 4 | "web": "http://yuzhuyi.ysepan.com/", 5 | "tags": [ 6 | "🧠学习", 7 | "📦资源", 8 | "🧰软件" 9 | ], 10 | "brief": "各种资源的网页", 11 | "state": "正常" 12 | }, 13 | { 14 | "name": "知到", 15 | "web": "https://www.zhihuishu.com/", 16 | "tags": [ 17 | "🧠学习" 18 | ], 19 | "brief": "网课平台", 20 | "state": "正常" 21 | }, 22 | { 23 | "name": "油管封面", 24 | "web": "https://www.strerr.com/index.html", 25 | "tags": [ 26 | "🔧工具", 27 | "🖼️图片" 28 | ], 29 | "brief": "提供油管封面预览和下载功能", 30 | "state": "正常" 31 | }, 32 | { 33 | "name": "京东", 34 | "web": "https://www.jd.com/", 35 | "tags": [ 36 | "🛒购物" 37 | ], 38 | "brief": "电商购物平台", 39 | "state": "正常" 40 | }, 41 | { 42 | "name": "Potplayer", 43 | "web": "https://potplayer.daum.net/", 44 | "tags": [ 45 | "🧰软件" 46 | ], 47 | "brief": "贼好用的win播放器", 48 | "state": "正常" 49 | }, 50 | { 51 | "name": "无尽道路", 52 | "web": "https://slowroads.io/", 53 | "tags": [ 54 | "⛹️‍♀️娱乐" 55 | ], 56 | "brief": "放松休闲、开车游戏", 57 | "state": "正常" 58 | }, 59 | { 60 | "name": "擦除画面", 61 | "web": "https://www.magiceraser.io/", 62 | "tags": [ 63 | "🖼️图片", 64 | "🔧工具" 65 | ], 66 | "brief": "可以去背景", 67 | "state": "正常" 68 | }, 69 | { 70 | "name": "HomeBrew", 71 | "web": "https://brew.sh/index_zh-cn", 72 | "tags": [ 73 | "🍎Apple", 74 | "🐱Code" 75 | ], 76 | "brief": "macOS(或 Linux)缺失的软件包的管理器", 77 | "state": "正常" 78 | }, 79 | { 80 | "name": "中文网字", 81 | "web": "https://chinese-font.netlify.app/", 82 | "tags": [ 83 | "📦资源", 84 | "🐱Code" 85 | ], 86 | "brief": "收集免费可商用的 Web 字体文件,字体分包工具", 87 | "state": "正常" 88 | }, 89 | { 90 | "name": "Unsplash", 91 | "web": "https://unsplash.com/", 92 | "tags": [ 93 | "🖼️图片", 94 | "📦资源" 95 | ], 96 | "brief": "互联网的视觉资源,由各地的创作者提供支持", 97 | "state": "正常" 98 | }, 99 | { 100 | "name": "花生壳", 101 | "web": "https://hsk.oray.com/", 102 | "tags": [ 103 | "☁️云" 104 | ], 105 | "brief": "提供内网穿透和动态域名解析服务,支持外网访问内网服务器", 106 | "state": "正常" 107 | }, 108 | { 109 | "name": "Kimi", 110 | "web": "https://kimi.moonshot.cn/", 111 | "tags": [ 112 | "🤖AI" 113 | ], 114 | "brief": "月之暗面ai", 115 | "state": "正常" 116 | }, 117 | { 118 | "name": "秘塔", 119 | "web": "https://metaso.cn/", 120 | "tags": [ 121 | "🤖AI", 122 | "🔍搜索" 123 | ], 124 | "brief": "没有广告,直达结果", 125 | "state": "正常" 126 | }, 127 | { 128 | "name": "牛客网", 129 | "web": "https://www.nowcoder.com/", 130 | "tags": [ 131 | "🐱Code", 132 | "🧠学习" 133 | ], 134 | "brief": "找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决", 135 | "state": "正常" 136 | }, 137 | { 138 | "name": "今日黄金", 139 | "web": "https://www.5huangjin.com/", 140 | "tags": [ 141 | "📈基金" 142 | ], 143 | "brief": "查看黄金价格走向", 144 | "state": "正常" 145 | }, 146 | { 147 | "name": "Reddit", 148 | "web": "https://www.reddit.com/", 149 | "tags": [ 150 | "👁️‍🗨️媒体" 151 | ], 152 | "brief": "国外小红书", 153 | "state": "正常" 154 | }, 155 | { 156 | "name": "模拟扫描", 157 | "web": "https://lookscanned.io/", 158 | "tags": [ 159 | "🔧工具" 160 | ], 161 | "brief": "把pdf模拟出扫描的效果", 162 | "state": "正常" 163 | }, 164 | { 165 | "name": "通义千问", 166 | "web": "https://tongyi.aliyun.com/qianwen/", 167 | "tags": [ 168 | "🤖AI" 169 | ], 170 | "brief": "阿里做的大语言模型助手", 171 | "state": "正常" 172 | }, 173 | { 174 | "name": "Ssgo", 175 | "web": "https://ssgo.app/", 176 | "tags": [ 177 | "🔍搜索", 178 | "📦资源" 179 | ], 180 | "brief": "阿里云盘搜索引擎", 181 | "state": "正常" 182 | }, 183 | { 184 | "name": "飞牛", 185 | "web": "https://www.fnnas.com/", 186 | "tags": [ 187 | "📁文件", 188 | "🏠主页" 189 | ], 190 | "brief": "一个基于debian的nas系统", 191 | "state": "正常" 192 | }, 193 | { 194 | "name": "shortcut", 195 | "web": "https://sspai.com/page/playbook/zh-CN", 196 | "tags": [ 197 | "🍎Apple" 198 | ], 199 | "brief": "ssp的快捷指令导航站", 200 | "state": "正常" 201 | }, 202 | { 203 | "name": "Mac清理", 204 | "web": "https://www.prettyclean.cc/zh", 205 | "tags": [ 206 | "🍎Apple", 207 | "🧰软件" 208 | ], 209 | "brief": "好用的 macOS 磁盘清理工具 免费下载", 210 | "state": "正常" 211 | }, 212 | { 213 | "name": "x2webp", 214 | "web": "https://xtoimage.com/", 215 | "tags": [ 216 | "🔧工具" 217 | ], 218 | "brief": "立即将 X 帖子转换为高质量的可共享图像", 219 | "state": "正常" 220 | }, 221 | { 222 | "name": "spaceship", 223 | "web": "https://www.spaceship.com/zh/", 224 | "tags": [ 225 | "☁️云" 226 | ], 227 | "brief": "购买域名的网站", 228 | "state": "正常" 229 | }, 230 | { 231 | "name": "Switch520", 232 | "web": "https://www.gamer520.com/", 233 | "tags": [ 234 | "📦资源", 235 | "🕹️游戏" 236 | ], 237 | "brief": "switch游戏下载,PC游戏下载,switch破解游戏下载,PC破解游戏下载,Switch520,xxxxx520", 238 | "state": "正常" 239 | }, 240 | { 241 | "name": "RoutineHub", 242 | "web": "https://routinehub.co/", 243 | "tags": [ 244 | "🍎Apple" 245 | ], 246 | "brief": "发现、共享和版本控制 Apple 快捷指令", 247 | "state": "正常" 248 | }, 249 | { 250 | "name": "Switch618", 251 | "web": "https://www.switch618.com/", 252 | "tags": [ 253 | "🕹️游戏", 254 | "📦资源" 255 | ], 256 | "brief": "Switch618|免费Switch游戏PC游戏下载 - SWITCH618游戏公益分享", 257 | "state": "正常" 258 | }, 259 | { 260 | "name": "小报童", 261 | "web": "https://xiaobot.net/home.html", 262 | "tags": [ 263 | "🏠主页", 264 | "👁️‍🗨️媒体" 265 | ], 266 | "brief": "付费专栏,体面而用心地创作", 267 | "state": "正常" 268 | }, 269 | { 270 | "name": "Devv ai", 271 | "web": "https://devv.ai/zh", 272 | "tags": [ 273 | "🤖AI", 274 | "🔍搜索", 275 | "🐱Code" 276 | ], 277 | "brief": "一款专为程序员朋友设计的人工智能搜索引擎", 278 | "state": "正常" 279 | }, 280 | { 281 | "name": "Text2Card", 282 | "web": "https://card.pomodiary.com/", 283 | "tags": [ 284 | "🔧工具", 285 | "🖼️图片" 286 | ], 287 | "brief": "最简单的卡片制作工具,可记录您的想法和引言”", 288 | "state": "正常" 289 | }, 290 | { 291 | "name": "RetroCard", 292 | "web": "https://retro.iwhy.dev/", 293 | "tags": [ 294 | "🖼️图片", 295 | "🔧工具" 296 | ], 297 | "brief": "文字卡片制作工具", 298 | "state": "正常" 299 | }, 300 | { 301 | "name": "识典古籍", 302 | "web": "https://www.shidianguji.com/", 303 | "tags": [ 304 | "🧠学习", 305 | "📦资源" 306 | ], 307 | "brief": "北大和字节开发一个古籍在线阅读平台", 308 | "state": "正常" 309 | }, 310 | { 311 | "name": "Canva", 312 | "web": "https://www.canva.cn", 313 | "tags": [ 314 | "✒️设计" 315 | ], 316 | "brief": "轻松创建并分享专业设计。", 317 | "state": "正常" 318 | }, 319 | { 320 | "name": "Caj2PDF", 321 | "web": "https://caj2pdf.cn/", 322 | "tags": [ 323 | "⚙️转换", 324 | "🧠学习" 325 | ], 326 | "brief": "学术必备!!!", 327 | "state": "正常" 328 | }, 329 | { 330 | "name": "GitHub卡片", 331 | "web": "https://github.cards/", 332 | "tags": [ 333 | "🖼️图片", 334 | "🐱Code" 335 | ], 336 | "brief": "创造个人GitHub卡片", 337 | "state": "正常" 338 | }, 339 | { 340 | "name": "PostSpark", 341 | "web": "https://postspark.app/", 342 | "tags": [ 343 | "🔧工具", 344 | "🖼️图片", 345 | "🐱Code" 346 | ], 347 | "brief": "截图工具、推特、github贡献、代码", 348 | "state": "正常" 349 | }, 350 | { 351 | "name": "符号", 352 | "web": "https://symbl.cc/", 353 | "tags": [ 354 | "🔧工具", 355 | "📦资源" 356 | ], 357 | "brief": "Unicode 字符百科", 358 | "state": "正常" 359 | }, 360 | { 361 | "name": "仓库分享", 362 | "web": "https://socialify.git.ci/", 363 | "tags": [ 364 | "🖼️图片", 365 | "🐱Code" 366 | ], 367 | "brief": "生成 github 仓库分享图", 368 | "state": "正常" 369 | }, 370 | { 371 | "name": "DeepSeek", 372 | "web": "https://chat.deepseek.com/", 373 | "tags": [ 374 | "🤖AI" 375 | ], 376 | "brief": "国产 ai", 377 | "state": "正常" 378 | }, 379 | { 380 | "name": "力扣", 381 | "web": "https://leetcode.cn/", 382 | "tags": [ 383 | "🐱Code", 384 | "🧠学习" 385 | ], 386 | "brief": "题库", 387 | "state": "正常" 388 | }, 389 | { 390 | "name": "flowith", 391 | "web": "https://flowith.io/blank", 392 | "tags": [ 393 | "🤖AI", 394 | "🧠学习" 395 | ], 396 | "brief": "ai for work", 397 | "state": "正常" 398 | }, 399 | { 400 | "name": "Vercel", 401 | "web": "https://vercel.com/", 402 | "tags": [ 403 | "🐱Code", 404 | "☁️云" 405 | ], 406 | "brief": "搭建网站", 407 | "state": "正常" 408 | }, 409 | { 410 | "name": "Qwen", 411 | "web": "https://chat.qwen.ai/", 412 | "tags": [ 413 | "🤖AI" 414 | ], 415 | "brief": "Qwen2.5max", 416 | "state": "正常" 417 | }, 418 | { 419 | "name": "腾讯元宝", 420 | "web": "https://yuanbao.tencent.com/chat/", 421 | "tags": [ 422 | "🤖AI" 423 | ], 424 | "brief": "接入了 deepseek 支持图片识别", 425 | "state": "正常" 426 | }, 427 | { 428 | "name": "Geek", 429 | "web": "https://geekuninstaller.com/", 430 | "tags": [ 431 | "🏠主页" 432 | ], 433 | "brief": "卸载工具的官网", 434 | "state": "正常" 435 | }, 436 | { 437 | "name": "任务清单", 438 | "web": "https://habitica.com/", 439 | "tags": [ 440 | "✅效率" 441 | ], 442 | "brief": "用闯关的方式完成任务", 443 | "state": "正常" 444 | }, 445 | { 446 | "name": "国家统计局", 447 | "web": "http://www.stats.gov.cn/", 448 | "tags": [ 449 | "🔢数据" 450 | ], 451 | "brief": "中国统计信息网", 452 | "state": "正常" 453 | }, 454 | { 455 | "name": "幕布", 456 | "web": "https://mubu.com/home", 457 | "tags": [ 458 | "🧠学习" 459 | ], 460 | "brief": "思维导图网站", 461 | "state": "正常" 462 | }, 463 | { 464 | "name": "墨滴", 465 | "web": "https://mdnice.com/", 466 | "tags": [ 467 | "📒笔记", 468 | "⚙️转换" 469 | ], 470 | "brief": "墨滴社区是一个看颜值的文章社区,技术、数学、文学文章汇集,极具趣味性,其开发的 mdnice 编辑器是一款 Markdown 微信编辑器。", 471 | "state": "正常" 472 | }, 473 | { 474 | "name": "派欧算力云", 475 | "web": "https://ppio.cn/", 476 | "tags": [ 477 | "🤖AI", 478 | "🔧工具", 479 | "☁️云" 480 | ], 481 | "brief": "派欧算力云一站式AIGC云服务平台,提供高性能、高性价比的大模型API和GPU算力服务,无缝集成最前沿的AI推理技术,全面覆盖不同业务阶段的AI需求,加速AI业务发展。", 482 | "state": "正常" 483 | }, 484 | { 485 | "name": "问小白", 486 | "web": "https://www.wenxiaobai.com/chat", 487 | "tags": [ 488 | "🤖AI" 489 | ], 490 | "brief": "deepseek供应商", 491 | "state": "正常" 492 | }, 493 | { 494 | "name": "唧唧down", 495 | "web": "http://client.jijidown.com/", 496 | "tags": [ 497 | "🔧工具", 498 | "📺视频", 499 | "📦资源" 500 | ], 501 | "brief": "这是一个用于下载 bilibili 视频的PC应用程序", 502 | "state": "正常" 503 | }, 504 | { 505 | "name": "隔离食用", 506 | "web": "https://cook.yunyoujun.cn/", 507 | "tags": [ 508 | "🔹其他" 509 | ], 510 | "brief": "多种多样的菜谱任你选择", 511 | "state": "正常" 512 | }, 513 | { 514 | "name": "Notion风格", 515 | "web": "https://illustration.imglab.dev", 516 | "tags": [ 517 | "🖼️图片", 518 | "🔧工具" 519 | ], 520 | "brief": "一个Notion风格插画生成网站", 521 | "state": "正常" 522 | }, 523 | { 524 | "name": "Coze", 525 | "web": "https://www.coze.com/", 526 | "tags": [ 527 | "🤖AI" 528 | ], 529 | "brief": "一站式 AI Bot 开发平台(En)", 530 | "state": "正常" 531 | }, 532 | { 533 | "name": "Jobs纪念馆", 534 | "web": "https://stevejobsarchive.com/", 535 | "tags": [ 536 | "🍎Apple", 537 | "🔹其他" 538 | ], 539 | "brief": "乔布斯纪念网站", 540 | "state": "正常" 541 | }, 542 | { 543 | "name": "密码测试", 544 | "web": "https://www.passwordmonster.com/", 545 | "tags": [ 546 | "🔧工具", 547 | "⛹️‍♀️娱乐" 548 | ], 549 | "brief": "测试密码安全程度", 550 | "state": "正常" 551 | }, 552 | { 553 | "name": "🍎传言", 554 | "web": "https://www.macrumors.com/", 555 | "tags": [ 556 | "🍎Apple", 557 | "🗞️新闻" 558 | ], 559 | "brief": "关于苹果的新闻和传言", 560 | "state": "正常" 561 | }, 562 | { 563 | "name": "SpellingBee", 564 | "web": "https://www.nytimes.com/puzzles/spelling-bee", 565 | "tags": [ 566 | "🕹️游戏" 567 | ], 568 | "brief": "很难的凑字游戏", 569 | "state": "正常" 570 | }, 571 | { 572 | "name": "eSheep", 573 | "web": "https://www.esheep.com/app", 574 | "tags": [ 575 | "🤖AI", 576 | "🖼️图片" 577 | ], 578 | "brief": "体验在线的WebUI和ComfyUI", 579 | "state": "正常" 580 | }, 581 | { 582 | "name": "台风网", 583 | "web": "https://typhoon.slt.zj.gov.cn/#/", 584 | "tags": [ 585 | "🔢数据", 586 | "🔧工具" 587 | ], 588 | "brief": "查看台风路径", 589 | "state": "正常" 590 | }, 591 | { 592 | "name": "Emojiall", 593 | "web": "https://www.emojiall.com/zh-hans", 594 | "tags": [ 595 | "📦资源", 596 | "🔧工具" 597 | ], 598 | "brief": "emoji大全", 599 | "state": "正常" 600 | }, 601 | { 602 | "name": "复制符", 603 | "web": "https://fzf.0211120.xyz/", 604 | "tags": [ 605 | "🔧工具" 606 | ], 607 | "brief": "快速查找特殊符号,一键复制", 608 | "state": "正常" 609 | }, 610 | { 611 | "name": "表情百科", 612 | "web": "https://emojipedia.org/zh", 613 | "tags": [ 614 | "📦资源" 615 | ], 616 | "brief": "emoji 百科", 617 | "state": "正常" 618 | }, 619 | { 620 | "name": "泡椒音乐", 621 | "web": "https://pjmp3.com/", 622 | "tags": [ 623 | "🎵音频" 624 | ], 625 | "brief": "免注册即可搜索、试听与下载。", 626 | "state": "正常" 627 | }, 628 | { 629 | "name": "扣子", 630 | "web": "https://www.coze.cn/", 631 | "tags": [ 632 | "🤖AI" 633 | ], 634 | "brief": "一站式 AI Bot 开发平台(CN)", 635 | "state": "正常" 636 | }, 637 | { 638 | "name": "即刻", 639 | "web": "https://web.okjike.com/", 640 | "tags": [ 641 | "📱数码", 642 | "👁️‍🗨️媒体" 643 | ], 644 | "brief": "与更多同好分享你的见闻与感受,每一个独到的声音,都值得被更多人倾听。", 645 | "state": "正常" 646 | }, 647 | { 648 | "name": "Apple参数", 649 | "web": "https://hubweb.cn/", 650 | "tags": [ 651 | "🍎Apple" 652 | ], 653 | "brief": "Apple 苹果产品参数中心", 654 | "state": "正常" 655 | }, 656 | { 657 | "name": "Youtube", 658 | "web": "https://www.youtube.com/", 659 | "tags": [ 660 | "📺视频" 661 | ], 662 | "brief": "需要魔法才能访问的视频平台", 663 | "state": "正常" 664 | }, 665 | { 666 | "name": "Logo制作", 667 | "web": "https://www.designevo.com/cn", 668 | "tags": [ 669 | "🔧工具", 670 | "♻︎图标" 671 | ], 672 | "brief": "一款专业制作Logo的免费软件", 673 | "state": "正常" 674 | }, 675 | { 676 | "name": "钢笔工具", 677 | "web": "https://bezier.method.ac/", 678 | "tags": [ 679 | "⛹️‍♀️娱乐" 680 | ], 681 | "brief": "一个帮助你熟练掌握钢笔工具的网站", 682 | "state": "正常" 683 | }, 684 | { 685 | "name": "拼图", 686 | "web": "https://fulicat.com/lab/pintu/", 687 | "tags": [ 688 | "🔧工具" 689 | ], 690 | "brief": "最简单的图片拼接网站", 691 | "state": "正常" 692 | }, 693 | { 694 | "name": "中国色", 695 | "web": "http://zhongguose.com/", 696 | "tags": [ 697 | "🎈色彩" 698 | ], 699 | "brief": "提供各种中国的传统颜色的名称,CMYK值,RGB值,16进制表示", 700 | "state": "正常" 701 | }, 702 | { 703 | "name": "W32DI", 704 | "web": "https://win32diskimager.org/", 705 | "tags": [ 706 | "🧰软件" 707 | ], 708 | "brief": "Win32DiskImager一个将原始磁盘映像写入可移动设备的程序", 709 | "state": "正常" 710 | }, 711 | { 712 | "name": "Discord", 713 | "web": "https://discord.com/app/", 714 | "tags": [ 715 | "✏️协作", 716 | "👁️‍🗨️媒体" 717 | ], 718 | "brief": "在这里,您可以轻而易举地每日谈天说地,时常消遣娱乐", 719 | "state": "正常" 720 | }, 721 | { 722 | "name": "sojson", 723 | "web": "https://www.sojson.com/", 724 | "tags": [ 725 | "⚙️转换" 726 | ], 727 | "brief": "json转换为其他的格式", 728 | "state": "正常" 729 | }, 730 | { 731 | "name": "FirstWeb", 732 | "web": "http://info.cern.ch/", 733 | "tags": [ 734 | "🔹其他" 735 | ], 736 | "brief": "万维网第一个网页", 737 | "state": "正常" 738 | }, 739 | { 740 | "name": "ChatMind", 741 | "web": "https://www.chatmind.tech/", 742 | "tags": [ 743 | "🤖AI" 744 | ], 745 | "brief": "AI生成思维导图的效率工具, 为用户提供智能化思维导图方案", 746 | "state": "正常" 747 | }, 748 | { 749 | "name": "Steam", 750 | "web": "https://store.steampowered.com/", 751 | "tags": [ 752 | "🕹️游戏", 753 | "🏠主页" 754 | ], 755 | "brief": "一个游戏集合的官网", 756 | "state": "正常" 757 | }, 758 | { 759 | "name": "Figma", 760 | "web": "https://www.figma.com/", 761 | "tags": [ 762 | "✏️协作", 763 | "✒️设计", 764 | "🖼️图片" 765 | ], 766 | "brief": "Figma是一款协作设计工具,用于创建用户界面和原型。", 767 | "state": "正常" 768 | }, 769 | { 770 | "name": "开发者搜索", 771 | "web": "https://kaifa.baidu.com/", 772 | "tags": [ 773 | "🐱Code", 774 | "🧠学习", 775 | "🔍搜索" 776 | ], 777 | "brief": "一个面向开发者的知识搜索平台", 778 | "state": "正常" 779 | }, 780 | { 781 | "name": "荔枝商店", 782 | "web": "https://lizhi.shop/", 783 | "tags": [ 784 | "📱数码", 785 | "🧰软件", 786 | "🛒购物" 787 | ], 788 | "brief": "数码荔枝 x 软件商店 - 专注于分享最新鲜优秀的正版软件", 789 | "state": "正常" 790 | }, 791 | { 792 | "name": "Apple.cn", 793 | "web": "https://www.apple.com.cn/", 794 | "tags": [ 795 | "🍎Apple" 796 | ], 797 | "brief": "一个伟大公司的官网", 798 | "state": "正常" 799 | }, 800 | { 801 | "name": "骇客新闻", 802 | "web": "https://news.ycombinator.com/", 803 | "tags": [ 804 | "📱数码", 805 | "🗞️新闻" 806 | ], 807 | "brief": "一个专注于计算机科学和创业的社交新闻网站", 808 | "state": "正常" 809 | }, 810 | { 811 | "name": "在线测试", 812 | "web": "https://www.onlinemictest.com/", 813 | "tags": [ 814 | "🔧工具" 815 | ], 816 | "brief": "提供各种测试工具", 817 | "state": "正常" 818 | }, 819 | { 820 | "name": "IT之家", 821 | "web": "https://www.ithome.com/", 822 | "tags": [ 823 | "🗞️新闻", 824 | "📱数码" 825 | ], 826 | "brief": "青岛软媒旗下的前沿科技门户网站", 827 | "state": "正常" 828 | }, 829 | { 830 | "name": "B站封面", 831 | "web": "https://bilicover.magecorn.com/", 832 | "tags": [ 833 | "🖼️图片", 834 | "🔧工具" 835 | ], 836 | "brief": "提取B站视频封面", 837 | "state": "正常" 838 | }, 839 | { 840 | "name": "轻松传", 841 | "web": "https://easychuan.cn/", 842 | "tags": [ 843 | "📁文件" 844 | ], 845 | "brief": "轻松传文件到各种地方", 846 | "state": "正常" 847 | }, 848 | { 849 | "name": "在线LaTeX", 850 | "web": "https://cn.overleaf.com/", 851 | "tags": [ 852 | "🐱Code", 853 | "📒笔记" 854 | ], 855 | "brief": "在线 LaTeX 编辑器,无需安装,实时共享,版本控制,数百免费模板", 856 | "state": "正常" 857 | }, 858 | { 859 | "name": "Cobalt", 860 | "web": "https://cobalt.tools/", 861 | "tags": [ 862 | "🔧工具", 863 | "📺视频" 864 | ], 865 | "brief": "资源下载工具", 866 | "state": "正常" 867 | }, 868 | { 869 | "name": "Slack", 870 | "web": "https://slack.com/", 871 | "tags": [ 872 | "✏️协作", 873 | "✅效率" 874 | ], 875 | "brief": "一个团队协作的网站", 876 | "state": "正常" 877 | }, 878 | { 879 | "name": "Lightly", 880 | "web": "https://lightly.teamcode.com/", 881 | "tags": [ 882 | "🐱Code", 883 | "☁️云" 884 | ], 885 | "brief": "在线编译工具,免费用户500Mb内存", 886 | "state": "正常" 887 | }, 888 | { 889 | "name": "影视飓风", 890 | "web": "https://www.ysjf.com/index", 891 | "tags": [ 892 | "🕊️up主", 893 | "🏠主页" 894 | ], 895 | "brief": "影视飓风官网", 896 | "state": "正常" 897 | }, 898 | { 899 | "name": "ChatGPT", 900 | "web": "https://chatgpt.com", 901 | "tags": [ 902 | "🤖AI" 903 | ], 904 | "brief": "OpenAi做的智能助手", 905 | "state": "正常" 906 | }, 907 | { 908 | "name": "全渠道搜索", 909 | "web": "http://dir.scmor.com/", 910 | "tags": [ 911 | "🔍搜索", 912 | "🔧工具" 913 | ], 914 | "brief": "各种搜索渠道", 915 | "state": "正常" 916 | }, 917 | { 918 | "name": "阿里云", 919 | "web": "https://cn.aliyun.com/", 920 | "tags": [ 921 | "☁️云" 922 | ], 923 | "brief": "阿里云平台,图床服务", 924 | "state": "正常" 925 | }, 926 | { 927 | "name": "小红书", 928 | "web": "https://www.xiaohongshu.com/explore", 929 | "tags": [ 930 | "👁️‍🗨️媒体", 931 | "⛹️‍♀️娱乐" 932 | ], 933 | "brief": "小红书 - 你的生活指南", 934 | "state": "正常" 935 | }, 936 | { 937 | "name": "手写板", 938 | "web": "https://excalidraw.com/", 939 | "tags": [ 940 | "🧠学习", 941 | "📒笔记" 942 | ], 943 | "brief": "手写效果白板工具", 944 | "state": "正常" 945 | }, 946 | { 947 | "name": "食物图片", 948 | "web": "https://www.foodiesfeed.com/", 949 | "tags": [ 950 | "🖼️图片", 951 | "📦资源" 952 | ], 953 | "brief": "搜索超过1802张免费美食照片", 954 | "state": "正常" 955 | }, 956 | { 957 | "name": "快捷键库", 958 | "web": "https://hotkeycheatsheet.com/zh", 959 | "tags": [ 960 | "🔧工具" 961 | ], 962 | "brief": "通过提供常用快捷键的快速访问来帮助用户提高生产力", 963 | "state": "正常" 964 | }, 965 | { 966 | "name": "耳聆网", 967 | "web": "https://www.ear0.com/", 968 | "tags": [ 969 | "🎵音频", 970 | "📦资源" 971 | ], 972 | "brief": "提供全面的声音资源和版权保护机制,满足各方面音频素材需求", 973 | "state": "正常" 974 | }, 975 | { 976 | "name": "Phind", 977 | "web": "https://phind.com/", 978 | "tags": [ 979 | "🔍搜索", 980 | "🐱Code" 981 | ], 982 | "brief": "面向程序员的搜索引擎", 983 | "state": "正常" 984 | }, 985 | { 986 | "name": "Jumblie", 987 | "web": "https://jumblie.com/", 988 | "tags": [ 989 | "🕹️游戏" 990 | ], 991 | "brief": "每日挑战,找出混在一起的四个指定主题单词", 992 | "state": "正常" 993 | }, 994 | { 995 | "name": "小红书创作", 996 | "web": "https://creator.xiaohongshu.com", 997 | "tags": [ 998 | "👁️‍🗨️媒体" 999 | ], 1000 | "brief": "小红书后台", 1001 | "state": "正常" 1002 | }, 1003 | { 1004 | "name": "Claude", 1005 | "web": "https://claude.ai/", 1006 | "tags": [ 1007 | "🤖AI" 1008 | ], 1009 | "brief": "Anthropic公司开发的一个人工智能助手", 1010 | "state": "正常" 1011 | }, 1012 | { 1013 | "name": "小米有品", 1014 | "web": "https://www.xiaomiyoupin.com/", 1015 | "tags": [ 1016 | "🛒购物" 1017 | ], 1018 | "brief": "小米有品,购物平台", 1019 | "state": "正常" 1020 | }, 1021 | { 1022 | "name": "网易新闻", 1023 | "web": "https://news.163.com/", 1024 | "tags": [ 1025 | "🗞️新闻" 1026 | ], 1027 | "brief": "包含各种新闻的门户网站", 1028 | "state": "正常" 1029 | }, 1030 | { 1031 | "name": "Pixabay", 1032 | "web": "https://pixabay.com/", 1033 | "tags": [ 1034 | "🖼️图片", 1035 | "📦资源" 1036 | ], 1037 | "brief": "令人惊叹的免费图片和免版税库存", 1038 | "state": "正常" 1039 | }, 1040 | { 1041 | "name": "今日头条", 1042 | "web": "https://www.toutiao.com/", 1043 | "tags": [ 1044 | "👁️‍🗨️媒体" 1045 | ], 1046 | "brief": "字节跳动旗下文字和视频网站", 1047 | "state": "正常" 1048 | }, 1049 | { 1050 | "name": "Telegraph", 1051 | "web": "https://telegra.ph/", 1052 | "tags": [ 1053 | "📒笔记" 1054 | ], 1055 | "brief": "匿名发布文章", 1056 | "state": "正常" 1057 | }, 1058 | { 1059 | "name": "闲鱼", 1060 | "web": "https://www.goofish.com/", 1061 | "tags": [ 1062 | "🛒购物" 1063 | ], 1064 | "brief": "二手交易平台", 1065 | "state": "正常" 1066 | }, 1067 | { 1068 | "name": "MongoDB", 1069 | "web": "https://cloud.mongodb.com/", 1070 | "tags": [ 1071 | "🐱Code", 1072 | "🔢数据" 1073 | ], 1074 | "brief": "一种高性能、可扩展和灵活的开源文档数据库管理系统", 1075 | "state": "正常" 1076 | }, 1077 | { 1078 | "name": "Horizons", 1079 | "web": "https://yx.g8hh.com/heart-of-galaxy-horizons/", 1080 | "tags": [ 1081 | "🕹️游戏" 1082 | ], 1083 | "brief": "一款图文并茂的网页游戏", 1084 | "state": "正常" 1085 | }, 1086 | { 1087 | "name": "Poe", 1088 | "web": "https://poe.com/", 1089 | "tags": [ 1090 | "🤖AI" 1091 | ], 1092 | "brief": "Poe可让您提问、获得即时回答、并与AI机器人互动对话。", 1093 | "state": "正常" 1094 | }, 1095 | { 1096 | "name": "抖音", 1097 | "web": "https://www.douyin.com/", 1098 | "tags": [ 1099 | "⛹️‍♀️娱乐", 1100 | "👁️‍🗨️媒体" 1101 | ], 1102 | "brief": "抖音 - 记录美好生活", 1103 | "state": "正常" 1104 | }, 1105 | { 1106 | "name": "谷歌", 1107 | "web": "https://www.google.com/", 1108 | "tags": [ 1109 | "🔍搜索" 1110 | ], 1111 | "brief": "需要魔法才能用的检索工具", 1112 | "state": "正常" 1113 | }, 1114 | { 1115 | "name": "TMDB", 1116 | "web": "https://www.themoviedb.org/", 1117 | "tags": [ 1118 | "🔢数据", 1119 | "📺视频" 1120 | ], 1121 | "brief": "一个电影数据库网站", 1122 | "state": "正常" 1123 | }, 1124 | { 1125 | "name": "Github", 1126 | "web": "https://github.com/", 1127 | "tags": [ 1128 | "🐱Code", 1129 | "✏️协作", 1130 | "☁️云" 1131 | ], 1132 | "brief": "存代码的地方", 1133 | "state": "正常" 1134 | }, 1135 | { 1136 | "name": "全球logo", 1137 | "web": "https://www.logonews.cn/", 1138 | "tags": [ 1139 | "🖼️图片", 1140 | "📦资源" 1141 | ], 1142 | "brief": "logo情报网站", 1143 | "state": "正常" 1144 | }, 1145 | { 1146 | "name": "对牛弹琴", 1147 | "web": "https://chat.nowscott.top/", 1148 | "tags": [ 1149 | "🤖AI" 1150 | ], 1151 | "brief": "每一次对话,都是一场思想碰撞", 1152 | "state": "正常" 1153 | }, 1154 | { 1155 | "name": "woc", 1156 | "web": "https://woc.space/", 1157 | "tags": [ 1158 | "📁文件", 1159 | "✏️协作", 1160 | "☁️云" 1161 | ], 1162 | "brief": "全球文件传输与协作平台", 1163 | "state": "正常" 1164 | }, 1165 | { 1166 | "name": "日本色", 1167 | "web": "https://nipponcolors.com/", 1168 | "tags": [ 1169 | "🎈色彩" 1170 | ], 1171 | "brief": "日本传统颜色", 1172 | "state": "正常" 1173 | }, 1174 | { 1175 | "name": "亚马逊", 1176 | "web": "https://www.amazon.cn/", 1177 | "tags": [ 1178 | "🛒购物" 1179 | ], 1180 | "brief": "全球购物平台", 1181 | "state": "正常" 1182 | }, 1183 | { 1184 | "name": "阿里云盘", 1185 | "web": "https://www.aliyundrive.com/", 1186 | "tags": [ 1187 | "☁️云", 1188 | "📦资源" 1189 | ], 1190 | "brief": "一款速度快、不打扰、够安全、易于分享的网盘", 1191 | "state": "正常" 1192 | }, 1193 | { 1194 | "name": "格式转换", 1195 | "web": "https://www.aconvert.com/cn/", 1196 | "tags": [ 1197 | "⚙️转换" 1198 | ], 1199 | "brief": "内含多种格式转换", 1200 | "state": "正常" 1201 | }, 1202 | { 1203 | "name": "青柠起始页", 1204 | "web": "https://limestart.cn/", 1205 | "tags": [ 1206 | "🏠主页" 1207 | ], 1208 | "brief": "一个up主做的起始页,很精美", 1209 | "state": "正常" 1210 | }, 1211 | { 1212 | "name": "颜色代码", 1213 | "web": "https://encycolorpedia.cn/html", 1214 | "tags": [ 1215 | "🎈色彩", 1216 | "🐱Code" 1217 | ], 1218 | "brief": "提供很多的颜色、不同国家、不同应用场景", 1219 | "state": "正常" 1220 | }, 1221 | { 1222 | "name": "爱给网", 1223 | "web": "https://www.aigei.com/", 1224 | "tags": [ 1225 | "🎵音频", 1226 | "📦资源", 1227 | "📺视频" 1228 | ], 1229 | "brief": "中国最大的数字娱乐免费素材下载网站", 1230 | "state": "正常" 1231 | }, 1232 | { 1233 | "name": "海棠诗社", 1234 | "web": "https://haitang.app/", 1235 | "tags": [ 1236 | "🧠学习" 1237 | ], 1238 | "brief": "当科技与艺术融合,诗词创作从此变得更有趣", 1239 | "state": "正常" 1240 | }, 1241 | { 1242 | "name": "学习通", 1243 | "web": "https://i.chaoxing.com/", 1244 | "tags": [ 1245 | "🧠学习" 1246 | ], 1247 | "brief": "网课学习", 1248 | "state": "正常" 1249 | }, 1250 | { 1251 | "name": "Theb.AI", 1252 | "web": "https://beta.theb.ai/", 1253 | "tags": [ 1254 | "🤖AI" 1255 | ], 1256 | "brief": "一个基于API的聊天机器人 可选择多种模型", 1257 | "state": "正常" 1258 | }, 1259 | { 1260 | "name": "比特虫.ico", 1261 | "web": "https://www.bitbug.net/", 1262 | "tags": [ 1263 | "♻︎图标", 1264 | "✒️设计", 1265 | "⚙️转换" 1266 | ], 1267 | "brief": "制作网站图标的网站", 1268 | "state": "正常" 1269 | }, 1270 | { 1271 | "name": "网易邮箱", 1272 | "web": "https://mail.163.com/", 1273 | "tags": [ 1274 | "📧邮箱" 1275 | ], 1276 | "brief": "网易邮箱163、126", 1277 | "state": "正常" 1278 | }, 1279 | { 1280 | "name": "爱奇艺体育", 1281 | "web": "https://ssports.iqiyi.com/", 1282 | "tags": [ 1283 | "📺视频" 1284 | ], 1285 | "brief": "中国知名的体育赛事平台", 1286 | "state": "正常" 1287 | }, 1288 | { 1289 | "name": "🍎Store", 1290 | "web": "https://www.apple.com.cn/retail/storelist/", 1291 | "tags": [ 1292 | "🍎Apple", 1293 | "🛒购物" 1294 | ], 1295 | "brief": "中国苹果直营店位置", 1296 | "state": "正常" 1297 | }, 1298 | { 1299 | "name": "拼字幕", 1300 | "web": "https://www.pinzimu.com/", 1301 | "tags": [ 1302 | "🖼️图片", 1303 | "🔧工具" 1304 | ], 1305 | "brief": "一键免费生成字幕拼图", 1306 | "state": "正常" 1307 | }, 1308 | { 1309 | "name": "CodeForces", 1310 | "web": "https://codeforces.com/", 1311 | "tags": [ 1312 | "🐱Code" 1313 | ], 1314 | "brief": "一个俄罗斯的刷题网站,有模拟竞赛", 1315 | "state": "正常" 1316 | }, 1317 | { 1318 | "name": "猫啃网", 1319 | "web": "https://www.maoken.com/", 1320 | "tags": [ 1321 | "📦资源" 1322 | ], 1323 | "brief": "最新最全的可免费商用中文字体下载网站", 1324 | "state": "正常" 1325 | }, 1326 | { 1327 | "name": "汉兜", 1328 | "web": "https://handle.antfu.me/", 1329 | "tags": [ 1330 | "🕹️游戏" 1331 | ], 1332 | "brief": "汉字猜字游戏", 1333 | "state": "正常" 1334 | }, 1335 | { 1336 | "name": "赛博耶稣", 1337 | "web": "https://yesu.ink/", 1338 | "tags": [ 1339 | "🤖AI" 1340 | ], 1341 | "brief": "一个配备有ChatGPT的耶稣陪伴在您的身边", 1342 | "state": "正常" 1343 | }, 1344 | { 1345 | "name": "测速网", 1346 | "web": "https://www.speedtest.cn/", 1347 | "tags": [ 1348 | "🕸️网络", 1349 | "🔧工具" 1350 | ], 1351 | "brief": "你的网速怎么样?", 1352 | "state": "正常" 1353 | }, 1354 | { 1355 | "name": "Buzzing", 1356 | "web": "https://www.buzzing.cc/", 1357 | "tags": [ 1358 | "🗞️新闻" 1359 | ], 1360 | "brief": "用中文浏览国外社交媒体里的热门讨论,母语快速导读, 感兴趣再进原文深度阅读", 1361 | "state": "正常" 1362 | }, 1363 | { 1364 | "name": "微博", 1365 | "web": "https://weibo.com/", 1366 | "tags": [ 1367 | "👁️‍🗨️媒体" 1368 | ], 1369 | "brief": "国内最大的媒体", 1370 | "state": "正常" 1371 | }, 1372 | { 1373 | "name": "ChatExcel", 1374 | "web": "https://chatexcel.com/", 1375 | "tags": [ 1376 | "🤖AI" 1377 | ], 1378 | "brief": "仅通过聊天来操控您的Excel表格", 1379 | "state": "正常" 1380 | }, 1381 | { 1382 | "name": "猜中国省份", 1383 | "web": "https://vultr.youmu.moe/quiz/", 1384 | "tags": [ 1385 | "⛹️‍♀️娱乐" 1386 | ], 1387 | "brief": "你对我们的国家熟悉嘛?", 1388 | "state": "正常" 1389 | }, 1390 | { 1391 | "name": "中文手写板", 1392 | "web": "https://handraw.top/", 1393 | "tags": [ 1394 | "🧠学习", 1395 | "📒笔记" 1396 | ], 1397 | "brief": "中文友好的手写白板工具", 1398 | "state": "正常" 1399 | }, 1400 | { 1401 | "name": "知乎", 1402 | "web": "https://www.zhihu.com/", 1403 | "tags": [ 1404 | "🧠学习", 1405 | "👁️‍🗨️媒体" 1406 | ], 1407 | "brief": "看看别人怎么说?", 1408 | "state": "正常" 1409 | }, 1410 | { 1411 | "name": "开源程序书", 1412 | "web": "https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-zh.md", 1413 | "tags": [ 1414 | "🐱Code", 1415 | "🧠学习" 1416 | ], 1417 | "brief": "一些开源的程序书籍", 1418 | "state": "正常" 1419 | }, 1420 | { 1421 | "name": "wccftech", 1422 | "web": "https://wccftech.com/", 1423 | "tags": [ 1424 | "📱数码", 1425 | "🗞️新闻" 1426 | ], 1427 | "brief": "最新的硬件、移动数码、游戏的资讯", 1428 | "state": "正常" 1429 | }, 1430 | { 1431 | "name": "Gemini", 1432 | "web": "https://gemini.google.com/", 1433 | "tags": [ 1434 | "🤖AI" 1435 | ], 1436 | "brief": "谷歌人工智能的一个大型语言模型", 1437 | "state": "正常" 1438 | }, 1439 | { 1440 | "name": "微信网页版", 1441 | "web": "https://filehelper.weixin.qq.com/", 1442 | "tags": [ 1443 | "📁文件" 1444 | ], 1445 | "brief": "微信传文件", 1446 | "state": "正常" 1447 | }, 1448 | { 1449 | "name": "QQ邮箱", 1450 | "web": "https://mail.qq.com", 1451 | "tags": [ 1452 | "📧邮箱" 1453 | ], 1454 | "brief": "腾讯邮箱", 1455 | "state": "正常" 1456 | }, 1457 | { 1458 | "name": "图寻", 1459 | "web": "https://tuxun.fun/", 1460 | "tags": [ 1461 | "⛹️‍♀️娱乐" 1462 | ], 1463 | "brief": "探索真实世界,收集线索,找出自己的位置", 1464 | "state": "正常" 1465 | }, 1466 | { 1467 | "name": "Mac应用", 1468 | "web": "https://decrypt.day/", 1469 | "tags": [ 1470 | "🍎Apple", 1471 | "🧰软件" 1472 | ], 1473 | "brief": "查找并下载最新解密的IPA应用程序", 1474 | "state": "正常" 1475 | }, 1476 | { 1477 | "name": "-LKs-", 1478 | "web": "http://lkssite.vip/", 1479 | "tags": [ 1480 | "🕊️up主" 1481 | ], 1482 | "brief": "一个墨镜区up做的网址大全", 1483 | "state": "正常" 1484 | }, 1485 | { 1486 | "name": "油管解析", 1487 | "web": "https://fotoun.com/?p=161", 1488 | "tags": [ 1489 | "🔧工具", 1490 | "📺视频" 1491 | ], 1492 | "brief": "YouTube视频在线解析网站", 1493 | "state": "正常" 1494 | }, 1495 | { 1496 | "name": "开发文档", 1497 | "web": "https://wangdoc.com/", 1498 | "tags": [ 1499 | "🐱Code", 1500 | "📒笔记", 1501 | "🧠学习" 1502 | ], 1503 | "brief": "提供高质量的、自主版权的、可以自由使用的中文软件文档", 1504 | "state": "正常" 1505 | }, 1506 | { 1507 | "name": "硬件测试仪", 1508 | "web": "https://hardwaretester.com/", 1509 | "tags": [ 1510 | "🔧工具" 1511 | ], 1512 | "brief": "提供手柄、GPU、麦克风以及midi功能的测试", 1513 | "state": "正常" 1514 | }, 1515 | { 1516 | "name": "GropAI", 1517 | "web": "https://groq.com/", 1518 | "tags": [ 1519 | "🤖AI" 1520 | ], 1521 | "brief": "人工智能接口系统", 1522 | "state": "正常" 1523 | }, 1524 | { 1525 | "name": "打字网站", 1526 | "web": "https://dazidazi.com/", 1527 | "tags": [ 1528 | "⛹️‍♀️娱乐" 1529 | ], 1530 | "brief": "一个up主做的打字网站", 1531 | "state": "正常" 1532 | }, 1533 | { 1534 | "name": "谷歌学术", 1535 | "web": "https://scholar.google.com.hk/?hl=zh-CN", 1536 | "tags": [ 1537 | "🧠学习", 1538 | "🔍搜索" 1539 | ], 1540 | "brief": "轻松地大范围搜索学术文献", 1541 | "state": "正常" 1542 | }, 1543 | { 1544 | "name": "芒果商城", 1545 | "web": "https://www.mgidshop.com/", 1546 | "tags": [ 1547 | "🍎Apple", 1548 | "🛒购物" 1549 | ], 1550 | "brief": "购买日区美区小火箭、美区苹果ID", 1551 | "state": "正常" 1552 | }, 1553 | { 1554 | "name": "汤姆硬件", 1555 | "web": "https://www.tomshardware.com/news", 1556 | "tags": [ 1557 | "📱数码", 1558 | "🗞️新闻" 1559 | ], 1560 | "brief": "Tom's Hardware 是您进入科技世界的专家指南", 1561 | "state": "正常" 1562 | }, 1563 | { 1564 | "name": "唤醒", 1565 | "web": "https://www.keepscreenon.com/", 1566 | "tags": [ 1567 | "🔧工具" 1568 | ], 1569 | "brief": "保持屏幕唤醒", 1570 | "state": "正常" 1571 | }, 1572 | { 1573 | "name": "SIcon", 1574 | "web": "https://simpleicons.org/", 1575 | "tags": [ 1576 | "🐱Code", 1577 | "♻︎图标" 1578 | ], 1579 | "brief": "SimpleIcons包含很多种流行品牌的免费 SVG 图标库", 1580 | "state": "正常" 1581 | }, 1582 | { 1583 | "name": "据义查句", 1584 | "web": "https://wantquotes.net/", 1585 | "tags": [ 1586 | "🧠学习", 1587 | "🔧工具" 1588 | ], 1589 | "brief": "根据意思来查找名人名言", 1590 | "state": "正常" 1591 | }, 1592 | { 1593 | "name": "🐒type", 1594 | "web": "https://monkeytype.com/", 1595 | "tags": [ 1596 | "⛹️‍♀️娱乐" 1597 | ], 1598 | "brief": "练习打字的网站", 1599 | "state": "正常" 1600 | }, 1601 | { 1602 | "name": "腾讯文档", 1603 | "web": "https://doc.weixin.qq.com/", 1604 | "tags": [ 1605 | "📒笔记", 1606 | "✏️协作", 1607 | "📁文件" 1608 | ], 1609 | "brief": "腾讯旗下的协作工具", 1610 | "state": "正常" 1611 | }, 1612 | { 1613 | "name": "代码高亮", 1614 | "web": "http://word.wd1x.com/", 1615 | "tags": [ 1616 | "🐱Code", 1617 | "📒笔记" 1618 | ], 1619 | "brief": "在线生成可以在word/PPT中高亮的代码,支持各类主流语言在线着色", 1620 | "state": "正常" 1621 | }, 1622 | { 1623 | "name": "微信公众", 1624 | "web": "https://mp.weixin.qq.com/", 1625 | "tags": [ 1626 | "👁️‍🗨️媒体" 1627 | ], 1628 | "brief": "公众号和小程序的后台", 1629 | "state": "正常" 1630 | }, 1631 | { 1632 | "name": "飞桨", 1633 | "web": "https://aistudio.baidu.com/aistudio/index", 1634 | "tags": [ 1635 | "🐱Code", 1636 | "☁️云" 1637 | ], 1638 | "brief": "一个强大且易用的开源深度学习平台", 1639 | "state": "正常" 1640 | }, 1641 | { 1642 | "name": "Pexels", 1643 | "web": "https://www.pexels.com/zh-cn/", 1644 | "tags": [ 1645 | "🖼️图片", 1646 | "📦资源" 1647 | ], 1648 | "brief": "摄影作者在这里免费分享最精彩的素材图片和视频", 1649 | "state": "正常" 1650 | }, 1651 | { 1652 | "name": "世界名画", 1653 | "web": "https://www.nbfox.com/", 1654 | "tags": [ 1655 | "🖼️图片", 1656 | "📦资源" 1657 | ], 1658 | "brief": "高清著名画作", 1659 | "state": "正常" 1660 | }, 1661 | { 1662 | "name": "Git文档", 1663 | "web": "https://gitee.com/progit/index.html", 1664 | "tags": [ 1665 | "🐱Code", 1666 | "🧠学习", 1667 | "📒笔记" 1668 | ], 1669 | "brief": "快来学习Git!", 1670 | "state": "正常" 1671 | }, 1672 | { 1673 | "name": "Wordle", 1674 | "web": "https://www.nytimes.com/games/wordle/index.html", 1675 | "tags": [ 1676 | "🕹️游戏" 1677 | ], 1678 | "brief": "很好玩的填字游戏", 1679 | "state": "正常" 1680 | }, 1681 | { 1682 | "name": "哔哩哔哩", 1683 | "web": "https://www.bilibili.com/", 1684 | "tags": [ 1685 | "📺视频", 1686 | "👁️‍🗨️媒体" 1687 | ], 1688 | "brief": "一个看视频的网站", 1689 | "state": "正常" 1690 | }, 1691 | { 1692 | "name": "软件目录", 1693 | "web": "https://www.yuque.com/books/share/ec226b31-5272-4792-811b-c22334cf0a9a?#%20%E3%80%8A%E8%BD%AF%E4%BB%B6%E7%9B%AE%E5%BD%95%E3%80%8B", 1694 | "tags": [ 1695 | "🧰软件" 1696 | ], 1697 | "brief": "一些付费软件的免费安装包", 1698 | "state": "正常" 1699 | }, 1700 | { 1701 | "name": "itellyou", 1702 | "web": "https://next.itellyou.cn/", 1703 | "tags": [ 1704 | "🧰软件" 1705 | ], 1706 | "brief": "操作系统镜像|windows|linux", 1707 | "state": "正常" 1708 | }, 1709 | { 1710 | "name": "🫂Chat", 1711 | "web": "https://huggingface.co/chat/", 1712 | "tags": [ 1713 | "🤖AI" 1714 | ], 1715 | "brief": "让社区最好的AI聊天模型面向所有人开放。", 1716 | "state": "正常" 1717 | }, 1718 | { 1719 | "name": "菜鸟教程", 1720 | "web": "https://www.runoob.com/", 1721 | "tags": [ 1722 | "🐱Code", 1723 | "🧠学习" 1724 | ], 1725 | "brief": "提供了编程的基础技术教程", 1726 | "state": "正常" 1727 | }, 1728 | { 1729 | "name": "云盘资源", 1730 | "web": "https://www.aliyunpanziyuan.com/", 1731 | "tags": [ 1732 | "📦资源", 1733 | "🔍搜索" 1734 | ], 1735 | "brief": "阿里云盘资源网-网盘资源共享平台", 1736 | "state": "正常" 1737 | }, 1738 | { 1739 | "name": "深言达意", 1740 | "web": "https://shenyandayi.com/", 1741 | "tags": [ 1742 | "🤖AI", 1743 | "🧠学习" 1744 | ], 1745 | "brief": "清华开发的根据句子找词的工具,基于AI模型", 1746 | "state": "正常" 1747 | }, 1748 | { 1749 | "name": "硅基流动", 1750 | "web": "https://siliconflow.cn/zh-cn/siliconcloud", 1751 | "tags": [ 1752 | "🤖AI" 1753 | ], 1754 | "brief": "提供免费的国产大模型api", 1755 | "state": "正常" 1756 | }, 1757 | { 1758 | "name": "找鼠标", 1759 | "web": "https://pointerpointer.com/", 1760 | "tags": [ 1761 | "⛹️‍♀️娱乐" 1762 | ], 1763 | "brief": "你的鼠标在哪都能被找到", 1764 | "state": "正常" 1765 | }, 1766 | { 1767 | "name": "腾讯云", 1768 | "web": "https://cloud.tencent.com/", 1769 | "tags": [ 1770 | "☁️云" 1771 | ], 1772 | "brief": "腾讯云平台,云主机", 1773 | "state": "正常" 1774 | }, 1775 | { 1776 | "name": "图标库", 1777 | "web": "https://www.iconfont.cn/", 1778 | "tags": [ 1779 | "♻︎图标", 1780 | "✒️设计" 1781 | ], 1782 | "brief": "可以找到很多官方图标", 1783 | "state": "正常" 1784 | }, 1785 | { 1786 | "name": "AColor", 1787 | "web": "https://color.adobe.com/", 1788 | "tags": [ 1789 | "🎈色彩" 1790 | ], 1791 | "brief": "Adobe的一个配色网站", 1792 | "state": "正常" 1793 | }, 1794 | { 1795 | "name": "矩阵计算", 1796 | "web": "https://m.matrix.reshish.com/zh/", 1797 | "tags": [ 1798 | "🧠学习" 1799 | ], 1800 | "brief": "最为便捷的在线矩阵计算器", 1801 | "state": "正常" 1802 | }, 1803 | { 1804 | "name": "Netlify", 1805 | "web": "https://app.netlify.com/", 1806 | "tags": [ 1807 | "🐱Code", 1808 | "☁️云" 1809 | ], 1810 | "brief": "一个免服务器构建网页的网站", 1811 | "state": "正常" 1812 | }, 1813 | { 1814 | "name": "PH风格", 1815 | "web": "https://logoly.pro/", 1816 | "tags": [ 1817 | "⛹️‍♀️娱乐", 1818 | "♻︎图标", 1819 | "🖼️图片" 1820 | ], 1821 | "brief": "在线的 PornHub 风格 Logo 生成工具", 1822 | "state": "正常" 1823 | }, 1824 | { 1825 | "name": "网站图标", 1826 | "web": "https://fontawesome.com/", 1827 | "tags": [ 1828 | "♻︎图标", 1829 | "🐱Code" 1830 | ], 1831 | "brief": "一些图标", 1832 | "state": "正常" 1833 | }, 1834 | { 1835 | "name": "连通性检验", 1836 | "web": "https://ip.skk.moe/", 1837 | "tags": [ 1838 | "🕸️网络", 1839 | "🔧工具" 1840 | ], 1841 | "brief": "检测你的电脑是否能连接一些节点", 1842 | "state": "正常" 1843 | }, 1844 | { 1845 | "name": "微信读书", 1846 | "web": "https://weread.qq.com/", 1847 | "tags": [ 1848 | "🧠学习" 1849 | ], 1850 | "brief": "一个看书的网站", 1851 | "state": "正常" 1852 | }, 1853 | { 1854 | "name": "UU在线工具", 1855 | "web": "https://uutool.cn/", 1856 | "tags": [ 1857 | "🔧工具" 1858 | ], 1859 | "brief": "很多的工具", 1860 | "state": "正常" 1861 | }, 1862 | { 1863 | "name": "离谱相关性", 1864 | "web": "http://tylervigen.com/spurious-correlations", 1865 | "tags": [ 1866 | "⛹️‍♀️娱乐", 1867 | "🔹其他" 1868 | ], 1869 | "brief": "什么是离谱的呢?", 1870 | "state": "正常" 1871 | }, 1872 | { 1873 | "name": "淘宝", 1874 | "web": "https://www.taobao.com/", 1875 | "tags": [ 1876 | "🛒购物" 1877 | ], 1878 | "brief": "买!买!买!", 1879 | "state": "正常" 1880 | }, 1881 | { 1882 | "name": "DS可视化", 1883 | "web": "https://visualgo.net/", 1884 | "tags": [ 1885 | "🐱Code", 1886 | "🧠学习" 1887 | ], 1888 | "brief": "数据结构和算法动态可视化", 1889 | "state": "正常" 1890 | }, 1891 | { 1892 | "name": "飞布API", 1893 | "web": "https://www.fireboom.io/", 1894 | "tags": [ 1895 | "🐱Code", 1896 | "☁️云" 1897 | ], 1898 | "brief": "可视化API开发平台", 1899 | "state": "正常" 1900 | }, 1901 | { 1902 | "name": "豆包AI", 1903 | "web": "https://www.doubao.com/chat/", 1904 | "tags": [ 1905 | "🤖AI" 1906 | ], 1907 | "brief": "抖音旗下的AI助手", 1908 | "state": "正常" 1909 | }, 1910 | { 1911 | "name": "80S", 1912 | "web": "https://www.80sgod.com/", 1913 | "tags": [ 1914 | "📺视频" 1915 | ], 1916 | "brief": "提供最新高清MP4电影,电视剧,动漫下载.采用迅雷磁力链方式下载", 1917 | "state": "正常" 1918 | }, 1919 | { 1920 | "name": "商量", 1921 | "web": "https://chat.sensetime.com/", 1922 | "tags": [ 1923 | "🤖AI" 1924 | ], 1925 | "brief": "商汤自研的超千亿参数语言大模型应用平台", 1926 | "state": "正常" 1927 | }, 1928 | { 1929 | "name": "渐变色", 1930 | "web": "https://uigradients.com/", 1931 | "tags": [ 1932 | "🎈色彩" 1933 | ], 1934 | "brief": "提供上百种渐变色", 1935 | "state": "正常" 1936 | }, 1937 | { 1938 | "name": "油猴脚本", 1939 | "web": "https://greasyfork.org/zh-CN", 1940 | "tags": [ 1941 | "🔧工具", 1942 | "🧰软件" 1943 | ], 1944 | "brief": "这里是一个提供用户脚本的网站", 1945 | "state": "正常" 1946 | }, 1947 | { 1948 | "name": "SpeedTest", 1949 | "web": "https://speed.cloudflare.com/", 1950 | "tags": [ 1951 | "🕸️网络", 1952 | "🔧工具" 1953 | ], 1954 | "brief": "Cloudflare的测速工具", 1955 | "state": "正常" 1956 | }, 1957 | { 1958 | "name": "DeepL", 1959 | "web": "https://www.deepl.com/translator", 1960 | "tags": [ 1961 | "🧠学习" 1962 | ], 1963 | "brief": "一个很好用的翻译网站", 1964 | "state": "正常" 1965 | }, 1966 | { 1967 | "name": "LaTeX公式", 1968 | "web": " https://www.latexlive.com/", 1969 | "tags": [ 1970 | "🐱Code", 1971 | "📒笔记" 1972 | ], 1973 | "brief": "在线编辑LaTeX公式的工具", 1974 | "state": "正常" 1975 | }, 1976 | { 1977 | "name": "国外手机号", 1978 | "web": "https://sms-activate.org", 1979 | "tags": [ 1980 | "🔧工具" 1981 | ], 1982 | "brief": "虚拟号码来在线接受短信", 1983 | "state": "正常" 1984 | }, 1985 | { 1986 | "name": "视频号", 1987 | "web": "https://channels.weixin.qq.com/", 1988 | "tags": [ 1989 | "👁️‍🗨️媒体" 1990 | ], 1991 | "brief": "微信视频号", 1992 | "state": "正常" 1993 | }, 1994 | { 1995 | "name": "01万物", 1996 | "web": "https://lingyiwanwu.com/", 1997 | "tags": [ 1998 | "🤖AI" 1999 | ], 2000 | "brief": "AI工作平台与大模型开发平台", 2001 | "state": "正常" 2002 | }, 2003 | { 2004 | "name": "Kaggle", 2005 | "web": "https://www.kaggle.com/", 2006 | "tags": [ 2007 | "🔢数据", 2008 | "🧠学习" 2009 | ], 2010 | "brief": "找一些成品的数据文件以及其他开发者对数据的处理", 2011 | "state": "正常" 2012 | }, 2013 | { 2014 | "name": "fydeos", 2015 | "web": "https://fydeos.com/", 2016 | "tags": [ 2017 | "🧰软件", 2018 | "🏠主页" 2019 | ], 2020 | "brief": "基于chromeos的一个桌面系统", 2021 | "state": "正常" 2022 | }, 2023 | { 2024 | "name": "图形计算器", 2025 | "web": "https://www.desmos.com/calculator?lang=zh-CN", 2026 | "tags": [ 2027 | "🧠学习", 2028 | "🖼️图片" 2029 | ], 2030 | "brief": "绘制函数图形并进行可视化", 2031 | "state": "正常" 2032 | }, 2033 | { 2034 | "name": "面试鸭", 2035 | "web": "https://www.mianshiya.com/", 2036 | "tags": [ 2037 | "🧠学习", 2038 | "🐱Code" 2039 | ], 2040 | "brief": "提供了很多面试题", 2041 | "state": "正常" 2042 | }, 2043 | { 2044 | "name": "在线剪视频", 2045 | "web": "https://online-video-cutter.com/cn/", 2046 | "tags": [ 2047 | "🔧工具", 2048 | "📺视频" 2049 | ], 2050 | "brief": "从任何在线视频中剪切片段", 2051 | "state": "正常" 2052 | }, 2053 | { 2054 | "name": "拼接音视频", 2055 | "web": "https://maple3142.github.io/mergemp4/", 2056 | "tags": [ 2057 | "🔧工具", 2058 | "👁️‍🗨️媒体" 2059 | ], 2060 | "brief": "将音频和视频拼到一起(不负责对齐)", 2061 | "state": "正常" 2062 | }, 2063 | { 2064 | "name": "9to5mac", 2065 | "web": "https://9to5mac.com/", 2066 | "tags": [ 2067 | "🍎Apple", 2068 | "🗞️新闻" 2069 | ], 2070 | "brief": "苹果新闻和传言", 2071 | "state": "正常" 2072 | }, 2073 | { 2074 | "name": "赛博佛祖", 2075 | "web": "https://fozu.ink/", 2076 | "tags": [ 2077 | "🤖AI" 2078 | ], 2079 | "brief": "一个配备有ChatGPT的佛陪伴在您的身边", 2080 | "state": "正常" 2081 | }, 2082 | { 2083 | "name": "OpenArt", 2084 | "web": "https://openart.ai/home", 2085 | "tags": [ 2086 | "🖼️图片", 2087 | "🤖AI" 2088 | ], 2089 | "brief": "AI艺术生成器", 2090 | "state": "正常" 2091 | }, 2092 | { 2093 | "name": "即时工具", 2094 | "web": "https://www.67tool.com/", 2095 | "tags": [ 2096 | "🔧工具" 2097 | ], 2098 | "brief": "一些工具", 2099 | "state": "正常" 2100 | }, 2101 | { 2102 | "name": "站长之家", 2103 | "web": "https://tool.chinaz.com/", 2104 | "tags": [ 2105 | "🔧工具", 2106 | "🕸️网络" 2107 | ], 2108 | "brief": "提供各种查询工具", 2109 | "state": "正常" 2110 | }, 2111 | { 2112 | "name": "MD排版", 2113 | "web": "https://md.guozh.net/", 2114 | "tags": [ 2115 | "⚙️转换", 2116 | "📒笔记" 2117 | ], 2118 | "brief": "让markdown可以很好的发在公众号上", 2119 | "state": "正常" 2120 | }, 2121 | { 2122 | "name": "谷歌翻译", 2123 | "web": "https://translate.google.com/", 2124 | "tags": [ 2125 | "🧠学习" 2126 | ], 2127 | "brief": "(也许)需要魔法才能用的翻译工具", 2128 | "state": "正常" 2129 | }, 2130 | { 2131 | "name": "新榜", 2132 | "web": "https://newrank.cn/", 2133 | "tags": [ 2134 | "👁️‍🗨️媒体" 2135 | ], 2136 | "brief": "更多更好的KOL自媒体,品效合一的传播销售方案,尽在新榜", 2137 | "state": "正常" 2138 | }, 2139 | { 2140 | "name": "耳机评测站", 2141 | "web": "https://www.woodenears.com/", 2142 | "tags": [ 2143 | "📱数码" 2144 | ], 2145 | "brief": "耳机测评网站", 2146 | "state": "正常" 2147 | }, 2148 | { 2149 | "name": "Jetbrains", 2150 | "web": "https://www.jetbrains.com/zh-cn/", 2151 | "tags": [ 2152 | "🐱Code", 2153 | "🧰软件", 2154 | "🏠主页" 2155 | ], 2156 | "brief": "为专业人士和团队制作开发者工具", 2157 | "state": "正常" 2158 | }, 2159 | { 2160 | "name": "图司机", 2161 | "web": "https://www.tusij.com/", 2162 | "tags": [ 2163 | "🖼️图片", 2164 | "✒️设计" 2165 | ], 2166 | "brief": "简单修图网页", 2167 | "state": "正常" 2168 | }, 2169 | { 2170 | "name": "OTP", 2171 | "web": "https://otp.landian.vip/zh-cn/", 2172 | "tags": [ 2173 | "🧰软件", 2174 | "🔧工具" 2175 | ], 2176 | "brief": "OfficeToolPlus软件的工具网页", 2177 | "state": "正常" 2178 | }, 2179 | { 2180 | "name": "ChatDoc", 2181 | "web": "https://chatdoc.com/chatdoc/#/upload", 2182 | "tags": [ 2183 | "🤖AI" 2184 | ], 2185 | "brief": "一个文件阅读助手,可以快速从文档中提取、定位和汇总信息", 2186 | "state": "正常" 2187 | }, 2188 | { 2189 | "name": "壁纸", 2190 | "web": "https://wallhaven.cc/", 2191 | "tags": [ 2192 | "🖼️图片", 2193 | "📦资源" 2194 | ], 2195 | "brief": "好看高清壁纸", 2196 | "state": "正常" 2197 | }, 2198 | { 2199 | "name": "慕课", 2200 | "web": "https://www.icourse163.org/", 2201 | "tags": [ 2202 | "🧠学习" 2203 | ], 2204 | "brief": "网课,内含很多精品公开课", 2205 | "state": "正常" 2206 | }, 2207 | { 2208 | "name": "知网", 2209 | "web": "https://www.cnki.net/", 2210 | "tags": [ 2211 | "🧠学习", 2212 | "📦资源" 2213 | ], 2214 | "brief": "面向读者提供各类学术资源统一检索、统一导航、在线阅读和下载服务", 2215 | "state": "正常" 2216 | }, 2217 | { 2218 | "name": "Gitee", 2219 | "web": "https://gitee.com/", 2220 | "tags": [ 2221 | "🐱Code", 2222 | "☁️云", 2223 | "✏️协作" 2224 | ], 2225 | "brief": "存代码用的,国内访问很快", 2226 | "state": "正常" 2227 | }, 2228 | { 2229 | "name": "字幕库", 2230 | "web": "https://zmk.pw/", 2231 | "tags": [ 2232 | "📦资源" 2233 | ], 2234 | "brief": "字幕下载网站", 2235 | "state": "正常" 2236 | }, 2237 | { 2238 | "name": "网页存档", 2239 | "web": "https://archive.ph/", 2240 | "tags": [ 2241 | "📒笔记", 2242 | "🔢数据" 2243 | ], 2244 | "brief": "将网页永久保存,即使原来的消失了,仍然可以通过存档查看网页内容", 2245 | "state": "正常" 2246 | }, 2247 | { 2248 | "name": "Gmail", 2249 | "web": "https://mail.google.com/mail/", 2250 | "tags": [ 2251 | "📧邮箱" 2252 | ], 2253 | "brief": "谷歌邮箱", 2254 | "state": "正常" 2255 | }, 2256 | { 2257 | "name": "DuckGo", 2258 | "web": "https://start.duckduckgo.com/", 2259 | "tags": [ 2260 | "🔍搜索" 2261 | ], 2262 | "brief": "搜索但保护你的隐私", 2263 | "state": "正常" 2264 | }, 2265 | { 2266 | "name": "敲字背单词", 2267 | "web": "https://qwerty.kaiyi.cool/", 2268 | "tags": [ 2269 | "🧠学习", 2270 | "⛹️‍♀️娱乐" 2271 | ], 2272 | "brief": "为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件", 2273 | "state": "正常" 2274 | }, 2275 | { 2276 | "name": "在线工具", 2277 | "web": "https://tool.lu/", 2278 | "tags": [ 2279 | "🔧工具" 2280 | ], 2281 | "brief": "有很多各式各样的在线工具", 2282 | "state": "正常" 2283 | }, 2284 | { 2285 | "name": "SOC-PK", 2286 | "web": "https://www.socpk.com/", 2287 | "tags": [ 2288 | "📱数码" 2289 | ], 2290 | "brief": "极客湾做的移动芯片排行", 2291 | "state": "正常" 2292 | }, 2293 | { 2294 | "name": "一网一匠", 2295 | "web": "https://ywyj.cn/", 2296 | "tags": [ 2297 | "🔧工具", 2298 | "🕊️up主" 2299 | ], 2300 | "brief": "一个up主叫一网一匠做的主页", 2301 | "state": "正常" 2302 | }, 2303 | { 2304 | "name": "秒搜", 2305 | "web": "https://miaosou.fun/", 2306 | "tags": [ 2307 | "🔍搜索", 2308 | "📦资源" 2309 | ], 2310 | "brief": "一个很好用的网盘资源搜索引擎", 2311 | "state": "正常" 2312 | }, 2313 | { 2314 | "name": "Typora", 2315 | "web": "https://www.typoraio.cn/", 2316 | "tags": [ 2317 | "📒笔记" 2318 | ], 2319 | "brief": "一款 Markdown 编辑器和阅读器", 2320 | "state": "正常" 2321 | }, 2322 | { 2323 | "name": "文心一言", 2324 | "web": "https://yiyan.baidu.com/", 2325 | "tags": [ 2326 | "🤖AI" 2327 | ], 2328 | "brief": "百度的大语言模型", 2329 | "state": "正常" 2330 | }, 2331 | { 2332 | "name": "流程图导图", 2333 | "web": "https://www.processon.com/", 2334 | "tags": [ 2335 | "🖼️图片", 2336 | "🧠学习" 2337 | ], 2338 | "brief": "流程清晰可见", 2339 | "state": "正常" 2340 | }, 2341 | { 2342 | "name": "INS", 2343 | "web": "https://www.instagram.com/", 2344 | "tags": [ 2345 | "👁️‍🗨️媒体" 2346 | ], 2347 | "brief": "一款Meta的社交媒体平台", 2348 | "state": "正常" 2349 | }, 2350 | { 2351 | "name": "进化", 2352 | "web": "https://evolve.g8hh.com/", 2353 | "tags": [ 2354 | "🕹️游戏" 2355 | ], 2356 | "brief": "从原生质开始,逐步解锁高级生命形式,开启属于自己的文明", 2357 | "state": "正常" 2358 | }, 2359 | { 2360 | "name": "星标历史图", 2361 | "web": "https://star-history.com/", 2362 | "tags": [ 2363 | "🐱Code", 2364 | "🖼️图片" 2365 | ], 2366 | "brief": "GitHub上缺失的星标历史图,star-history", 2367 | "state": "正常" 2368 | }, 2369 | { 2370 | "name": "PY标准库", 2371 | "web": "https://docs.python.org/zh-cn/3/library/", 2372 | "tags": [ 2373 | "🐱Code", 2374 | "🧠学习" 2375 | ], 2376 | "brief": "语言参考手册描述了Python的语法和语义,库参考则介绍了Python标准库", 2377 | "state": "正常" 2378 | }, 2379 | { 2380 | "name": "免费歌曲", 2381 | "web": "https://tool.liumingye.cn/music/#/", 2382 | "tags": [ 2383 | "🎵音频" 2384 | ], 2385 | "brief": "免费下载歌曲", 2386 | "state": "正常" 2387 | }, 2388 | { 2389 | "name": "Notion头像", 2390 | "web": "https://notion-avatar.vercel.app/zh", 2391 | "tags": [ 2392 | "✒️设计", 2393 | "🖼️图片" 2394 | ], 2395 | "brief": "制作notion风格的头像", 2396 | "state": "正常" 2397 | }, 2398 | { 2399 | "name": "7ED", 2400 | "web": "https://www.7ed.net/", 2401 | "tags": [ 2402 | "🕸️网络", 2403 | "🔧工具" 2404 | ], 2405 | "brief": "包含静态资源 CDN 加速服务、Git 资源加速服务、海外图片内地加速服务、Bing 每日图片 API等。", 2406 | "state": "正常" 2407 | }, 2408 | { 2409 | "name": "W3school", 2410 | "web": "https://www.w3school.com.cn/", 2411 | "tags": [ 2412 | "🧠学习" 2413 | ], 2414 | "brief": "全球最大的中文 Web 技术教程", 2415 | "state": "正常" 2416 | }, 2417 | { 2418 | "name": "Notion", 2419 | "web": "https://www.notion.so/", 2420 | "tags": [ 2421 | "✏️协作", 2422 | "📒笔记", 2423 | "✅效率" 2424 | ], 2425 | "brief": "一款功能强大的协作工具和笔记应用", 2426 | "state": "正常" 2427 | }, 2428 | { 2429 | "name": "cal计算器", 2430 | "web": "https://www.calculator.net/calorie-calculator.html", 2431 | "tags": [ 2432 | "🔧工具" 2433 | ], 2434 | "brief": "估算每天需要摄入的卡路里数量,以维持、减重或增重", 2435 | "state": "正常" 2436 | }, 2437 | { 2438 | "name": "BibiGPT", 2439 | "web": "https://b.jimmylv.cn/", 2440 | "tags": [ 2441 | "🤖AI", 2442 | "📒笔记", 2443 | "📺视频" 2444 | ], 2445 | "brief": "一键总结音视频", 2446 | "state": "正常" 2447 | }, 2448 | { 2449 | "name": "重开模拟器", 2450 | "web": "https://liferestart.syaro.io/public/index.html", 2451 | "tags": [ 2452 | "🕹️游戏" 2453 | ], 2454 | "brief": "如果能重来~", 2455 | "state": "正常" 2456 | }, 2457 | { 2458 | "name": "打开文件", 2459 | "web": "https://openfiles.online/", 2460 | "tags": [ 2461 | "🔧工具" 2462 | ], 2463 | "brief": "无需下载软件,在线打开图片、文本、视频、音频、压缩包,让工作更轻松", 2464 | "state": "正常" 2465 | }, 2466 | { 2467 | "name": "Outlook", 2468 | "web": "https://outlook.live.com/mail/", 2469 | "tags": [ 2470 | "📧邮箱" 2471 | ], 2472 | "brief": "微软邮箱", 2473 | "state": "正常" 2474 | }, 2475 | { 2476 | "name": "徽章制作", 2477 | "web": "https://shields.io/", 2478 | "tags": [ 2479 | "🐱Code", 2480 | "♻︎图标" 2481 | ], 2482 | "brief": "提供各种服务的简洁、一致的易读徽章(badge、徽标)", 2483 | "state": "正常" 2484 | }, 2485 | { 2486 | "name": "X", 2487 | "web": "https://x.com", 2488 | "tags": [ 2489 | "👁️‍🗨️媒体" 2490 | ], 2491 | "brief": "推特,已被马斯克收购", 2492 | "state": "正常" 2493 | }, 2494 | { 2495 | "name": "ChatPDF", 2496 | "web": "https://www.chatpdf.com/", 2497 | "tags": [ 2498 | "🤖AI" 2499 | ], 2500 | "brief": "ChatPDF是一种快速简便的方法,可以与任何PDF文件进行对话", 2501 | "state": "正常" 2502 | }, 2503 | { 2504 | "name": "播客搜索", 2505 | "web": "https://pod.link/", 2506 | "tags": [ 2507 | "🔧工具", 2508 | "🎵音频" 2509 | ], 2510 | "brief": "搜索播客的网站", 2511 | "state": "正常" 2512 | }, 2513 | { 2514 | "name": "空投", 2515 | "web": "https://airportal.cn/", 2516 | "tags": [ 2517 | "📁文件" 2518 | ], 2519 | "brief": "快速传文件", 2520 | "state": "正常" 2521 | }, 2522 | { 2523 | "name": "数学求解", 2524 | "web": "https://zs.symbolab.com/", 2525 | "tags": [ 2526 | "🧠学习" 2527 | ], 2528 | "brief": "Symbolab:方程搜索和数学求解器 - 一步步求解代数,三角函数和微积分问题", 2529 | "state": "正常" 2530 | }, 2531 | { 2532 | "name": " Civitai", 2533 | "web": "https://civitai.com/", 2534 | "tags": [ 2535 | "🤖AI", 2536 | "🖼️图片" 2537 | ], 2538 | "brief": "Civitai是一个专注于分享和交流AI生成艺术及其相关资源的社区平台。", 2539 | "state": "正常" 2540 | }, 2541 | { 2542 | "name": "SQLKiller", 2543 | "web": "https://www.sqlkiller.com/", 2544 | "tags": [ 2545 | "🤖AI" 2546 | ], 2547 | "brief": "直接描述你的取数需求,一键生成SQL", 2548 | "state": "正常" 2549 | }, 2550 | { 2551 | "name": "少数派", 2552 | "web": "https://sspai.com/", 2553 | "tags": [ 2554 | "📱数码", 2555 | "👁️‍🗨️媒体", 2556 | "🗞️新闻" 2557 | ], 2558 | "brief": "写文字的平台,数码科技相关", 2559 | "state": "正常" 2560 | }, 2561 | { 2562 | "name": "找图标", 2563 | "web": "https://pushkeen.ai/appstore-icons", 2564 | "tags": [ 2565 | "✒️设计", 2566 | "🔍搜索" 2567 | ], 2568 | "brief": "快速下载appstore的图标", 2569 | "state": "正常" 2570 | }, 2571 | { 2572 | "name": "CSDN", 2573 | "web": "https://www.csdn.net/", 2574 | "tags": [ 2575 | "🐱Code", 2576 | "🔍搜索" 2577 | ], 2578 | "brief": "代码有关的问题来问我", 2579 | "state": "正常" 2580 | }, 2581 | { 2582 | "name": "Topbook", 2583 | "web": "https://topbook.cc/overview", 2584 | "tags": [ 2585 | "🕊️up主", 2586 | "🏠主页", 2587 | "✅效率" 2588 | ], 2589 | "brief": "一个百科全书", 2590 | "state": "正常" 2591 | }, 2592 | { 2593 | "name": "XFastest", 2594 | "web": "https://news.xfastest.com/", 2595 | "tags": [ 2596 | "🗞️新闻" 2597 | ], 2598 | "brief": "香港科技新闻网站", 2599 | "state": "正常" 2600 | } 2601 | ] --------------------------------------------------------------------------------