This might let an empty string through, which IIRC could cause Zotero to break.

```
var kw = keywords[i].textContent.trim();
if(kw) item.tags.push(kw);
```