[GH-ISSUE #247] Architecture: Support organizing archived links with folders or tags #171

Closed
opened 2026-03-01 14:41:14 +03:00 by kerem · 8 comments
Owner

Originally created by @rayrrr on GitHub (Jun 22, 2019).
Original GitHub issue: https://github.com/ArchiveBox/ArchiveBox/issues/247

  • Propose a brand new feature

I am migrating from another software that allowed me to create persistent folders and subfolders of my archived links in the UI for organizational purposes. I would like that same functionality in ArchiveBox.

Ideally, I would like the UI to have a feature allowing folder creation and drag-and-drop placement of archived links into folders.

It would also be wonderful if ArchiveBox could preserve the folder structure of imported/synced browser bookmarks.

I know this project already uses timestamp-based folders for archiving during import; this new feature does not have to conflict with that. Rather, the "folders" for this feature can be "logical" organization using tags or the like, which ArchiveBox understands well enough to display the links in an organized manner. This way, the timestamp-based filesystem folder architecture could stay the same.

  • It's important to add it in the near-mid term future

  • I'm willing to contribute to development / fixing this issue
  • I like ArchiveBox so far / would recommend it to a friend
Originally created by @rayrrr on GitHub (Jun 22, 2019). Original GitHub issue: https://github.com/ArchiveBox/ArchiveBox/issues/247 - [x] Propose a brand new feature I am migrating from another software that allowed me to create persistent folders and subfolders of my archived links in the UI for organizational purposes. I would like that same functionality in ArchiveBox. Ideally, I would like the UI to have a feature allowing folder creation and drag-and-drop placement of archived links into folders. It would also be wonderful if ArchiveBox could preserve the folder structure of imported/synced browser bookmarks. I know this project already uses timestamp-based folders for archiving during import; this new feature does not have to conflict with that. Rather, the "folders" for this feature can be "logical" organization using tags or the like, which ArchiveBox understands well enough to display the links in an organized manner. This way, the timestamp-based filesystem folder architecture could stay the same. - [x] It's important to add it in the near-mid term future --- - [x] I'm willing to contribute to development / fixing this issue - [x] I like ArchiveBox so far / would recommend it to a friend
Author
Owner

@MAX10541 commented on GitHub (Jun 15, 2020):

Any updates on this?

As far as I see, ArchiveBox does support adding tags from some sources (but not all).
However, it seems like it stops right there: editing/adding/removing tags is almost impossible, and there is no real use for tags other than displaying them next to the titles.

For now, I've written a small bash function that writes my new links with tags to a temp file using a specific format (that ArchiveBox understands), and then use that file as an input to ArchiveBox.

I'd love to contribute to this in any possible way, but I need to know if there are any current or future plans regarding this first :)

<!-- gh-comment-id:643851800 --> @MAX10541 commented on GitHub (Jun 15, 2020): Any updates on this? As far as I see, ArchiveBox does support adding tags from some sources (but not all). However, it seems like it stops right there: editing/adding/removing tags is almost impossible, and there is no real use for tags other than displaying them next to the titles. For now, I've written a small bash function that writes my new links with tags to a temp file using a specific format (that ArchiveBox understands), and then use that file as an input to ArchiveBox. I'd love to contribute to this in any possible way, but I need to know if there are any current or future plans regarding this first :)
Author
Owner

@pirate commented on GitHub (Jun 15, 2020):

You're right that they're not exactly easy to use ;) They were initially added as an afterthought because the Pocket export format I was parsing included them (even though I personally didn't use them).

Luckily tags become a first-class-citizen in archivebox >v0.4, with their own database field that can be queried, filtered, edited, etc.
If you want to check out the model you can look on the django branch at the archivebox/core/models.py file. Currently, it's just a CSV field, but it's easy to query with .filter(tags__icontains='sometag'). They are editable in the UI as well in the new Django admin interface for links, but I don't yet have a nice UI to display them or filter them on the homepage.

One part that would be useful is an integration with DataTable's built-in filtering mechanism. If someone could connect the backend tags to DataTable's filter system in the frontend that would be very helpful (as a PR on the django branch, but discuss your potential approach here first before writing any code). Keep in mind pagination is still WIP, so we will have to move the filtering to the backend once pagination is implemented, see #312.

<!-- gh-comment-id:644312185 --> @pirate commented on GitHub (Jun 15, 2020): You're right that they're not exactly easy to use ;) They were initially added as an afterthought because the Pocket export format I was parsing included them (even though I personally didn't use them). Luckily tags become a first-class-citizen in archivebox >v0.4, with their own database field that can be queried, filtered, edited, etc. If you want to check out the model you can look on the `django` branch at the `archivebox/core/models.py` file. Currently, it's just a CSV field, but it's easy to query with `.filter(tags__icontains='sometag')`. They are editable in the UI as well in the new Django admin interface for links, but I don't yet have a nice UI to display them or filter them on the homepage. One part that would be useful is an integration with DataTable's built-in filtering mechanism. If someone could connect the backend tags to DataTable's filter system in the frontend that would be very helpful (as a PR on the `django` branch, but discuss your potential approach here first before writing any code). Keep in mind pagination is still WIP, so we will have to move the filtering to the backend once pagination is implemented, see #312.
Author
Owner

@cdvv7788 commented on GitHub (Oct 12, 2020):

We are refactoring this to use a proper Tag model. It should be available soon.

<!-- gh-comment-id:707168679 --> @cdvv7788 commented on GitHub (Oct 12, 2020): We are refactoring this to use a proper `Tag` model. It should be available soon.
Author
Owner

@mcrosson commented on GitHub (Jan 11, 2021):

Any updates on this?

<!-- gh-comment-id:757614255 --> @mcrosson commented on GitHub (Jan 11, 2021): Any updates on this?
Author
Owner

@pirate commented on GitHub (Jan 11, 2021):

As of 0.4.24 we have Tags stored in a separate model with filter options based on tags in the Admin UI.

I'm leaving this issue open to track future additions to the tagging feature like nested tags / better filter options / etc.

<!-- gh-comment-id:757951056 --> @pirate commented on GitHub (Jan 11, 2021): As of 0.4.24 we have Tags stored in a separate model with filter options based on tags in the Admin UI. I'm leaving this issue open to track future additions to the tagging feature like nested tags / better filter options / etc.
Author
Owner

@mcrosson commented on GitHub (Jan 11, 2021):

As of 0.4.24 we have Tags stored in a separate model with filter options based on tags in the Admin UI.
Is there a way to add tags to an existing snapshot and/or add a tag while adding a URL(s) for snapshot? I was looking through the web UI and I see the area to manage tags but no way to add them to snapshots or manage snapshot tags.

<!-- gh-comment-id:758032858 --> @mcrosson commented on GitHub (Jan 11, 2021): > > > As of 0.4.24 we have Tags stored in a separate model with filter options based on tags in the Admin UI. Is there a way to add tags to an existing snapshot and/or add a tag while adding a URL(s) for snapshot? I was looking through the web UI and I see the area to manage tags but no way to add them to snapshots or manage snapshot tags.
Author
Owner

@pirate commented on GitHub (Jan 11, 2021):

image
Screen Shot 2021-01-11 at 9 48 14 PM

Screen Shot 2021-01-11 at 9 53 26 PM
<!-- gh-comment-id:758185639 --> @pirate commented on GitHub (Jan 11, 2021): ![image](https://user-images.githubusercontent.com/511499/104231112-76918d80-541c-11eb-847d-f5348a5971b8.png) <img width="1242" alt="Screen Shot 2021-01-11 at 9 48 14 PM" src="https://user-images.githubusercontent.com/511499/104230881-274b5d00-541c-11eb-88d1-622b960faf68.png"> <img width="1702" alt="Screen Shot 2021-01-11 at 9 53 26 PM" src="https://user-images.githubusercontent.com/511499/104231358-d4be7080-541c-11eb-92ea-5b3ec2fdc231.png">
Author
Owner

@pirate commented on GitHub (Apr 6, 2021):

Tags have been around for a few versions at this point so I'm going to close this out. If there are any more feature requests related to tagging please open new issues for them :)

I don't think we'll natively support hierarchical tags anytime soon, but you can use slashes or dashes to indicate categories in your tag names somecategory/somesubcategory/sometag (similar to how gmail tagging works).

<!-- gh-comment-id:813859455 --> @pirate commented on GitHub (Apr 6, 2021): Tags have been around for a few versions at this point so I'm going to close this out. If there are any more feature requests related to tagging please open new issues for them :) I don't think we'll natively support hierarchical tags anytime soon, but you can use slashes or dashes to indicate categories in your tag names `somecategory/somesubcategory/sometag` (similar to how gmail tagging works).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/ArchiveBox#171
No description provided.