Research Tool Stack

On this page

Setup Công cụ Nghiên cứu: Zotero + Obsidian | Research Tools

Nhiều bạn mới bắt đầu nghiên cứu thường tìm topic trước, đọc paper lung tung, save PDF vào folder "Downloads". Đến khi cần trích dẫn thì không nhớ paper nào nói gì.

Tôi từng như vậy. Và tôi mất rất nhiều thời gian tìm lại papers, format citations, xây dựng lại logic từ những gì đã đọc.

Setup hệ thống quản lý trước khi bắt đầu đọc → Mỗi paper đọc đều được organize từ đầu.

Tại sao Zotero + Obsidian?

Zotero quản lý references - free, cross-platform, auto-detect citations từ web. Obsidian để ghi chú và kết nối ý tưởng - local files không mất data, bidirectional links, plugin ecosystem mạnh.

Workflow tổng quan:

📚 ZOTERO                    📝 OBSIDIAN                    📤 OUTPUT
───────────                  ──────────                    ──────────

  PDFs        ───ZotLit───▶  2-Source Material
  Highlight                    (Raw highlights)
  Annotate                          │
      │                             ▼
      │       ───Notero───▶  Notion (Schedule,
      │                      Team overview)
                                    │
                                    ▼
                             7-Synthesis        ◀── Claude Code
                               (Theming)
                                    │
                                    ▼
                             6-Atomic Notes
                               (Your ideas)
                                    │
                                    ▼
                             8-Drafts ──────────▶ Thesis/Paper
                               (Writing)          Blog/Report

Cài đặt Zotero

Download Zotero 7 từ zotero.org/download và cài đặt như ứng dụng bình thường.

Cài Zotero Connector - đây là bước quan trọng nhất. Vào cùng trang download, click "Install Connector" cho browser bạn dùng. Sau khi cài, icon Zotero sẽ xuất hiện trên toolbar.

Test thử: Mở một paper trên Google Scholar, click icon Zotero Connector. Paper tự động save vào library kèm PDF (nếu có access).

Cài Better BibTeX (khuyên dùng) để tạo citation keys nhất quán như nguyen2024sustainable thay vì random ID. Download từ retorque.re/zotero-better-bibtex, vào Zotero: Tools → Add-ons → Install Add-on From File.

Cài đặt Obsidian

Download Obsidian từ obsidian.md/download. Khi mở lần đầu, chọn "Create new vault", đặt tên (ví dụ: "Research"), chọn location trong iCloud/Google Drive để backup.

Folder structure theo Zettelkasten mở rộng:

📁 Your Vault
├── 1 - Rough Notes       ← Quick capture, chưa process
├── 2 - Source Material   ← Literature notes từ các nguồn
│   └── Papers            ← ZotLit Literature Notes vào đây
├── 3 - Tags              ← Topic tags (MOC style)
├── 4 - Indexes           ← Collections of tags
├── 5 - Template          ← Templates cho notes
├── 6 - Atomic Notes      ← Ý tưởng độc lập của bạn (permanent)
├── 7 - Synthesis         ← Theming từ nhiều papers
├── 8 - Drafts            ← Bài viết work-in-progress
└── 9 - Assets            ← Images, Excalidraw diagrams
Dùng số prefix để folders hiển thị theo thứ tự. Folder 7-8-9 là cho workflow nâng cao - bạn có thể thêm sau khi quen với hệ thống.

Kết nối Notion (Notero)

Tại sao cần Notion? Quản lý reading schedule, track tiến độ, share overview với team.

Quick setup: Download plugin từ github.com/dvanoni/notero, cài vào Zotero qua Tools → Add-ons, kết nối với Notion database.

Chi tiết cấu hình sync và scheduling, xem bài Notero Setup Guide.

Kết nối Obsidian (ZotLit)

ZotLit là cầu nối giữa Zotero annotations và Obsidian literature notes.

Quick setup: Trong Obsidian vào Settings → Community plugins → Browse, tìm "ZotLit", Install và Enable. Cấu hình database path và note location (trỏ về 2 - Source Material/Papers).

Test: Highlight một đoạn trong PDF trên Zotero. Trong Obsidian nhấn Ctrl/Cmd + P → "ZotLit: Create literature note". Literature note được tạo với annotations.

Chi tiết về template, color-coding, Pandoc Reference List, Dataview Dashboard, xem bài ZotLit Setup Chi Tiết.

Workflow hàng ngày

Khi tìm paper mới: Tìm trên Google Scholar → Click Zotero Connector → Add tags để organize.

Khi đọc paper: Mở PDF trong Zotero → Highlight với 7-color coding → Thêm notes nếu cần.

Khi cần review: Check Notion để xem reading schedule → Update literature note trong Obsidian → Viết thêm ý hiểu.

Khi viết paper: Insert citation với [@citekey] → Export bibliography từ Zotero.

Checklist

  • [ ] Zotero 7 + Connector + Better BibTeX
  • [ ] Obsidian với vault structure
  • [ ] Notero kết nối Notion
  • [ ] ZotLit kết nối Zotero
  • [ ] Test: Save paper → Highlight → Create literature note

Cho nhóm nghiên cứu

Đây là bước đầu tiên trước khi bắt đầu bất kỳ research project nào. Mỗi member nên hoàn thành checklist trên trong tuần đầu, practice với 2-3 papers trước khi đi vào project thật.

Lợi ích: Share papers qua Zotero Groups, citation format nhất quán, Notion database chung track tiến độ, literature notes reference chéo trong Obsidian.


Bài tiếp theo: Notero Setup Guide - Kết nối Zotero với Notion

Series: Research Tool Stack (5 bài)

Kết nối Zotero với Notion qua Notero | Research Tools

Bạn đã có Zotero chứa đầy papers, nhưng mỗi lần mở ra lại không biết nên đọc cái nào trước? Hay team muốn biết ai đang đọc paper gì, tiến độ đến đâu?

Notero giải quyết vấn đề này - sync metadata từ Zotero sang Notion database để schedule reading, track progress, và share overview với team.

Bài này là phần 2 trong series. Nếu chưa setup Zotero, xem bài Foundation trước.

Notero trong Workflow

                         ZOTERO
                    (Single Source of Truth)
                            │
              ┌─────────────┴─────────────┐
              ▼                           ▼
           NOTERO                       ZOTLIT
          → Notion                    → Obsidian
              │                           │
              ▼                           ▼
    • Reading schedule            • Deep annotations
    • Team collaboration          • Literature notes
    • Progress tracking           • Concept linking
    • Overview database           • Writing drafts

Notero cho overview và scheduling. ZotLit cho deep work. Cả hai đều cần trong workflow hoàn chỉnh.

Cài đặt Notero

Download plugin từ github.com/dvanoni/notero - vào Releases, tải file .xpi mới nhất.

Cài vào Zotero: Tools → Plugins → ⚙️ → Install Add-on From File → chọn file .xpi → Restart Zotero.

Sau khi restart, vào Tools sẽ thấy "Notero Preferences" xuất hiện.

Kết nối với Notion

Mở Notero Preferences trong Zotero (Tools → Notero Preferences), click "Connect to Notion". Browser sẽ mở tự động.

Authorize: Đăng nhập Notion nếu cần, click Next khi thấy "Notero is requesting access".

Chọn database: Có 2 options - "Use template" nếu chưa có database, hoặc "Select pages" nếu đã có database riêng (khuyên dùng). Tick database muốn sync, click "Allow access".

Quan trọng: Sau khi Allow, BẮT BUỘC click "Open Zotero" để hoàn tất kết nối.

Cấu hình Sync

Page title format: Trong Notero Preferences, chọn cách hiển thị tên item. Khuyên dùng "Author Date Citation" (ví dụ: Nguyen et al. (2024)) để dễ nhận diện.

Enable collections: Mặc định Notero KHÔNG sync collection nào. Double-click vào collection muốn sync để enable (dấu ✓ xuất hiện).

Auto-sync settings: Bật "Sync when items are modified" và "Sync notes" để tự động đồng bộ khi có thay đổi.

Sử dụng trong Notion

Sau khi sync, Notion database sẽ nhận: Title, Authors, Year, Item Type, Tags, Collections, Abstract, URL, DOI.

Thêm custom properties để tận dụng Notion:

Property Type Mục đích
Date to Read Date Schedule ngày đọc
Status Select To Read / Reading / Done
Priority Select High / Medium / Low
Assigned Person Ai đang đọc (cho team)

Workflow cho team: Paper mới sync vào → Assign cho member → Set Date to Read → Dùng Calendar view xem schedule cả team → Đọc xong chuyển Status = Done.

Troubleshooting

Items không sync? Kiểm tra collection đã enable chưa (có dấu ✓), "Sync when items are modified" đã bật chưa, item có trong collection đã enable không.

Duplicate items? Vào Notion database → ⋯ → Connections → Remove các Notero connections cũ, giữ lại 1.

Notes không hiện? Bật "Sync notes" trong Notero Preferences, sau đó modify item trong Zotero để trigger re-sync.

Resources


Bài tiếp theo: ZotLit Templates - Color-Coding và Custom Templates

Bài trước: Foundation - Setup Zotero + Obsidian

Series: Research Tool Stack (5 bài)

ZotLit Templates: Color-Coding và Custom Literature Notes | Research Tools

Bạn đã kết nối ZotLit với Zotero, tạo được literature note đầu tiên. Nhưng note mặc định trông khá basic - không có màu sắc, không phân loại highlight, metadata thiếu fields cần thiết.

Bài này hướng dẫn thiết lập 7-color coding systemcustom templates để mỗi literature note trở thành tài liệu có cấu trúc, dễ scan và dễ query sau này.

Đây là bài nâng cao. Nếu chưa setup ZotLit cơ bản, xem phần ZotLit trong bài Foundation trước.

Color-Coding System

Một hệ thống highlight màu nhất quán giúp phân loại thông tin khi đọc paper. Đây là system tôi dùng:

Màu Emoji Label Mục đích
🔴 Red 🔴 Skeptical Không đồng ý, hoài nghi
🟡 Yellow 🟡 Important Ý quan trọng, insight hay
🟢 Green 🟢 Agree Đồng ý, resonate
🟣 Purple 🟣 Heading Đề mục, chapter titles
🔵 Blue 🔵 Read more Cần đọc thêm, cite liên quan
🩷 Magenta 🤔 Question Thắc mắc, cần clarify
🟠 Orange 🟠 Concept/Method Khái niệm, methodology

Tại sao English labels? Dễ collaborate với team quốc tế, nhất quán với academic tools khác, tránh lỗi encoding tiếng Việt.

Cấu trúc Template Files

ZotLit sử dụng Eta template engine. Các file chính:

5 - Template/ZotLit/
├── zt-note.eta      # Cấu trúc toàn bộ literature note
├── zt-field.eta     # Frontmatter/properties
├── zt-annot.eta     # Từng annotation
└── zt-annots.eta    # Vòng lặp render annotations

Eject template để chỉnh sửa: Settings → ZotLit → Template → Ejectable Templates → click Eject bên cạnh template muốn chỉnh → Open template file để edit.

Plugin bổ trợ: Highlightr

Để hiển thị màu highlight trong Obsidian (không chỉ plain text), cài Highlightr: Community plugins → Browse → tìm "Highlightr" → Install và Enable.

Template zt-field.eta (Frontmatter)

Template này quyết định metadata trong frontmatter - quan trọng cho Dataview queries sau này.

title: "<%= it.title %>"
citekey: "<%= it.citekey %>"
authors: "<%= it.authorsShort %>"
year: "<%= it.date %>"
journal: "<%= it.publicationTitle %>"
doi: "<%= it.DOI %>"
tags:
  - paper
status: unread
Field Nguồn Dùng cho
citekey Better BibTeX Link, citation
authors Zotero Dataview query
year Zotero Filter theo năm
status Manual Track đã đọc/chưa đọc

Template zt-annot.eta (Single Annotation)

Template này quyết định mỗi annotation hiển thị như thế nào - đây là nơi color-coding được áp dụng.

<%
const colorMap = {
  "red": { emoji: "🔴", label: "Skeptical", hex: "#FF6666" },
  "yellow": { emoji: "🟡", label: "Important", hex: "#FFD400" },
  "green": { emoji: "🟢", label: "Agree", hex: "#5FB236" },
  "purple": { emoji: "🟣", label: "Heading", hex: "#A28AE5" },
  "blue": { emoji: "🔵", label: "Read more", hex: "#2EA8E5" },
  "magenta": { emoji: "🤔", label: "Question", hex: "#E56EEE" },
  "orange": { emoji: "🟠", label: "Concept/Method", hex: "#F19837" }
};
const color = colorMap[it.colorName] ?? { emoji: "⚪", label: it.colorName, hex: "#AAAAAA" };
-%>
<%= color.emoji %> **<%= color.label %>** |<% if (it.text) { %> <mark style="background: <%= color.hex %>;"><%= it.text %></mark><% } %> [Page <%= it.pageLabel %>](<%= it.backlink %>)
<% if (it.comment) { -%>
    ↳ *<%= it.comment %>*
<% } -%>

<%= it.imgEmbed %>
Phần Giải thích
colorMap Map màu Zotero → emoji, label, hex
<mark style="background:..."> Highlight có màu nền (cần Highlightr)
it.comment Comment của bạn, hiển thị italic với ↳
it.imgEmbed Nhúng hình nếu là area selection

Template zt-note.eta (Literature Note)

Template này quyết định cấu trúc toàn bộ note.

# <%= it.title %>

**Authors:** <%= it.authorsShort %>
**Year:** <%= it.date %>
**Journal:** <%= it.publicationTitle %>
**DOI:** <%= it.DOI %>

🔗 [Open in Zotero](<%= it.backlink %>)

---

## Abstract

<%= it.abstractNote %>

---

## My Notes

> Write your own thoughts here...

---

## Annotations

<%~ include("annots", it.annotations) %>

---

## 🗂 Action Items

<%
const defined_colors = {
  "magenta": "🤔 Questions to Clarify",
  "blue": "🔵 Further Reading"
};
const defined_action_colors = ["magenta", "blue"];
const defined_annotations = it.annotations.filter(a => defined_action_colors.includes(a.colorName));
const defined_groupBy = Object.groupBy(defined_annotations, a => a.colorName);

for (const color_key of defined_action_colors) {
  if (!defined_groupBy[color_key]) continue;
-%>
### <%= defined_colors[color_key] %>

<% for (const annot of defined_groupBy[color_key]) { -%>
- [ ] "<%= annot.text.substring(0, 80) %><%= annot.text.length > 80 ? "..." : "" %>" ([Page <%= annot.pageLabel %>](<%= annot.backlink %>))
<% } -%>

<% } -%>
Section Mục đích
Header Metadata + link Zotero
Abstract Tóm tắt từ Zotero
My Notes Personal thoughts
Annotations Highlights theo thứ tự PDF
Action Items Auto-tổng hợp Questions + Further Reading thành checklist
Action Items section tự động extract các highlight màu Magenta (Questions) và Blue (Read more) thành task list - rất tiện để track những gì cần follow up.

Mẹo sử dụng

Highlight có hệ thống: Đọc paper lần đầu, dùng Yellow cho important points. Đọc lại, thêm Red/Green cho opinions, Orange cho definitions, Magenta cho questions.

Comments là key: Mỗi highlight nên có comment ngắn giải thích tại sao bạn highlight đoạn đó. Comment xuất hiện dưới highlight trong literature note.

Consistency: Stick với color system đã chọn. Sau 10-20 papers, bạn sẽ scan notes rất nhanh vì não đã quen với màu sắc.

Resources


Bài tiếp theo: Pandoc Reference List - Citations đẹp trong Obsidian

Bài trước: Notero Setup - Kết nối Zotero với Notion

Series: Research Tool Stack

Pandoc Reference List: Citations Đẹp trong Obsidian | Research Tools

Bạn đang viết draft trong Obsidian, cần cite một paper. Gõ [@nguyen2024] xong nhìn lại thấy... vẫn là [@nguyen2024]. Không biết đó là paper nào, format citation ra sao.

Pandoc Reference List giải quyết vấn đề này - chuyển [@citekey] thành (Nguyen et al., 2024) ngay trong Obsidian, kèm panel hiển thị references formatted theo APA/IEEE.

Bài này yêu cầu đã setup ZotLit và Better BibTeX. Xem bài Foundation nếu chưa.

Pandoc Reference List làm gì?

Tính năng Mô tả
📋 References Panel Sidebar hiển thị references formatted (APA, IEEE...)
Inline Rendering [@citekey](Author et al., 2024)
🔍 Autocomplete Gợi ý citations khi gõ [@
🔗 DOI Links Links clickable trong panel

Cài đặt Pandoc

Pandoc là engine xử lý citations. Cần cài riêng trước khi dùng plugin.

macOS: Truy cập github.com/jgm/pandoc/releases, tải file .pkg phù hợp - Mac M1/M2/M3 chọn arm64, Mac Intel chọn x86_64. Double-click để cài.

Windows: Tải file .msi từ cùng trang, chạy installer.

Kiểm tra: Mở Terminal/Command Prompt:

pandoc --version
# Output: pandoc 3.x.x

which pandoc  # macOS
# Output: /usr/local/bin/pandoc

Export Bibliography từ Zotero

Plugin cần file .bib chứa tất cả references.

Trong Zotero: File → Export Library → Format: Better BibLaTeX → tick "Keep updated" → Save vào 5 - Template/ZotLit/My_Library.bib

"Keep updated" quan trọng - file .bib tự động cập nhật khi thêm papers mới vào Zotero.

Download Citation Style

Truy cập zotero.org/styles, tìm "apa", click American Psychological Association 7th edition để download.

Di chuyển file apa.csl vào 5 - Template/ZotLit/apa.csl

Cài đặt Plugin

Settings → Community plugins → Browse → tìm "Pandoc Reference List" → Install → Enable.

Cấu hình Plugin

Vào Settings → Pandoc Reference List:

Setting Giá trị
Fallback path to Pandoc /usr/local/bin/pandoc (macOS) hoặc path từ where pandoc (Windows)
Path to bibliography file 5 - Template/ZotLit/My_Library.bib
Custom citation style 5 - Template/ZotLit/apa.csl

Bật các options:

  • ✅ Render live preview inline citations
  • ✅ Render reading mode inline citations
  • ✅ Show citekey suggestions

Sử dụng Citations

Chèn citation:[@ trong note → autocomplete hiện ra → chọn paper → Enter.

Theo nghiên cứu của [@nguyen2024sustainable], sustainable packaging...

Kết quả:

Mode Hiển thị
Edit mode [@nguyen2024sustainable]
Live Preview (Nguyen et al., 2024)
Reading mode (Nguyen et al., 2024)

References Panel: Cmd/Ctrl + P → "Pandoc Reference List: Show reference list" → Panel sidebar hiển thị tất cả citations trong note, formatted theo APA với DOI links.

Troubleshooting

Vấn đề Giải pháp
"No citations found" Kiểm tra path .bib có đầy đủ extension không
Citation không render Citekey phải khớp chính xác với file .bib
Autocomplete không hiện Bật "Show citekey suggestions" trong settings
Paper mới không hiện Đợi Zotero sync (nếu đã bật Keep updated)

Resources


Bài tiếp theo: Dataview Dashboard - Quản lý papers như database

Bài trước: ZotLit Templates - Color-Coding System

Series: Research Tool Stack

Dataview Dashboard: Quản lý Papers như Database | Research Tools

Library đã có 50+ papers. Mỗi lần cần tìm "papers về nostalgia từ 2020 trở đi" phải scroll qua từng folder. Muốn biết đã đọc bao nhiêu, còn bao nhiêu chưa đọc - không có cách nào ngoài đếm tay.

Dataview biến vault thành database, cho phép query và filter notes như SQL. Bài này hướng dẫn tạo Paper Dashboard để track reading progress và filter papers theo nhiều tiêu chí.

Bài này yêu cầu literature notes có frontmatter đầy đủ. Xem bài ZotLit Templates để setup template trước.

Dataview là gì?

Tính năng Mô tả
📊 Query như Database Filter papers theo year, journal, status, tags
📈 Statistics Đếm số papers, group theo tiêu chí
🔄 Auto-update Kết quả tự động cập nhật khi thay đổi notes
☑️ Task Tracking Hiển thị tất cả tasks chưa hoàn thành

Cài đặt Dataview

Settings → Community plugins → Browse → tìm "Dataview" (by Michael Brenan) → Install → Enable.

Cấu hình: Settings → Dataview → bật:

  • ✅ Enable inline queries
  • ✅ Enable JavaScript queries
  • ✅ Enable inline JavaScript queries

Frontmatter cho Literature Notes

Dataview query dựa trên frontmatter. Đảm bảo template zt-field.eta có các fields:

title: "Paper Title"
citekey: "nguyen2024sustainable"
authors: "Nguyen et al."
year: "2024"
journal: "Journal of Marketing"
doi: "10.1234/example"
tags:
  - paper
status: unread
Notes cũ không có frontmatter đầy đủ cần re-import từ Zotero sau khi update template.

Tạo Paper Dashboard

Tạo file mới: 2 - Source Material/Papers/_Paper Dashboard.md

Đặt tên bắt đầu bằng _ để file luôn ở đầu danh sách.

Nội dung Dashboard:

# 📊 Paper Dashboard

## 📥 Chưa đọc (Unread)

```dataview
TABLE authors, year, journal
FROM "2 - Source Material/Papers"
WHERE status = "unread" AND !contains(file.name, "Dashboard")
SORT year DESC
```

---

## ✅ Đã đọc (Read)

```dataview
TABLE authors, year, journal
FROM "2 - Source Material/Papers"
WHERE status = "read" AND !contains(file.name, "Dashboard")
SORT year DESC
```

---

## 📚 Theo Journal

```dataview
TABLE WITHOUT ID journal as "Journal", length(rows) as "Số papers"
FROM "2 - Source Material/Papers"
WHERE journal AND !contains(file.name, "Dashboard")
GROUP BY journal
SORT length(rows) DESC
```

---

## 📊 Thống kê theo Năm

```dataview
TABLE WITHOUT ID year as "Năm", length(rows) as "Số papers"
FROM "2 - Source Material/Papers"
WHERE year AND !contains(file.name, "Dashboard")
GROUP BY year
SORT year DESC
```

---

## 🏷️ Theo Topic

### Nostalgia

```dataview
TABLE authors, year, journal
FROM "2 - Source Material/Papers"
WHERE contains(tags, "nostalgia") AND !contains(file.name, "Dashboard")
SORT year DESC
```

### Consumer Behavior

```dataview
TABLE authors, year, journal
FROM "2 - Source Material/Papers"
WHERE contains(tags, "consumer-behavior") AND !contains(file.name, "Dashboard")
SORT year DESC
```

---

## 🆕 Thêm gần đây

```dataview
TABLE authors, year, status
FROM "2 - Source Material/Papers"
WHERE citekey AND !contains(file.name, "Dashboard")
SORT file.ctime DESC
LIMIT 10
```

---

## ☑️ Action Items chưa hoàn thành

```dataview
TASK
FROM "2 - Source Material/Papers"
WHERE !completed
GROUP BY file.link
LIMIT 50
```

---

## 📈 Tổng quan

| Metric | Count |
|--------|-------|
| **Tổng papers** | `$= dv.pages('"2 - Source Material/Papers"').where(p => p.citekey && !p.file.name.includes("Dashboard")).length` |
| **Đã đọc** | `$= dv.pages('"2 - Source Material/Papers"').where(p => p.status == "read").length` |
| **Chưa đọc** | `$= dv.pages('"2 - Source Material/Papers"').where(p => p.status == "unread").length` |

Sử dụng Dashboard

Đánh dấu paper đã đọc: Mở paper → Properties panel (phía trên note) → field status → đổi unread thành read. Dashboard tự động cập nhật.

Thêm topic tags: Properties panel → tags → thêm tag mới như nostalgia, consumer-behavior. Queries theo topic sẽ tự động hiển thị paper.

Gợi ý Tags

Topic Tag
Hành vi người tiêu dùng consumer-behavior
Quảng cáo hoài niệm nostalgia
Thương hiệu brand, brand-authenticity
Chuỗi cung ứng supply-chain
Bền vững sustainability, green

Query Syntax cơ bản

TABLE field1, field2      # Hiển thị dạng bảng
FROM "folder/path"        # Lấy notes từ folder
WHERE condition           # Điều kiện lọc
SORT field DESC           # Sắp xếp (DESC = mới nhất trước)
LIMIT 10                  # Giới hạn số kết quả

Điều kiện thường dùng:

Điều kiện Ý nghĩa
status = "unread" Chưa đọc
year >= 2020 Từ 2020 trở đi
contains(tags, "nostalgia") Có tag nostalgia
!contains(file.name, "Dashboard") Loại trừ Dashboard

Resources


Bài đầu series: Foundation - Setup Zotero + Obsidian

Bài trước: Pandoc Reference List - Citations đẹp

Series: Research Tool Stack