OpenClaw Sub-agent 54a416c63c feat(template links): Sketch-style visual parameter builder
- link_form: template builder under the URL field — preset param chips
  (q/id/page/category/keyword/lang, CN labels) click to insert ?q={q} with
  smart ?/& separators; auto-parsed parameter rows (name + default input +
  remove); custom params (name + default -> append); live dark preview
  filling defaults (green) and flagging required (red); chips grey out
  when used; hidden on Custom/Action tabs; edits existing templates
- redirect_to_original: map GET query params (?q=weather) by name into
  template placeholders, keep path-param backward compat (go/alias/x
  fills every unfilled param), defaults otherwise; query wins over path
- tests: +5 template redirect cases (query map, multi-param, defaults,
  path compat, query-over-path)
2026-08-02 17:28:32 +10:00
2026-07-19 22:03:33 +10:00
2026-03-21 16:41:14 +11:00
2025-08-18 21:20:14 +10:00
2026-03-30 19:51:12 +11:00
2026-07-31 11:51:05 +10:00
2026-05-11 22:57:25 +10:00
2026-06-23 16:25:59 +10:00
2026-07-30 13:25:36 +10:00
2026-07-30 13:25:36 +10:00
2024-11-17 11:11:08 +11:00
2025-11-04 22:22:40 +11:00
2026-04-01 21:33:07 +11:00
2026-07-30 17:03:22 +10:00
2025-11-05 20:56:35 +11:00
2024-11-18 15:47:35 +11:00
2026-07-30 15:56:31 +10:00
2024-11-04 15:20:18 +11:00
2026-03-21 16:41:14 +11:00
2026-03-30 19:51:12 +11:00
2026-07-30 15:56:31 +10:00
2026-01-18 10:28:00 +11:00
2026-01-18 10:28:00 +11:00

URL Manager

A URL management tool that helps you organize and access your links efficiently.

Features

  • Create and manage short links
  • Template links with dynamic parameters
  • Bookmark pages with automatic title and summary extraction
  • Screenshot capture for bookmarked pages
  • Advanced search capabilities
  • REST API access
  • In-process background task scheduling (APScheduler)
  • Network security scanner (NetScan)

Prerequisites

  • Python 3.12+
  • uv — fast Python package manager
  • just — command runner (brew install just)
  • Docker + Docker Compose (for containerised setup)

Quick Start (Local)

# 1. Install dependencies and apply migrations
just install

# 2. Install Playwright browsers (for screenshot capture)
just install-browsers

# 3. Run the full stack (Django + Tailwind watcher)
just dev-all

The app will be available at http://localhost:8000

Run just (no arguments) to see all available recipes.

Local Development Commands

Recipe Description
just dev Run Django server + Tailwind together
just tailwind Run Tailwind CSS watcher (standalone)
just migrate Apply pending migrations
just makemigrations Generate new migrations
just shell Open Django shell
just dbshell Open raw DB shell
just superuser Create a superuser
just build-css Build minified Tailwind CSS
just collectstatic Collect static files
just test Run tests
just compilemessages Compile i18n translation files
just makemessages Extract translatable strings (zh_Hans)

Docker Commands

Recipe Description
just docker-build Build images
just docker-start Start all services (detached)
just docker-stop Stop all services
just docker-restart Restart services
just docker-logs Tail logs (all services)
just docker-logs web Tail logs for a specific service
just docker-shell Shell into the web container
just docker-migrate Run migrations inside Docker
just docker-static Collect static files inside Docker
just docker-rebuild web Rebuild and restart a specific service

Docker Services

  • web — Django server on port 8000 (APScheduler runs in-process)
  • node — Tailwind CSS compiler

Usage

  1. Create a new link at /create/
  2. Access a link at http://localhost:8000/your-alias
  3. For template links use {param, default=value} syntax in the URL

Managing Pages (Bookmarks)

  1. Add a bookmark at /ui/pages/new/ — title and summary are auto-extracted
  2. Screenshots are captured automatically in the background
  3. View all bookmarks at /ui/pages/

X (Twitter) Bookmarks

The app includes an offline archive of X.com bookmarks. Export your bookmarks from X, then import them for full-text search, filtering, and browsing — no further API calls needed.

1. Export bookmarks from X

Use x-bookmarks-exporter to download your X bookmarks as JSON files:

# Install
git clone https://github.com/nickcam/x-bookmarks-exporter.git
cd x-bookmarks-exporter
npm install

# Configure — copy .env.example to .env and fill in your X credentials
cp .env.example .env

# Export (produces individual <tweet_id>.json files in data/bookmarks/)
npm run export

The exporter produces either:

  • A directory of <tweet_id>.json files (one per bookmark), or
  • A bookmarks_index.json file containing all bookmarks in a {"bookmarks": [...]} wrapper.

Both formats are supported.

2. Import into URL Manager

Via management command:

# Import a directory of JSON files
just import-bookmarks data/bookmarks/

# Import an index file
just import-bookmarks data/bookmarks_index.json

# Import a single file
just import-bookmarks data/single_bookmark.json

# Wipe existing bookmarks first, then re-import
just import-bookmarks data/bookmarks/ --clear

The command reports created, updated, unchanged, and skipped counts. Re-importing the same data is safe — unchanged items are detected via content hash and skipped.

Via REST API:

# Bulk import (export-format payload)
curl -X POST http://localhost:8000/api/bookmarks/import/ \
  -H "Content-Type: application/json" \
  -d '{"bookmarks": [{...}, {...}]}'

# Bulk upsert (flat array, either format)
curl -X POST http://localhost:8000/api/bookmarks/bulk/ \
  -H "Content-Type: application/json" \
  -d '[{"tweet_id": "123", "text": "hello"}, ...]'

3. Browse imported bookmarks

  • Web UI: visit /ui/bookmarks/ — filter by media type, search by text/author, view full details
  • API: GET /api/bookmarks/ with filters like ?q=search&has_video=true&author=screen_name
  • API docs: /ui/api-docs/ (Bookmarks section)

Dedup behaviour

Each bookmark is keyed by tweet_id. On re-import:

  • New tweet_id → created
  • Existing tweet_id, content changed → updated (engagement counts, media, etc. refreshed)
  • Existing tweet_id, content identicalunchanged (only last_imported_at bumped; no save/signal overhead)

Network Scanner (NetScan)

Available at /ui/netscan/. Create a scan profile to automatically monitor your home network for security issues (router exposure, DNS, TLS certs, camera access).

API

  • List pages: GET /api/pages/
  • Full API docs: /ui/api-docs/

Architecture

core/         — Django project config, APScheduler setup
links/        — Main app: links, pages, tags, posts, collections
netscan/      — Network security scanner
templates/    — Base HTML templates

Background tasks (screenshot capture, page metadata extraction, network scans) run via APScheduler in-process — no separate worker or Redis needed.

Dependencies

Managed with uv via pyproject.toml.

# Add a new package
uv add package-name

# Sync environment from lockfile
uv sync

Favicon

Generated using the Zen Tokyo Zoo font (https://fonts.gstatic.com/s/zentokyozoo/).

Image Resizing (Cloudflare)

S
Description
No description provided
Readme
27 MiB
Languages
HTML 45.3%
Python 37.5%
Swift 9.8%
JavaScript 5.3%
CSS 1.5%
Other 0.5%