{"id":51348262,"url":"https://github.com/mateconpizza/gurl","last_synced_at":"2026-07-02T13:42:13.673Z","repository":{"id":231416399,"uuid":"773914431","full_name":"mateconpizza/gurl","owner":"mateconpizza","description":"🔗 Extract URLs from STDIN","archived":false,"fork":false,"pushed_at":"2026-04-11T16:54:33.000Z","size":125,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-04T18:43:43.733Z","etag":null,"topics":["mutt","neomutt","st-terminal","suckless","suckless-terminal","urlscan","urlview"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mateconpizza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-03-18T16:09:02.000Z","updated_at":"2026-04-11T16:54:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"7d0eab91-a411-40f3-a431-a2cfea73d731","html_url":"https://github.com/mateconpizza/gurl","commit_stats":null,"previous_names":["haaag/gourl","mateconpizza/gourl","mateconpizza/gurl"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/mateconpizza/gurl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateconpizza%2Fgurl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateconpizza%2Fgurl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateconpizza%2Fgurl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateconpizza%2Fgurl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mateconpizza","download_url":"https://codeload.github.com/mateconpizza/gurl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mateconpizza%2Fgurl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35050017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mutt","neomutt","st-terminal","suckless","suckless-terminal","urlscan","urlview"],"created_at":"2026-07-02T13:42:12.971Z","updated_at":"2026-07-02T13:42:13.658Z","avatar_url":"https://github.com/mateconpizza.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003e\u003cb\u003e\u003cspan style=\"font-size: 0.8em\"\u003e🔗\u003c/span\u003e gurl\u003c/b\u003e\u003c/h1\u003e\n\n\u003cimg align=\"center\" width=\"240px\" src=\"https://raw.githubusercontent.com/tenntenn/gopher-stickers/refs/heads/master/png/cheer.png\" alt=\"Cheer gopher logo\"\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003csub\u003e💙 Gopher image by \u003ca href=\"https://github.com/tenntenn/gopher-stickers/\"\u003eTakuya Ueda\u003c/a\u003e\u003c/sub\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cbr\u003e\n\n![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/mateconpizza/gurl)\n![Linux](https://img.shields.io/badge/-Linux-grey?logo=linux)\n![Release](https://img.shields.io/github/v/release/mateconpizza/gurl)\n![Go Report Card](https://goreportcard.com/badge/github.com/mateconpizza/gurl)\n![GoDoc](https://pkg.go.dev/badge/github.com/mateconpizza/gurl.svg)\n\n\u003c/div\u003e\n\n\u003c/div\u003e\n\n**gurl** is a [golang](https://golang.org/) \u003e= `v1.24` program that reads `URLs` and other common identifiers from standard input `(STDIN)`\n\nIt is designed to work with any terminal that can `pipe` visible text to external programs, such as [st](https://st.suckless.org/), [alacritty](https://alacritty.org/), [kitty](https://sw.kovidgoyal.net/kitty/), [wezterm](https://wezterm.org/), or similar.\n\nThe primary use case is piping the currently visible terminal output into `gurl`.\nI'm using [st](https://st.suckless.org/) terminal with [externalpipe](https://st.suckless.org/patches/externalpipe/) patch to `read/pipe` current visible text to this program.\n\n### Features\n\n- Read input from `STDIN`\n- Extract `URLs` and other `identifiers`\n- Remove `duplicate` results\n- Support `custom` regular expressions\n- Optional `index` prefix for results\n- Optional extractor-based `prefixes`\n- Limit number of items\n\n### Built-in Extractors\n\n| Name     | Description                                                                      |\n| -------- | -------------------------------------------------------------------------------- |\n| email    | Email addresses                                                                  |\n| hash     | Short hexadecimal identifiers (7–12 chars)                                       |\n| hexcolor | HEX colors (CSS/Web)                                                             |\n| ipv4     | IPv4 addresses                                                                   |\n| ipv6     | IPv6 addresses                                                                   |\n| domain   | Domain names                                                                     |\n| mac      | MAC addresses                                                                    |\n| path     | File paths (absolute, relative, file://)                                         |\n| raw      | Raw input lines                                                                  |\n| sha      | SHA-1 or SHA-256 hashes                                                          |\n| url      | Web URLs (http, https, ftp, www)                                                 |\n| uuid     | UUIDs                                                                            |\n| all      | Enable all built-in extractors, including the ones added with the `--regex` flag |\n\n### Installation\n\n```sh\ngo install github.com/mateconpizza/gurl@latest\n```\n\n\u003csub\u003e_To uninstall the program remove the binary in your `go env GOPATH`_\u003c/sub\u003e\n\n### Usage\n\n```bash\n$ gurl -h\nExtract URLs from STDIN\n\nUsage:\n  gurl [options]\n\nOptions:\n  -t, --type STR            Comma-separated extractor types (default: url)\n  -E, --regex NAME=REGEX    Register a custom extractor\n  -l, --list                List built-in extractors\n  -n, --lines               Limit number of results\n  -p, --prefix              Prefix results with extractor name\n  -i, --index               Prefix results with index number\n  -V, --version             Show version and exit\n  -v, --verbose             Enable verbose logging\n  -h, --help                Show this help message\n```\n\n#### Examples\n\n```sh\n$ gurl --prefix --type hash,sha,url,uuid,ipv4,mac \u003c input.txt\nhash:865ed41\nsha:abb9a11544fbd3d2a283ced39c4400cd66daf3f5\nurl:https://github.com/mateconpizza/gm\nuuid:3510b822-56f4-4f6d-a773-05efc0baa7e2\nipv4:1.1.1.1\nmac:ff:ff:ff:ff:ff:ff\n...\n\n# Extract short commit hash\n$ git log --oneline | fzf --multi | gurl -t hash\n46c4bb9\n4dada2e\n865ed41\n...\n```\n\n### Using `-E|--regex` Flag\n\nThe flag `-E|--regex` can be use for `custom extractor`.\n\n```bash\n# list existing remotes\n$ gurl -t jira -E jira='^PROJ-\\d+$' \u003c data/jira.txt\nPROJ-1\nPROJ-12\nPROJ-123\nPROJ-0001\nPROJ-99999\n...\n```\n\n#### Regex Syntax\n\nCustom extractors use Go `RE2` syntax.\n\n- Syntax Reference: [Google RE2\n  Syntax](https://github.com/google/re2/wiki/Syntax)\n- Testing Tool: [regex101](https://regex101.com)\n\n## Configuration\n\nThe configuration file is a JSON document where you can define custom regex extractors or modify built-in ones.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eExample config.json\u003c/strong\u003e\u003c/summary\u003e\n\n```json\n{\n  \"extractors\": {\n    \"jira\": {\n      \"regex\": \"\\\\b[A-Z]+-[0-9]+\\\\b\",\n      \"prefix\": \"jira:\",\n      \"description\": \"JIRA issue keys\"\n    },\n    \"reddit\": {\n      \"regex\": \"^\\\\s*(\\\\S+)\\\\s+/r/\",\n      \"prefix\": \"red:\",\n      \"description\": \"Tuir's reddit users\"\n    }\n  }\n}\n```\n\n\u003c/details\u003e\n\n### ⭐ Related Projects\n\n- [urlscan](https://github.com/firecat53/urlscan) - Designed to integrate with the \"mutt\" mailreader\n- [urlview](https://github.com/sigpipe/urlview) - Extract URLs from a text file and allow the user to select via a menu\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmateconpizza%2Fgurl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmateconpizza%2Fgurl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmateconpizza%2Fgurl/lists"}