{"id":13639751,"url":"https://github.com/robkorn/urbit-content-archiver","last_synced_at":"2026-04-03T20:06:57.299Z","repository":{"id":54197782,"uuid":"334402055","full_name":"robkorn/urbit-content-archiver","owner":"robkorn","description":"A CLI application which allows you to archive Urbit channels and all linked content in them.","archived":false,"fork":false,"pushed_at":"2021-10-30T10:04:04.000Z","size":251,"stargazers_count":32,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-08-03T01:15:16.856Z","etag":null,"topics":["archiver","rust","ship","urbit"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robkorn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-30T11:59:55.000Z","updated_at":"2023-09-27T21:11:56.000Z","dependencies_parsed_at":"2022-08-13T09:00:38.751Z","dependency_job_id":null,"html_url":"https://github.com/robkorn/urbit-content-archiver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robkorn%2Furbit-content-archiver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robkorn%2Furbit-content-archiver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robkorn%2Furbit-content-archiver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robkorn%2Furbit-content-archiver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robkorn","download_url":"https://codeload.github.com/robkorn/urbit-content-archiver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223810689,"owners_count":17206814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["archiver","rust","ship","urbit"],"created_at":"2024-08-02T01:01:04.311Z","updated_at":"2026-04-03T20:06:57.248Z","avatar_url":"https://github.com/robkorn.png","language":"Rust","funding_links":[],"categories":["Archive"],"sub_categories":["Tools"],"readme":"![](images/title.png)\n\nThe Urbit Content Archiver is a small CLI application that exports channels from your Urbit ship and auto-downloads any directly linked content locally in order to preserve and archive the content for the future. The archiver supports media files (jpg, png, gif, mp3, flac, mkv, mp4, flc, etc.), archives (zip, 7z, tar, etc.), torrents, and text-based files (epub, pdf, doc, txt, etc.)\n\nThis application uses the [Rust Urbit HTTP API Crate](https://crates.io/crates/urbit-http-api).\n\n[![awesome urbit badge](https://img.shields.io/badge/~-awesome%20urbit-lightgrey)](https://github.com/urbit/awesome-urbit)\n\n## Using The Urbit Content Archiver\n\n```\nUsage:\n        urbit-content-archiver chat \u003cship\u003e \u003cname\u003e [--config=\u003cfile_path\u003e --output=\u003cfolder_path\u003e]\n        urbit-content-archiver notebook \u003cship\u003e \u003cname\u003e [--config=\u003cfile_path\u003e --output=\u003cfolder_path\u003e]\nOptions:\n      --config=\u003cfile_path\u003e  Specify a custom path to a YAML ship config file.\n      --output=\u003cfolder_path\u003e  Specify a custom path where the output files will be saved.\n\n```\n\nAs can be seen above, the Urbit Content Archiver is quite straightforward to use. It uses a non-interactive interface in order to allow it to be interoperable with other tools/applications. This allows for setting up cron-jobs to say archive a chat every X hours, setup hotkeys to do it on-command, or anything you can imagine in between. Any previously archived content is skipped over (not downloaded again), thereby allowing you to keep running the archiver on the same channels and only downloading new content.\n\n## Current Supported Commands \u0026 Flags\n\n### `chat`\n\n![](images/chat-export.png)\n\nThis command allows you to export and archive any chat which your ship has joined as a markdown file. Any content files that are linked to in the chat will be automatically downloaded locally and linked within the markdown as well.\n\nIt can be used as such:\n\n```sh\n./urbit-content-archiver chat ~darrux-landes development\n```\n\nThe chat graph will be requested from your ship (may take a number of seconds for your ship to process the request depending on chat size), and then once received, processed into a clean markdown formatting style as seen above (do note the above is a processed preview from the markdown).\n\nThe markdown chat archive is saved locally as `\u003cship\u003e-\u003cname\u003e.md` and the downloaded content is stored in the `archived-content` folder.\n\n### `notebook`\n\nThis command allows you to export and archive any notebook which your ship has joined as a markdown file. Any media or content files that are linked in the notebook (via the `[]()` markdown linking format) will be automatically downloaded locally and linked within the markdown as well.\n\nIt can be used as such:\n\n```sh\n./urbit-content-archiver notebook ~bollug-worlus index-weekly\n```\n\nThe chat graph will be requested from your ship (may take a number of seconds for your ship to process the request depending on chat size), and then once received, processed into a clean markdown formatting style as seen above (do note the above is a processed preview from the markdown).\n\nThe markdown chat archive is saved locally as `\u003cship\u003e-\u003cname\u003e.md` and the downloaded content is stored in the `archived-content` folder.\n\n### `--config=\u003cfile_path\u003e`\n\nThis flag allows you to specify which ship config yaml file to use via file path. This and other flags can be useful for many circumstances, such as setting up a cron job.\n\n### `--output=\u003cfolder_path\u003e`\n\nThis flag allows you to specify the output folder path where the archived data will be saved.\n\n### `--skip-downloading`\n\nThis flag allows you to skip downloading content files locally.\n\n## Building The Application\n\nEnsure that you have the [latest version of Rust installed](https://rustup.rs/) and the `libssl-dev` package on Ubuntu (aka `openssl-devel` on Fedora, and potentially slightly different on other distros).\n\n1. Clone this repository and enter into the folder.\n\n2. Run the setup script which will compile and prepare everything for you.\n\n```sh\nsh setup.sh\n```\n\n3. The Urbit Content Archiver application will be compiled, moved into the `deployed` folder, and begin using the application.\n\n4. Use the archiver:\n\n```sh\n./urbit-content-archiver chat ~darrux-landes development\n```\n\n5. If you haven't specified one already, the `ship_config.yaml` will be automatically generated for you and will require editing to add your Urbit ship's ip/port/`+code`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobkorn%2Furbit-content-archiver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobkorn%2Furbit-content-archiver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobkorn%2Furbit-content-archiver/lists"}