Zotero Connector APA Automatic-LLM Citation Format?

edited September 21, 2025
Hello,

Following up on https://forums.zotero.org/discussion/106107/which-item-type-for-chat-gpt-content , it seems that the APA guidelines for citing LLM type technologies has been updated to permit citation of specific conversations that were used for LLM: https://apastyle.apa.org/blog/cite-generative-ai-references .

I tried saving one of the example specific chats in Zotero Connector: https://claude.ai/share/329173b2-ec93-4663-ac68-4f65ea4f166d and the generated bibliography doesn't seem to match what APA shows on their blog.

I was wondering if Zotero connector could please be updated to allow automatically create correct citations of specific LLM-chats in APA style?
  • Enter these as Webpage, with the following fields:

    Author: AI Company Name
    Date: year, month day
    Title: Title of chat
    Website Type: Generative AI chat
    Website title: Tool Name/Model
    URL: URL of the chat
  • Hello, thank you for providing the relevant fields, but I was wondering if this documentation could be done automatically via Zotero Connector?
  • It looks feasible. It might require more than one single translator, depending on the specificities of each platform, but hopefully the vendor-specific parts can be processed within a small enough section of the code.

    I'm volunteering for this, unless something is already on the way?
  • I’d say go for it unless @adamsmith weighs in in the next day or so
  • Yeah, I think this makes sense, happy for you to go ahead. I'd be inclined to say that the main vendors (chatGPT, Claude, Gemini, maybe deepSeek?) likely each need their own functionality given that their interfaces look very different, but obviously great if you can avoid this.
  • With a little bit of help from Claude.ai, I've got a basic translator for Claude (obviously) and ChatGPT. It was fairly easy to extend it manually for Mistral, Deepseek and the Swiss newcomer Apertus (just because I could). Some item fields need more work, such as the date, and I need to check the DOM selectors - they were mostly copied and pasted. But the page structures of each platform have actually been extremely similar, I now think most big players (if not all) can be supported using one single translator.

    If someone wants to take an early look, or provide some constructive feedback, the code is here: https://github.com/aborel/translators/blob/LLMs/LLM chats.js
  • Hey, I know I'm coming to this chat late, but I just finished a ChatGPT translator which I made a Pull Request for, and am about to have one for Gemini. And am willing to continue making these, and making changes based on how major citation standards want them (currently I'm saving as instantMessage, as that seemed the closest fit)
  • I am very frustrated. I spent 2 weeks of my life, working to support Zotero, and instead of being able to have a dialogue about my Translator, I am simply told in essence that my work is no good, and close the PR without full dialogue, which tells me you don't care to have other people help.
  • Contributing to open source projects is a learning process; even folks with CS degrees need to spend time learning this. You need to understand the culture and standards of a project you are contributing to. In general, vibe coded code is rarely suitable as a contribution to a professionally developed project, to be shipped to 100ks of users, and you can't expect maintainers to clean up AI slop in code (which you explicitly said you yourself didn't have time to do).

    I'm sorry you found this frustrating, but "thank you, this won't work" is a necessary response to a PR FLOSS maintainers need to make to keep their project viable; that has always been the case and is even more so in the age of AI. The joy of contributing to FLOSS is that you learn new things while doing so & always get to use your own code yourself.
  • @jacob-walker: I'm sorry. As I said initially, I really appreciate the work you put into the two translators. If you want to use them locally, you can and should. But they were not remotely reviewable, let alone maintainable. At 2,863 lines before test cases, your ChatGPT translator would've been the second-longest in the repo (after BibTeX, which handles a complex, edge case-laden file format). And in practice, all it did was produce nearly the same hardcoded item on every input. I understand that some of the complexity was intended to fill in details like dates for private chats, but we can't take on that huge maintenance burden for a couple item fields on one website.

    It could theoretically be possible to edit the two translators down to be simpler, but it would've been a terrible use of time - I don't believe I'm exaggerating when I say that 90% of the code that Codex wrote in those PRs was unnecessary. There was much more noise than signal.

    The right solution might be to write a new, simpler translator from scratch. After closing the two PRs earlier today, I actually started doing that. I think we can get information like the date with significantly less complex logic than what Codex wrote. But there's no consensus between style manuals on whether to cite AI conversations themselves, the software that produced them, or neither. This is one of those cases where Zotero's abstraction over differences between citation styles doesn't hold up, and where the preferences of those who use Zotero as a bookmark manager and those who use it as a citation manager may come into conflict. We can't have a translator that only creates items valid in one style, or worse, items that aren't valid in any style at all.

    Maybe the translator could have you select whether to cite ChatGPT or a specific conversation. Maybe we shouldn't have a ChatGPT translator at all, because Zotero is primarily meant for managing citations, and citing ChatGPT is widely frowned upon. We need to figure that out before putting too much work into a new translator.

    But I'm sorry to say that we won't be able to build on your PRs. I didn't want to string you along and cause you to spend more time doing work that would never go anywhere; the best option I had was to close them.
  • edited 4 days ago
    (I think shareable chats with stable-ish URLs are a game changer in that respect and I don't think were around at the time of the last chat (or at least I wasn't aware of them); I think those can be cited, most likely as webpages, which they basically are at that point)
  • edited 3 days ago
    Shareable chats: my thoughts exactly!
  • Thank you so much for all the thoughtful discussion here. This is all I wanted. I realize that my original communication in the PR gave two wrong impressions:

    1. That I'm not willing to do more work, and wanted you all to do it. This is not true, I am willing to do more. I had just worked a lot before submitting.

    2. That the translators were just AI slop. I disagree with the 90% AI bloat, although I would guess it is 50%, and for that part of the bloat, I can understand not wanting it. But I took a lot of time to have a pattern of functions that were clear on their function, so that it didn't have complete spaghetti code all over the place.

    My frustration really stemmed from not being able to have the dialogue, and not recognizing why the other 50% of the complexity is in the translator beyond the AI bloat.

    To address some of the valuable dialogue here:

    1. There are several translators that are for resources "frowned upon" for use such as Wikipedia and Gmail.

    2. I think there is a subtle but important difference between a "citation manager" and a "reference manager". I love Zotero because it is an awesome reference manager, where I can save the Wikipedia article, not because I'm necessarily going to cite it but because I'm going to reference it again while doing research, to look at its sources, etc. This is similar with AI Chats.

    3. This is also about transparency. There is a good chance that AI will become more valuable in future research. I believe that by having a good translator for them, it clearly shows that part of the research was done by AI.
  • Regarding the specific translators I wrote, I understand the concern about maintaining these as an ongoing commitment in essence you are making by accepting them, in their complexity (regardless of AI bloat, but that doesn't help). I also recognize that my design may not fit your paradigm for how a connector works.

    So, this is what I plan on doing and a hope I have for moving forward:

    1. I will make my advanced generative AI translators into a plugin, so this puts no responsibility on to you all.

    2. How AI is to be cited and fit into research is an important discussion point, and I truly hope you will consider my perspective as the broader topic is talked about.
Sign In or Register to comment.