Thanks for the explanations. The first one (the URL) shouldn’t be too hard, although it’s worth noting that not all papers’ Zotero entries will have a URL (or at least, in my experience, it’s a bit spotty), so unlike writing Zotero select links, Zowie may often fail to be able to write anything.
The second topic is getting a bit far afield for Zowie, but I had the same desire at one point, and started writing Zoinks for exactly the purpose of asking Zotero for data and writing the results into DT metadata fields using smart rules. That effort stalled, unfortunately, due to lack of time, and I also found that for my needs, being able to jump from a PDF in DEVONthink to its Zotero entry was enough (because from there, I can get other info).
Since my speed lately is only slightly faster than the speed at which pitch drips in the pitch drop experiment, here are some pointers to potential alternatives in case you or anyone else wants to explore them:
If you happen to use Alfred, you may be able to use ZotHero to achieve what you’re looking for. Someone pointed me to it after I mentioned wanting to write Zoinks.
If you happen to use Better BibTeX (or maybe even if you don’t), and can write some basic JavaScript, you may also be able to use its JSON-RPC interface to get the Zotero data. In fact, I’ve asked the BBT developer about adding an endpoint that would allo looking up a record based on its attachment key. If it could do that, then I could vastly speed up Zowie by avoiding network calls to the Zotero API servers, and it would also make writing Zoinks a piece of cake.
Lastly, I looked through the ZotHero code, and what it’s doing is reading Zotero’s local SQLite database directly. Every major programming language has an interface package for SQLite, so in principle, if you didn’t know JavaScript or Python and didn’t use BBT, but you knew a little bit of some other language, you could probably write something that reads the local Zotero database to get the necessary info. I don’t know what the structure of the database is (you could probably get some clues from the ZotHero code) but it’s probably not too hard to work out what the tables are.