clinkding
Manage linkding bookmarks - save URLs, search, tag, organize.
Installation
npx clawhub@latest install clinkdingView the full skill documentation and source below.
Documentation
clinkding - Linkding Bookmark Manager CLI
A modern Go-based CLI for managing bookmarks in [linkding](), a self-hosted bookmark manager.
What This Does
Linkding is a self-hosted bookmark manager (like Pocket, Instapaper). clinkding is the CLI that lets you manage your bookmarks from the terminal or via AI agents.
Think of it as:
- Save for later - Capture URLs you want to read
- Searchable library - Full-text search across titles, descriptions, tags
- Organized collections - Tag and bundle related bookmarks
- Personal archive - Keep important links with notes and metadata
Quick Start
Initial Setup
# Interactive configuration
clinkding config init
# Or manually configure
clinkding config set url
clinkding config set token YOUR_API_TOKEN
# Test connection
clinkding config test
Configuration File
Location: ~/.config/clinkding/config.yaml
url:
token: your-api-token-here
defaults:
bookmark_limit: 100
output_format: auto
Environment Variables
export LINKDING_URL=""
export LINKDING_TOKEN="your-api-token-here"
Core Commands
Bookmarks
List & Search
# List recent bookmarks
clinkding bookmarks list
# Search by keyword
clinkding bookmarks list --query "golang tutorial"
# Filter by tag
clinkding bookmarks list --query "tag:programming"
# Recent bookmarks (last 7 days)
clinkding bookmarks list --added-since "7d"
# Unread bookmarks
clinkding bookmarks list --query "unread:yes"
# JSON output for scripting
clinkding bookmarks list --json
# Plain text (tab-separated)
clinkding bookmarks list --plain
Create Bookmarks
# Simple bookmark
clinkding bookmarks create
# With metadata
clinkding bookmarks create \
--title "Go Programming Language" \
--tags "golang,programming,reference" \
--description "Official Go website" \
--unread
# Check if URL already exists before creating
clinkding bookmarks check
Update Bookmarks
# Update title
clinkding bookmarks update 42 --title "New Title"
# Add tags
clinkding bookmarks update 42 --add-tags "important,work"
# Remove tags
clinkding bookmarks update 42 --remove-tags "old-tag"
# Mark as read
clinkding bookmarks update 42 --read
# Update description
clinkding bookmarks update 42 --description "Updated notes"
Get Bookmark Details
# Full details
clinkding bookmarks get 42
# JSON output
clinkding bookmarks get 42 --json
Archive & Delete
# Archive (hide from main list)
clinkding bookmarks archive 42
# Unarchive
clinkding bookmarks unarchive 42
# Delete permanently
clinkding bookmarks delete 42
Tags
# List all tags
clinkding tags list
# Create a tag
clinkding tags create "golang"
# Get tag details
clinkding tags get 1
# Plain text output
clinkding tags list --plain
Bundles
Bundles are collections of related bookmarks.
# List bundles
clinkding bundles list
# Create a bundle
clinkding bundles create "Go Resources" \
--description "Everything related to Go programming"
# Update a bundle
clinkding bundles update 1 --name "Go Lang Resources"
# Get bundle details
clinkding bundles get 1
# Delete a bundle
clinkding bundles delete 1
Assets
Upload and manage file attachments for bookmarks.
# List assets for a bookmark
clinkding assets list 42
# Upload a file
clinkding assets upload 42 ~/Documents/screenshot.png
# Download an asset
clinkding assets download 42 1 -o ./downloaded-file.png
# Delete an asset
clinkding assets delete 42 1
User Profile
# Get user profile info
clinkding user profile
Agent Usage Patterns
Save URL from Conversation
# User: "Save this for later: "
clinkding bookmarks create \
--title "Article Title" \
--description "Context from conversation" \
--tags "topic,context"
Search Bookmarks
# User: "Find my golang bookmarks"
clinkding bookmarks list --query "golang"
# User: "Show me unread programming articles"
clinkding bookmarks list --query "tag:programming unread:yes"
# User: "What did I save last week?"
clinkding bookmarks list --added-since "7d"
Organize & Tag
# User: "Tag bookmark 42 as important"
clinkding bookmarks update 42 --add-tags "important"
# User: "Create a bundle for my AI research links"
clinkding bundles create "AI Research" \
--description "Machine learning and AI papers"
Retrieve for Reading
# User: "Give me something to read"
clinkding bookmarks list --query "unread:yes" --limit 5
# User: "Show me my golang tutorials"
clinkding bookmarks list --query "tag:golang tag:tutorial"
Output Formats
Auto (Default)
Human-friendly tables and colors for terminal display.JSON
clinkding bookmarks list --json
Machine-readable for scripting and agent parsing.
Plain Text
clinkding bookmarks list --plain
Tab-separated values for pipe-friendly parsing.
Relative Date Filtering
Supports human-friendly time ranges:
# Last 24 hours
clinkding bookmarks list --added-since "24h"
# Last 7 days
clinkding bookmarks list --added-since "7d"
# Last 6 months
clinkding bookmarks list --modified-since "180d"
Supported units: h (hours), d (days), y (years)
Common Workflows
Morning Reading Routine
# Check unread bookmarks
clinkding bookmarks list --query "unread:yes"
# Get top 5 most recent
clinkding bookmarks list --limit 5
Save from Clipboard
# macOS
pbpaste | xargs -I {} clinkding bookmarks create {}
# Linux
xclip -o | xargs -I {} clinkding bookmarks create {}
Batch Operations
# Tag multiple bookmarks
for id in 42 43 44; do
clinkding bookmarks update $id --add-tags "important"
done
# Archive old unread bookmarks
clinkding bookmarks list --query "unread:yes" --added-since "30d" --plain | \
while read id _; do
clinkding bookmarks archive "$id"
done
Backup Bookmarks
# Export all bookmarks as JSON
clinkding bookmarks list --json > bookmarks-backup-$(date +%Y%m%d).json
# Export specific tag
clinkding bookmarks list --query "tag:important" --json > important.json
Global Flags
Available on all commands:
| Flag | Description |
-c, --config | Config file path |
-u, --url | Linkding instance URL |
-t, --token | API token |
--json | Output as JSON |
--plain | Output as plain text |
--no-color | Disable colors |
-q, --quiet | Minimal output |
-v, --verbose | Verbose output |
Exit Codes
| Code | Meaning |
| 0 | Success |
| 1 | General error (API/network) |
| 2 | Invalid usage (bad flags/args) |
| 3 | Authentication error |
| 4 | Not found |
| 130 | Interrupted (Ctrl-C) |
Troubleshooting
Test Configuration
# Verify settings
clinkding config show
# Test connection
clinkding config test
Common Issues
Authentication Error:
- Verify API token in linkding web interface
- Check URL includes protocol (
) - Remove trailing slashes from URL **Command-Specific Help:** __CODE_BLOCK_24__ ## Links - **GitHub:** - **Linkding:** - **Homebrew:**brew install daveonkels/tap/clinkding## Installation ### Homebrew (macOS/Linux) __CODE_BLOCK_25__ ### Go Install __CODE_BLOCK_26__ ### Binary Download Download from [releases]() for your platform. ## Shell Completion __CODE_BLOCK_27__ --- **Built by:** [@daveonkels]() ## Agent Workflows for Smart Bookmark Creation ### Adding URLs with Automatic Metadata When a user says "Add this to linkding" or "Save this URL", follow this workflow: **1. Extract metadata from the URL** Use thesummarizeskill to get title and description: __CODE_BLOCK_28__ This returns structured data with: - Title - Description/summary - Main content **2. Infer appropriate tags from content** Map the content to **existing canonical tags only**. Do NOT create new tags. Use this canonical tag list (263 tags total): - **Tech:** webdev, design, programming, ai, cloud, devops, docker, linux, networking, security, privacy - **Content:** content, media, photography, video, audio, books, podcasting - **Business:** business, marketing, ecommerce, finance, career, productivity - **Home:** smart-home, home-assistant, esphome, iot, home-improvement - **Tools:** tools, cli, git, github, editor, reference, documentation - **Data:** data, analytics, mysql, nosql - **Communication:** communication, email, messaging, slack - **Education:** education, guide, howto, research, testing - **Locations:** texas, seattle, dallas (use sparingly) **Tag Selection Rules:** - Use 2-5 tags maximum - Choose the most specific applicable tags - If unsure, default to broader categories (e.g.,toolsovergenerator) - Check existing tags first:clinkding tags list --plain | grep -i- Never create tags like:awesome,cool,interesting,resources,tips**3. Create the bookmark with metadata** __CODE_BLOCK_29__ ### Example Workflow **User:** "Save this to linkding: " **Agent Actions:** __CODE_BLOCK_30__ ### Tag Mapping Heuristics Use these rules to map content → canonical tags: | Content Type | Canonical Tags | |--------------|----------------| | Web development, HTML, CSS, JavaScript |webdev,css,javascript| | React, frameworks, frontend |webdev,react| | Design, UI/UX, mockups |design| | Python, Go, Ruby code |programming,python/ruby| | Docker, K8s, DevOps |docker,devops,cloud| | Home automation, ESP32, sensors |smart-home,esphome,iot| | AI, ML, LLMs |ai,llm| | Productivity tools, workflows |productivity,tools| | Finance, investing, crypto |finance| | Marketing, SEO, ads |marketing| | Shopping, deals, stores |ecommerce| | Tutorials, guides, docs |guide,howto,documentation| | Security, privacy, encryption |security,privacy| | Local (DFW/Seattle) |texas,seattle| ### Validation Before Creating Always run these checks: __CODE_BLOCK_31__ ### User Requests to Save Multiple Links If user provides multiple URLs: __CODE_BLOCK_32__ ### Updating Existing Bookmarks If user says "Update that bookmark" or "Add tags to my last save": __CODE_BLOCK_33__ ### Key Principles 1. **Always fetch metadata** - Usesummarizeto get good titles/descriptions 2. **Use existing tags** - Never create new tags without checking canonical list 3. **Be selective** - 2-5 tags max, choose the most specific applicable 4. **Validate first** - Check for duplicates before creating 5. **Provide context** - Include brief description explaining why it's useful --- ## Current Canonical Tag Structure Dave's linkding instance has **263 canonical tags** after consolidation from 17,189 duplicates. Top categories (by bookmark count): -pinboard(4,987) - Legacy import tag -ifttt(2,639) - Legacy import tag -webdev(1,679) - Web development -design(561) - Design/UI/UX -content(416) - Content/writing -cloud(383) - Cloud/hosting/SaaS -business(364) - Business/strategy -ecommerce(308) - Shopping/marketplace -smart-home(295) - Home automation -productivity` (291) - Productivity tools
Golden Rule: When in doubt, use broader existing tags rather than creating new specific ones.