Official Release of the iNaturalist Metadata Tool

Two years ago, I released a very rickety browser extension I made to make it easier to add observation fields and annotations to iNat observations. I’ve improved on the extension by adding features and improving stability for the last two years, and it’s now officially available in both the Firefox Add-Ons store and the Chrome Web Store (which is cross-compatible with Edge and other Chromium browsers). These releases should resolve a lot of the user-unfriendly challenges that were required when it was an experimental extension.

For anyone who is new to this extension, it’s a swiss army knife tool designed to make your life as a power-user easier in as many ways as I could think of. Here’s a little tour to help new users get oriented.

The core feature of the app is the “action.” Actions include:

Actions can be assigned to a button. Multiple actions can be combined into a single button. For instance, you could make a button that adds a taxon ID, a comment explaining your ID, and adding the observation to a project. You can also choose whether this interaction leaves the observation marked as followed (so you get notifications about it) and reviewed.

You can make buttons on the extension’s configuration page, available by clicking the extension in your toolbar or extensions dropdown.

image

Once made, buttons can be used on Identify and individual observation pages. Buttons appear automatically and update immediately when you make changes on the configuration page; no need to refresh.

Buttons can be hidden or moved around the corners of the screen with keyboard shortcuts

Buttons can be activated by clicking or with keyboard shortcuts programmed on the configuration page.

There are a lot of more specific details available in the action list but one I want to flag is that you can make a text input box popup for Observation Fields, so you can paste or type in a value on the fly.

One action allows you to add an observation to a list. The extension stores that list for you so you can reopen that set of observations later; those can be viewed at the bottom of the configurations page.

Using buttons individually is very powerful for common actions you need to apply conditionally. But true power users would often like to apply metadata to large swathes of observations at a time. This is possible with bulk action mode. The same buttons made on the configuration page can be applied to up to 200 observations (iNat’s Identify page limit) at a time.

In bulk action mode, you can select observations to apply the action to. While in bulk action mode, you can examine a given observation more closely to confirm your ID or other information by ctrl-clicking on it.

Once a set of observations has been chosen, you can select an action and apply it.

Browser resource use limitation features mean that bulk actions will pause while the window is minimized or you switch to another tab (you can have another window active on the same screen though). This is a key limitation I don’t believe there is a true solution to but I recently made an update that dramatically speeds up the application of bulk actions, so this is much less of an issue now.

Bulk actions make a lot of changes at once, and it would be a big headache if you applied an action to lots of observations by mistake. It was really important to me that I make it easy to handle that situation, so I built a record that tracks every bulk action you take and generates and applies the exact bulk action to undo it. This is available on the bulk action mode menu and on the configuration page. This menu provides a convenient link to all affected observations so you can validate that the undo was applied correctly.

Applying bulk actions is much easier when you can prefilter to ensure all or nearly all observations are relevant targets for your action. iNat Identify pages already offer a lot of ways to make these filters (by month, annotation, etc), but there are many, many more options available that aren’t conveniently accessible in the simplified user interface. These are the topic of a popular forum thread and I used to painstakingly construct specific common queries and save them. My extension offers an expanded UI to conveniently take advantage of all of these.

This page allows you to filter by presence/absence and value for observations, annotations, projects, taxa, user, etc in any number of combinations you desire. It is very powerful and there are lots of possibilities here that are not immediately obvious; worth taking some time to explore.

Among the most useful is a “without” condition for an observation field. If you are on an Identify page with this filter, as you add bulk actions that fill in that field, observations that have already been completed will be automatically cleared from view as you work. You can choose to have them clear on manual refresh or refresh automatically when you apply a bulk action.

The URL gen page is also a good place to change the per page maximum from 30 to higher numbers (up to the max of 200).

One more important note: the extension saves all of your lists and buttons to a file that your browser associates with the extension itself. If you remove it, that file disappears, which can lose you lots of painstakingly constructed configurations. If you ever need to remove the extension, transfer your configurations to a new browser, new device, etc, you can export the configurations and import on the other side. You can also use this feature to share configurations with other users.

I’ve made a lot of improvements to the extension based on feedback from users here on the forum over the last two years. Feel free to make suggestions here in this thread, but I also added a form to the extension itself that helps you directly generate a github issue, which is the easiest place for me to actually track them.

I’m sure I’m forgetting things but that should be a good start. Let me know if you have any questions or problems arise. Thank you all for your support and for the work you do on iNat! It’s a privilege to make your lives easier!

This looks incredible

Woah! That looks outstanding. Thanks!

So happy for you. The passion and intensity that drove you to this point was obvious right from the start. :o)

What an awesome tool! I am so glad that this is out now.

Really outstanding! I’ve used this tool practically every day since it was first launched and honestly, I think I’d have given up IDing without it. As ever, an enormous thanks for your hard work, skill and dedication.

This is an amazing tool! Thanks for your work on it.

Yes, looks very useful. As a big fan of using the web interface for iNaturalist, I hope to use it in the future.

This is awesome! I can’t wait to try it out!

Oh, this is brilliant! Thank you so much for sharing your expertise and passion with us, Megachile :folded_hands: We are truly privileged to have people like you in our community.

Bulk Mode! Oh the joy :star_struck: :tada:

A useful tool for Project uploads.

My goodness! I battle with the basics, so this just blows my mind! I love that people like you are so passionate about making this platform even better. Thank you!

Hi! I’m using the Chrome version, which continues to be great!

I am running into a small problem with creating actions to add/remove projects.

There are some projects (such as https://www.inaturalist.org/projects/blue) that aren’t showing up in the drop-down when you enter the name. Is it possible to make it so that you can manually enter the project ID? (Why is that field even visible, if you can’t use it?)

I put the project ID there so you could validate that you had selected the one you had in mind (there are some cases where Fields and Projects have duplicates with very similar names, differ in subtle capitalization etc). But you’re right, no good reason not to let you enter it directly. And the underlying issue: why can you search for a project by its name and not find it? revealed that there are somehow actually two project search API endpoints and I was using the worse one. Fixed now.

The version I just shipped to the webstores includes the Bulk Action speedup I alluded to in OP. I discovered that you can batch API calls in parallel up to 8x, so now bulk actions go 8x faster than they used to. Huge unlock, should be very exciting for lots of you :)

:heart_eyes: :heart_eyes: :heart_eyes: :heart_eyes: :heart_eyes: :heart_eyes:

Would this let me generate a list of supraspecific taxa and the number of species and observations in each?

That isn’t the kind of thing this extension is really for, no. Best I can think of would be to use the URL gen page to generate a filter set to the observations you’re interested in, then go Explore and open the Species list for that. But that’s not a list per se.

That kind of question is very possible to answer with the API more broadly though. You could easily have Claude do that for you.

Great tool, I’ve been using it for some time – can’t thank you enough for the development put into it!
I do have an apparent bug to report based on the released version. When I try to edit an entry under “Existing Configurations”, wanting to add an annotation value update in this particular case, I get the error “Cannot read properties of null (reading ‘value’)” and it will not save it, i.e. the “Update Configuration” button throws the message and I cannot actually edit the configuration successfully. This is in Opera version 131.0.5877.97 – I’ve been using it successfully otherwise. Let me know if more info is needed. (Posting it here in case anyone else has seen this…)

I’m not able to reproduce this. Did you import an old set of configurations maybe? I can add in a guard against this but I think without knowing what the actual problem is it will just create a different error message instead of addressing the underlying issue.

Can you open the console and give me the line number associated with the error?

Just a heads-up for those who might come across “unannotatable” observations:

Just to be clear - This is not a problem with the Metadata Tool! {Which is awesome in every way and Bulk Mode has changed my life :star_struck: }

So, now and then I get an error that says something like “Annotation not available”. The annotation cannot be added on the Identify page using bulk mode or per ob using this tool, or using the standard keyboard shortcuts, or clicking on the annotation. It also cannot be added on the observation page itself using this tool or by clicking on the annotation.

This is because the observation has not indexed correctly. To “reboot” the ob, click on something like “Organism is wild” (if it is wild) in the DQA. Then you will find you can add the annotation.