Spaces:
Running
Running
| <html lang="zh-CN"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>红石API - 公益接口平台</title> | |
| <link rel="icon" href="logo.webp"> | |
| <style> | |
| :root { | |
| --neon-blue: #00f3ff; | |
| --neon-pink: #ff00ff; | |
| --cyber-purple: #6c00ff; | |
| --dark-bg: #0a0a12; | |
| --grid-color: rgba(0, 243, 255, 0.1); | |
| } | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| font-family: 'Segoe UI', system-ui; | |
| } | |
| body { | |
| background: var(--dark-bg); | |
| color: white; | |
| position: relative; | |
| overflow-x: hidden; | |
| scroll-behavior: smooth; | |
| } | |
| .cyber-bg { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| z-index: -2; | |
| background: | |
| linear-gradient(45deg, var(--cyber-purple) 0%, transparent 50%), | |
| linear-gradient(-45deg, var(--neon-pink) 0%, transparent 50%), | |
| var(--dark-bg); | |
| animation: bgMove 20s linear infinite; | |
| background-size: 200% 200%; | |
| } | |
| .cyber-grid { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background-image: | |
| linear-gradient(var(--grid-color) 1px, transparent 1px), | |
| linear-gradient(90deg, var(--grid-color) 1px, transparent 1px); | |
| background-size: 30px 30px; | |
| z-index: -1; | |
| opacity: 0.3; | |
| } | |
| .hero { | |
| height: 100vh; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| flex-direction: column; | |
| text-align: center; | |
| padding: 20px; | |
| position: relative; | |
| } | |
| .logo { | |
| width: 150px; | |
| height: 150px; | |
| margin-bottom: 30px; | |
| animation: float 3s ease-in-out infinite; | |
| filter: drop-shadow(0 0 15px var(--neon-blue)); | |
| } | |
| .nav-buttons { | |
| margin: 40px 0; | |
| display: flex; | |
| gap: 25px; | |
| flex-wrap: wrap; | |
| justify-content: center; | |
| } | |
| .btn { | |
| padding: 15px 40px; | |
| border: 2px solid var(--neon-blue); | |
| border-radius: 30px; | |
| color: var(--neon-blue); | |
| text-decoration: none; | |
| transition: all 0.3s; | |
| position: relative; | |
| overflow: hidden; | |
| background: rgba(0, 0, 0, 0.3); | |
| backdrop-filter: blur(5px); | |
| } | |
| .btn:hover { | |
| background: var(--neon-blue); | |
| color: var(--dark-bg); | |
| box-shadow: 0 0 30px var(--neon-blue); | |
| } | |
| .btn::before { | |
| content: ''; | |
| position: absolute; | |
| top: -50%; | |
| left: -50%; | |
| width: 200%; | |
| height: 200%; | |
| background: linear-gradient(45deg, | |
| transparent, | |
| var(--neon-blue), | |
| transparent); | |
| animation: lightFlow 3s infinite linear; | |
| opacity: 0.3; | |
| } | |
| .btn-more { | |
| padding: 12px 35px; | |
| font-size: 1.1em; | |
| border: 2px solid var(--neon-pink); | |
| color: var(--neon-pink); | |
| background: rgba(255, 0, 255, 0.1); | |
| border-radius: 30px; | |
| text-decoration: none; | |
| transition: all 0.3s; | |
| display: inline-flex; | |
| align-items: center; | |
| position: relative; | |
| } | |
| .btn-more:hover { | |
| background: var(--neon-pink); | |
| color: var(--dark-bg); | |
| box-shadow: 0 0 25px var(--neon-pink); | |
| transform: translateY(-3px); | |
| } | |
| .daily-quote { | |
| font-size: 1.5em; | |
| margin: 30px 0; | |
| min-height: 60px; | |
| text-shadow: 0 0 10px var(--neon-pink); | |
| } | |
| .section { | |
| padding: 100px 20px; | |
| position: relative; | |
| backdrop-filter: blur(5px); | |
| } | |
| .section-title { | |
| text-align: center; | |
| margin-bottom: 60px; | |
| font-size: 2.5em; | |
| text-shadow: 0 0 15px var(--neon-blue); | |
| } | |
| .grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 30px; | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| } | |
| .card { | |
| background: rgba(10, 10, 18, 0.7); | |
| border: 1px solid var(--neon-blue); | |
| border-radius: 15px; | |
| padding: 25px; | |
| transition: all 0.3s; | |
| backdrop-filter: blur(10px); | |
| cursor: pointer; | |
| position: relative; | |
| } | |
| .card:hover { | |
| transform: translateY(-10px); | |
| box-shadow: 0 0 30px var(--neon-blue); | |
| } | |
| .card::after { | |
| content: '↗'; | |
| position: absolute; | |
| top: 15px; | |
| right: 15px; | |
| color: var(--neon-blue); | |
| opacity: 0; | |
| transition: opacity 0.3s; | |
| } | |
| .card:hover::after { | |
| opacity: 1; | |
| } | |
| .vendor-logo { | |
| width: 60px; | |
| height: 60px; | |
| margin-right: 20px; | |
| filter: drop-shadow(0 0 5px var(--neon-blue)); | |
| } | |
| .more-button { | |
| display: flex; | |
| justify-content: center; | |
| margin-top: 40px; | |
| } | |
| .faq-item { | |
| background: rgba(108, 0, 255, 0.1); | |
| border: 1px solid var(--neon-pink); | |
| margin: 20px 0; | |
| padding: 25px; | |
| border-radius: 10px; | |
| } | |
| .faq-question { | |
| cursor: pointer; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .faq-answer { | |
| max-height: 0; | |
| overflow: hidden; | |
| transition: max-height 0.3s ease-out; | |
| margin-top: 15px; | |
| } | |
| .faq-item.active .faq-answer { | |
| max-height: 500px; | |
| margin-top: 20px; | |
| } | |
| .arrow { | |
| transition: transform 0.3s; | |
| } | |
| .faq-item.active .arrow { | |
| transform: rotate(180deg); | |
| } | |
| @keyframes float { | |
| 0%, 100% { transform: translateY(0); } | |
| 50% { transform: translateY(-20px); } | |
| } | |
| @keyframes bgMove { | |
| 0% { background-position: 0% 0%; } | |
| 50% { background-position: 100% 100%; } | |
| 100% { background-position: 0% 0%; } | |
| } | |
| @keyframes lightFlow { | |
| 0% { transform: rotate(0deg) translate(-50%, -50%); } | |
| 100% { transform: rotate(360deg) translate(-50%, -50%); } | |
| } | |
| @media (max-width: 768px) { | |
| .grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .section-title { | |
| font-size: 2em; | |
| } | |
| .btn { | |
| padding: 12px 30px; | |
| } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="cyber-bg"></div> | |
| <div class="cyber-grid"></div> | |
| <section class="hero"> | |
| <img src="/logo.webp" | |
| alt="红石API" | |
| class="logo"> | |
| <h1 class="section-title">红石API</h1> | |
| <p style="font-size: 1.2em; margin-bottom: 20px;">开放 · 安全 · 高效的智能接口平台</p> | |
| <div class="nav-buttons"> | |
| <a href="https://api.hongshi.dpdns.org/about" class="btn" target="_blank">关于我们</a> | |
| <a href="https://dash.hongshi.dpdns.org/status/api" class="btn" target="_blank">服务监控</a> | |
| <a href="https://api.hongshi.dpdns.org/pricing" class="btn" target="_blank">定价方案</a> | |
| </div> | |
| <div class="daily-quote" id="dailyQuote"></div> | |
| </section> | |
| <section class="section"> | |
| <h2 class="section-title">️ 支持AI大模型</h2> | |
| <div class="grid"> | |
| <div class="card" data-link="https://deepseek.com"> | |
| <div style="display: flex; align-items: center;"> | |
| <img src="https://www.deepseek.com/favicon.ico" class="vendor-logo" alt="DeepSeek"> | |
| <h3>DeepSeek</h3> | |
| </div> | |
| <p style="margin-top: 15px;">DeepSeek-R1、DeepSeek-v3以及对应联网模型</p> | |
| </div> | |
| <div class="card" data-link="https://openai.com"> | |
| <div style="display: flex; align-items: center;"> | |
| <img src="https://freepnglogo.com/images/all_img/1702059841openai-icon-png.png" class="vendor-logo" alt="OpenAI"> | |
| <h3>OpenAI</h3> | |
| </div> | |
| <p style="margin-top: 15px;">GPT-4.1-mini、Dall-E-2、Whisper-1等模型</p> | |
| </div> | |
| <div class="card" data-link="https://chat.qwen.ai/"> | |
| <div style="display: flex; align-items: center;"> | |
| <img src="https://assets.alicdn.com/g/qwenweb/qwen-webui-fe/0.0.54/static/favicon.png" class="vendor-logo" alt="Qwen"> | |
| <h3>通义千问</h3> | |
| </div> | |
| <p style="margin-top: 15px;">Qwen2、Qwen2.5、Qwen3、QwQ以及对应的联网模型</p> | |
| </div> | |
| <div class="card" data-link="https://gemini.google.com/"> | |
| <div style="display: flex; align-items:center;"> | |
| <img src="https://registry.npmmirror.com/@lobehub/icons-static-png/1.45.0/files/dark/gemini-color.png" class="vendor-logo" alt="Gemini"> | |
| <h3>Gemini</h3> | |
| </div> | |
| <p style="margin-top: 15px;">Gemini-1.5以及Gemini-2.0系列模型</p> | |
| </div> | |
| </div> | |
| <div class="more-button"> | |
| <a href="https://api.hongshi.dpdns.org/pricing" class="btn-more" target="_blank"> | |
| <span style="margin-right: 8px;">🗃️</span>查看完整模型列表 | |
| </a> | |
| </div> | |
| </section> | |
| <section class="section" style="background: rgba(255, 0, 255, 0.05);"> | |
| <h2 class="section-title">️ 应用接入</h2> | |
| <div class="grid"> | |
| <div class="card" data-link="https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web"> | |
| <div style="display: flex; align-items: center;"> | |
| <img src="https://voapi.yopanai.com/index/platforms/voapi-p-1.png" class="vendor-logo" alt="NextWeb"> | |
| <h3>ChatGPT-Next-Web</h3> | |
| </div> | |
| <p style="margin-top: 15px;">开箱即用的Web聊天应用</p> | |
| </div> | |
| <div class="card" data-link="https://github.com/lobehub/lobe-chat"> | |
| <div style="display: flex; align-items: center;"> | |
| <img src="https://voapi.yopanai.com/index/platforms/voapi-p-2.png" class="vendor-logo" alt="LobeChat"> | |
| <h3>LobeChat</h3> | |
| </div> | |
| <p style="margin-top: 15px;">一个快速、优雅、高效的对话UI</p> | |
| </div> | |
| <div class="card" data-link="https://github.com/ChatAnyTeam/ChatAny"> | |
| <div style="display: flex; align-items: center;"> | |
| <img src="https://voapi.yopanai.com/index/platforms/voapi-p-3.png" class="vendor-logo" alt="ChatAny"> | |
| <h3>ChatAny</h3> | |
| </div> | |
| <p style="margin-top: 15px;">一键拥有你自己的 ChatGPT+众多AI 的聚合网页服务</p> | |
| </div> | |
| </div> | |
| <br> | |
| <h4 align="center">以及所有支持OpenAI格式调用的UI</h4> | |
| </section> | |
| <section class="section"> | |
| <h2 class="section-title">️ 常见问题</h2> | |
| <div style="max-width: 800px; margin: 0 auto;"> | |
| <div class="faq-item"> | |
| <div class="faq-question" onclick="toggleFAQ(this)"> | |
| <h3>Q1: 收不到验证邮件怎么办?</h3> | |
| <div class="arrow">▼</div> | |
| </div> | |
| <div class="faq-answer"> | |
| <p style="margin-top: 15px;">A1: 请检查垃圾邮件箱,确保完成CF验证流程,目前支持QQ/Outlook邮箱。</p> | |
| </div> | |
| </div> | |
| <div class="faq-item"> | |
| <div class="faq-question" onclick="toggleFAQ(this)"> | |
| <h3>Q2: 如何获取技术支持?</h3> | |
| <div class="arrow">▼</div> | |
| </div> | |
| <div class="faq-answer"> | |
| <p style="margin-top: 15px;">A2: 邮件联系 <a href="mailto:hongshi_voapi@sina.cn" style="color: #00f3ff;">hongshi_voapi@sina.cn</a> 或加入官网QQ群。</p> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <script> | |
| const quotes = [ | |
| "代码如诗,连接未来。", | |
| "开放共享,智启新程。", | |
| "任何足够先进的技术都和魔法无异", | |
| "我们正处于一场技术变革的前夜,人工智能是这场变革的核心。", | |
| "人工智能将是下一个工业革命的引擎。" | |
| ]; | |
| function typeWriter(text, element) { | |
| let index = 0; | |
| element.innerHTML = ''; | |
| function type() { | |
| if (index < text.length) { | |
| element.innerHTML += text.charAt(index); | |
| index++; | |
| setTimeout(type, 100); | |
| } else { | |
| element.innerHTML += '<span style="animation: blink 1s infinite">|</span>'; | |
| } | |
| } | |
| type(); | |
| } | |
| function toggleFAQ(element) { | |
| const faqItem = element.closest('.faq-item'); | |
| faqItem.classList.toggle('active'); | |
| } | |
| document.querySelectorAll('.card').forEach(card => { | |
| card.addEventListener('click', function(e) { | |
| if (!e.target.closest('a')) { | |
| const url = this.dataset.link; | |
| if (url) window.open(url, '_blank'); | |
| } | |
| }); | |
| }); | |
| window.addEventListener('load', () => { | |
| const quote = quotes[Math.floor(Math.random() * quotes.length)]; | |
| typeWriter(quote, document.getElementById('dailyQuote')); | |
| const observer = new IntersectionObserver((entries) => { | |
| entries.forEach(entry => { | |
| if (entry.isIntersecting) { | |
| entry.target.style.opacity = 1; | |
| entry.target.style.transform = 'translateY(0)'; | |
| } | |
| }); | |
| }); | |
| document.querySelectorAll('.card, .faq-item').forEach(el => { | |
| el.style.opacity = 0; | |
| el.style.transform = 'translateY(30px)'; | |
| el.style.transition = 'all 0.6s cubic-bezier(0.4, 0, 0.2, 1)'; | |
| observer.observe(el); | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> |