HomeBrowseUpload
← Back to registry
// Skill profile

clinkding - Linkding Bookmark Manager CLI

name: clinkding

by daveonkels · published 2026-03-22

邮件处理开发工具加密货币
Total installs
0
Stars
★ 0
Last updated
2026-03
// Install command
$ claw add gh:daveonkels/daveonkels-clinkding
View on GitHub
// Full documentation

---

name: clinkding

description: Manage linkding bookmarks - save URLs, search, tag, organize, and retrieve your personal bookmark collection. Use when the user wants to save links, search bookmarks, manage tags, or organize their reading list.

homepage: https://github.com/daveonkels/clinkding

metadata: {"clawdis":{"emoji":"🔖","requires":{"bins":["clinkding"]},"install":[{"id":"homebrew","kind":"brew","formula":"daveonkels/tap/clinkding","bins":["clinkding"],"label":"Install clinkding (Homebrew)"},{"id":"go","kind":"go","module":"github.com/daveonkels/clinkding@latest","bins":["clinkding"],"label":"Install clinkding (Go)"}]}}

---

# clinkding - Linkding Bookmark Manager CLI

A modern Go-based CLI for managing bookmarks in [linkding](https://github.com/sissbruecker/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 https://your-linkding-instance.com
    clinkding config set token YOUR_API_TOKEN
    
    # Test connection
    clinkding config test

    Configuration File

    Location: `~/.config/clinkding/config.yaml`

    url: https://linkding.example.com
    token: your-api-token-here
    
    defaults:
      bookmark_limit: 100
      output_format: auto

    Environment Variables

    export LINKDING_URL="https://linkding.example.com"
    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 https://go.dev
    
    # With metadata
    clinkding bookmarks create https://go.dev \
      --title "Go Programming Language" \
      --tags "golang,programming,reference" \
      --description "Official Go website" \
      --unread
    
    # Check if URL already exists before creating
    clinkding bookmarks check https://go.dev

    #### 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: https://example.com"
    clinkding bookmarks create https://example.com \
      --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 <file>` | Config file path |

    | `-u, --url <url>` | Linkding instance URL |

    | `-t, --token <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 (`https://`)
  • Remove trailing slashes from URL
  • **Command-Specific Help:**

    clinkding bookmarks --help
    clinkding bookmarks create --help

    Links

  • **GitHub:** https://github.com/daveonkels/clinkding
  • **Linkding:** https://github.com/sissbruecker/linkding
  • **Homebrew:** `brew install daveonkels/tap/clinkding`
  • Installation

    Homebrew (macOS/Linux)

    brew install daveonkels/tap/clinkding

    Go Install

    go install github.com/daveonkels/clinkding@latest

    Binary Download

    Download from [releases](https://github.com/daveonkels/clinkding/releases) for your platform.

    Shell Completion

    # Bash
    clinkding completion bash > /etc/bash_completion.d/clinkding
    
    # Zsh
    clinkding completion zsh > "${fpath[1]}/_clinkding"
    
    # Fish
    clinkding completion fish > ~/.config/fish/completions/clinkding.fish

    ---

    **Built by:** [@daveonkels](https://github.com/daveonkels)

    **License:** MIT

    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 the `summarize` skill to get title and description:

    # Get page metadata
    summarize url https://example.com --format json

    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., `tools` over `generator`)
  • Check existing tags first: `clinkding tags list --plain | grep -i <keyword>`
  • Never create tags like: `awesome`, `cool`, `interesting`, `resources`, `tips`
  • **3. Create the bookmark with metadata**

    clinkding bookmarks create "https://example.com" \
      --title "Title from summarize" \
      --description "Summary from summarize (1-2 sentences)" \
      --tags "webdev,tools,reference"

    Example Workflow

    **User:** "Save this to linkding: https://github.com/awesome/project"

    **Agent Actions:**

    # 1. Check if already bookmarked
    clinkding bookmarks check https://github.com/awesome/project
    
    # 2. Get metadata (use summarize skill)
    summarize url https://github.com/awesome/project --format json
    
    # 3. Analyze content and infer tags
    # From summary: "A CLI tool for Docker container management"
    # Canonical tags: docker, devops, cli, tools
    
    # 4. Create bookmark
    clinkding bookmarks create https://github.com/awesome/project \
      --title "Awesome Project - Docker Container CLI" \
      --description "Command-line tool for managing Docker containers with enhanced features" \
      --tags "docker,devops,cli"

    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:

    # 1. Does URL already exist?
    clinkding bookmarks check <url>
    
    # 2. Do the tags exist?
    clinkding tags list --plain | grep -iE "^(tag1|tag2|tag3)$"
    
    # 3. Are we using canonical tags?
    # Cross-reference against the 263 canonical tags
    # Never create new tags without explicit user request

    User Requests to Save Multiple Links

    If user provides multiple URLs:

    # Process each URL separately with metadata extraction
    for url in url1 url2 url3; do
      # Get metadata
      # Infer tags
      # Create bookmark
    done

    Updating Existing Bookmarks

    If user says "Update that bookmark" or "Add tags to my last save":

    # Get most recent bookmark
    recent_id=$(clinkding bookmarks list --limit 1 --plain | cut -f1)
    
    # Add tags (don't remove existing ones unless asked)
    clinkding bookmarks update $recent_id --add-tags "new-tag"
    
    # Update description
    clinkding bookmarks update $recent_id --description "Updated notes"

    Key Principles

    1. **Always fetch metadata** - Use `summarize` to 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.

    // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band