AI prompts
base on 无需服务器,一键部署,快速使用自建节点分享URL进行订阅转换,提供灵活的自定义选项,支持SingBox/Clash/V2Ray/Xray <div align="center">
<h1><b>Sublink Worker</b></h1>
<h5><i>Best Practice for Serverless Self-Deployed Subscription Conversion Tool</i></h5>
<a href="https://trendshift.io/repositories/12291" target="_blank">
<img src="https://trendshift.io/api/badge/repositories/12291" alt="7Sageer%2Fsublink-worker | Trendshift" width="250" height="55"/>
</a>
<!-- <p>
<a href="https://sublink-worker.sageer.me">https://sublink-worker.sageer.me</a>
</p> -->
<br>
<p>
<a href="https://dash.cloudflare.com/?to=/:account/workers-and-pages/create">
<img src="https://deploy.workers.cloudflare.com/button" alt="Deploy to Cloudflare Workers"/>
</a>
</p>
<p><a href="/docs/README_CN.md">中文文档</a></p>
</div>
## 🚀 Quick Start
### Quick Deployment
- Fork this project, click the `Deploy to Cloudflare` button above
- Select your repository in the `Import Repository` section (you need to link your GitHub account)
- Change the `Deploy Command` as follows, then select `Save and Deploy`
``` bash
npm run deploy
```
## ✨ Features
### Supported Protocols
- ShadowSocks
- VMess
- VLESS
- Hysteria2
- Trojan
- TUIC
### Core Features
- Support for importing Base64 http/https subscription links and various protocol sharing URLs
- Pure JavaScript + Cloudflare Worker implementation, one-click deployment, ready to use
- Support for fixed/random short link generation (based on KV)
- Light/Dark theme toggle
- Flexible API, supporting script operations
- Support for Chinese, English, and Persian languages
### Client Support
- Sing-Box
- Clash
- Xray/V2Ray
### Web Interface Features
- User-friendly operation interface
- Various predefined rule sets
- Customizable policy groups for geo-site, geo-ip, ip-cidr, and domain-suffix
## 📖 API Documentation
For detailed API documentation, please refer to [APIDoc.md](/docs/APIDoc.md)
### Main Endpoints
- `/singbox` - Generate Sing-Box configuration
- `/clash` - Generate Clash configuration
- `/xray` - Generate Xray configuration
- `/shorten` - Generate short links
## 📝 Recent Updates
### 2025-05-02
- Automatic renaming is now applied when proxies with the same name exist ([#175](https://github.com/7Sageer/sublink-worker/pull/175))
- Fixed DNS configuration for Singbox ([#174](https://github.com/7Sageer/sublink-worker/pull/174))
## 🔧 Project Structure
```
.
├── index.js # Main server logic, handles request routing
├── BaseConfigBuilder.js # Build base configuration
├── SingboxConfigBuilder.js # Build Sing-Box configuration
├── ClashConfigBuilder.js # Build Clash configuration
├── ProxyParsers.js # Parse URLs of various proxy protocols
├── utils.js # Provide various utility functions
├── htmlBuilder.js # Generate Web interface
├── style.js # Generate CSS for Web interface
├── config.js # Store configuration information
└── docs/
├── APIDoc.md # API documentation
├── UpdateLogs.md # Update logs
├── FAQ.md # Frequently asked questions
└── BaseConfig.md # Basic configuration feature introduction
```
## 🤝 Contribution
Issues and Pull Requests are welcome to improve this project.
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## ⚠️ Disclaimer
This project is for learning and exchange purposes only. Please do not use it for illegal purposes. All consequences resulting from the use of this project are solely the responsibility of the user and are not related to the developer.
## 💰 Sponsorship
<div align="center">
<h3>Thanks to the following sponsors for their support of this project</h3>
<table border="0">
<tr>
<td>
<a href="https://yxvm.com/" target="_blank" title="YXVM">
<img src="https://image.779477.xyz/yxvm.png" alt="YXVM" height="60" hspace="20"/>
</a>
</td>
<td>
<a href="https://github.com/NodeSeekDev/NodeSupport" target="_blank" title="NodeSupport">
<img src="https://image.779477.xyz/ns.png" alt="NodeSupport" height="60" hspace="20"/>
</a>
</td>
</tr>
</table>
<p><b>NodeSupport has sponsored this project, thank you for your support!</b></p>
<p>If you would like to sponsor this project, please contact the developer <a href="https://github.com/7Sageer" style="text-decoration: none;">@7Sageer</a></p>
</div>
## ⭐ Star History
Thanks to everyone who has starred this project! 🌟
<a href="https://star-history.com/#7Sageer/sublink-worker&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=7Sageer/sublink-worker&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=7Sageer/sublink-worker&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=7Sageer/sublink-worker&type=Date" />
</picture>
</a>
", Assign "at most 3 tags" to the expected json: {"id":"12291","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"