From fd6dafb4db622cdfc93e7338fb35e160526bc00b Mon Sep 17 00:00:00 2001 From: m5r Date: Thu, 25 Sep 2025 19:59:38 +0200 Subject: [PATCH] document iOS shortcut --- Clean URLs.shortcut | Bin 0 -> 22167 bytes README.md | 56 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 Clean URLs.shortcut diff --git a/Clean URLs.shortcut b/Clean URLs.shortcut new file mode 100644 index 0000000000000000000000000000000000000000..83e49c9c2d9411f52b1ae2e625efccacfec9ec8a GIT binary patch literal 22167 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 BuJZr@ literal 0 HcmV?d00001 diff --git a/README.md b/README.md index e8bed56..c9eb38a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,57 @@ A Cloudflare Worker that removes tracking parameters from URLs using the officia ## Usage -### Clean URLs +### iOS Shortcut Integration + +For iPhone and iPad users, we provide a convenient iOS Shortcut that integrates directly with the system share sheet, allowing you to clean URLs from any app with just a tap. + +#### Installation + +Get it from the iCloud link: https://www.icloud.com/shortcuts/8e8fdf8350f249e488ce1fdbeab4b8b3 +When you open the link, iOS will prompt you to install the shortcut, simply tap **Add Shortcut** to complete the installation. + +The shortcut file is also available in this repository as `Clean URLs.shortcut` for reference. + +#### First Use & Permissions + +When you first share a URL using the shortcut, iOS will display a privacy protection dialog: + +> **Allow "Clean URLs" to send 1 item to "url-cleaner.m5r.workers.dev"?** +> +> This might allow "Clean URLs" to share this content with "url-cleaner.m5r.workers.dev" and potentially other websites. + +**Options:** +- **Don't Allow** - Blocks the request (shortcut won't work) +- **Allow Once** - Permits this single request only +- **Always Allow** - Remembers your choice for future uses (recommended) + +**What this means:** iOS is asking permission for the shortcut to send your shared URL to the URL cleaner service. This is exactly what you want - the shortcut needs to send the URL to be cleaned. Choose **"Always Allow"** for the best experience. + +#### How to Use + +1. **Share a URL** from any app (Safari, Twitter, Reddit, Messages, etc.) +2. **Find "Clean URLs"** in the share sheet (may be in the "More" section initially) +3. **Tap the shortcut** - it will clean the URL and copy the result to your clipboard +4. **Paste the cleaned URL** wherever you need it + +#### Troubleshooting + +**Shortcut not appearing in share sheet?** +- Look in the "More" section (scroll right in the bottom row) +- Open Shortcuts app → Settings → Share Sheet → ensure "Clean URLs" is enabled + +**Getting permission denied errors?** +- Open Shortcuts app → find "Clean URLs" → tap the details icon (ⓘ) → **Privacy** +- Under "Allow Get Contents of URL to use", ensure the apps you're sharing from are allowed +- You can grant permission to specific apps or choose "Always Allow" + +**Cleaned URL not copying to clipboard?** +- Open Shortcuts app → find "Clean URLs" → tap the details icon (ⓘ) → **Privacy** +- Ensure clipboard access is enabled for the shortcut + +### API + +#### Clean URLs **API Endpoint**: `GET /?url=` @@ -22,7 +72,7 @@ curl "https://your-worker.workers.dev/?url=https%3A//example.com/page%3Futm_sour # Returns: https://example.com/page ``` -### Purge Cache +#### Purge Cache **API Endpoint**: `DELETE /?url=` @@ -34,7 +84,7 @@ curl -X DELETE "https://your-worker.workers.dev/?url=https%3A//example.com%3Futm ## Features -- **Official ClearURLs Rules** - Uses the same 250+ provider rule database as the ClearURLs browser extension +- **Same ClearURLs Rules** - Uses the same 250+ provider rule database as the ClearURLs browser extension - **Live Rule Updates** - Automatically fetches and validates rules from ClearURLs API with SHA256 verification - **Query & Fragment Cleaning** - Removes tracking from both URL parameters (`?utm_source=test`) and fragments (`#utm_campaign=test`) - **Redirect Following** - Unwraps shortened URLs and tracking redirects (up to 5 levels)