Leave private memos on any X (Twitter) profile. Your notes stay synced across devices via Chrome storage - no servers, no accounts, no external APIs.
- Add memos to any user profile page
- Quick memo on hover cards (collapsed by default, expand with one click)
- Memos sync across your Chrome instances via
chrome.storage.sync - Light and dark theme support (auto-detects X theme)
- Bilingual: English and Korean UI
- Zero external API calls - all data stays local
- Manifest V3 compliant
The extension injects a memo box into profile pages on x.com and twitter.com, plus a compact memo toggle inside user hover cards.
All memos are stored in chrome.storage.sync using the user's screen name as the key:
{
"@username": {
"memo": "Private note text",
"updatedAt": 1712345678901
}
}This means:
- Notes are private to the browser profile that installed the extension
- Notes can sync across Chrome instances signed into the same Chrome account
- Notes are not sent to any external server by this extension
- Download or clone this repository.
- Open Chrome and go to
chrome://extensions. - Enable Developer mode.
- Click Load unpacked.
- Select this project folder.
Open any X profile page. A Memo field appears below the profile header. Type anything you want, and the note is saved automatically after a short debounce.
Hover over a user to open their profile card. Click the memo toggle to expand the note area, then type. The memo is saved automatically and reused anywhere that account appears.
This extension does not use:
- Remote APIs
- Analytics
- Authentication
- External databases
All memo data lives inside Chrome extension storage.
The UI adapts to X's current theme. The content script checks the page theme state and applies a scoped dark-mode class when needed.
manifest.json
README.md
css/
main.css
js/
background.js
content.js
_locales/
en/messages.json
ko/messages.json
images/
icon16.png
icon48.png
icon128.png
- Manifest V3 service worker is intentionally minimal
- One content script handles profile pages, hover cards, theme sync, and SPA navigation
- CSS is fully scoped with the
.x-memo-prefix to avoid collisions with X styles - Navigation is handled by listening to
pushState,replaceState, andpopstate
- The extension is designed for X profile surfaces and hover cards only
- DOM selectors may require updates if X significantly changes its internal markup
chrome.storage.synchas Chrome quota limits, so extremely large memo usage is not a target case
Twitter User Memo๋ X(ํธ์ํฐ) ํ๋กํ๋ง๋ค ๊ฐ์ธ ๋ฉ๋ชจ๋ฅผ ๋จ๊ธธ ์ ์๋ ํฌ๋กฌ ํ์ฅ ํ๋ก๊ทธ๋จ์
๋๋ค. ๋ฉ๋ชจ๋ ์ธ๋ถ ์๋ฒ๋ก ์ ์ก๋์ง ์์ผ๋ฉฐ, chrome.storage.sync์ ์ ์ฅ๋์ด ๊ฐ์ ํฌ๋กฌ ๊ณ์ ํ๊ฒฝ์์ ๋๊ธฐํ๋ ์ ์์ต๋๋ค.
- ํ๋กํ ํ์ด์ง์ ๊ฐ์ธ ๋ฉ๋ชจ ์ถ๊ฐ
- ํธ๋ฒ ์นด๋์์ ํ ๋ฒ์ ํด๋ฆญ์ผ๋ก ๋น ๋ฅธ ๋ฉ๋ชจ ์ ๋ ฅ
- X ๋ผ์ดํธ/๋คํฌ ํ ๋ง ์๋ ๊ฐ์ง
- ์์ด/ํ๊ตญ์ด ๋ก์ผ์ผ ์ง์
- ์ธ๋ถ API ํธ์ถ ์์
- Manifest V3 ๊ธฐ๋ฐ
- ์ด ์ ์ฅ์๋ฅผ ๋ด๋ ค๋ฐ์ต๋๋ค.
- ํฌ๋กฌ์์
chrome://extensions๋ก ์ด๋ํฉ๋๋ค. - ๊ฐ๋ฐ์ ๋ชจ๋๋ฅผ ์ผญ๋๋ค.
- ์์ถํด์ ๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ๋ก๋ํฉ๋๋ค๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ด ํ๋ก์ ํธ ํด๋๋ฅผ ์ ํํฉ๋๋ค.
๋ฉ๋ชจ๋ ์๋์ ๊ฐ์ ํํ๋ก ์ ์ฅ๋ฉ๋๋ค.
{
"@username": {
"memo": "๊ฐ์ธ ๋ฉ๋ชจ",
"updatedAt": 1712345678901
}
}์ผ๋ฐ์ ์ธ ๋ธ๋ผ์ฐ์ ์บ์ ์ญ์ ๋ง์ผ๋ก๋ ๋ฉ๋ชจ๊ฐ ์ฌ๋ผ์ง์ง ์์ง๋ง, ํ์ฅ ํ๋ก๊ทธ๋จ ์ ๊ฑฐ ๋๋ ํ์ฅ ๋ฐ์ดํฐ ์ด๊ธฐํ ์์๋ ๋ฉ๋ชจ๊ฐ ์ญ์ ๋ ์ ์์ต๋๋ค.