{"id":48779729,"url":"https://github.com/lisaross/save-to-tana","last_synced_at":"2026-04-13T13:34:23.533Z","repository":{"id":294733950,"uuid":"987906381","full_name":"lisaross/save-to-tana","owner":"lisaross","description":"Chrome extension to save web content to Tana with structured fields and supertags. Proof of concept—some sites may not work.","archived":false,"fork":false,"pushed_at":"2025-09-10T23:03:59.000Z","size":2773,"stargazers_count":1,"open_issues_count":6,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-11T00:08:31.975Z","etag":null,"topics":["chrome-extension","tana"],"latest_commit_sha":null,"homepage":"https://aiforsystems.com (coming soon)","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lisaross.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-21T19:05:56.000Z","updated_at":"2025-09-10T23:14:00.000Z","dependencies_parsed_at":"2025-05-21T20:33:33.814Z","dependency_job_id":"1b8b78c1-88aa-4f56-a34b-069133a512d6","html_url":"https://github.com/lisaross/save-to-tana","commit_stats":null,"previous_names":["lisaross/save-to-tana"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/lisaross/save-to-tana","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lisaross%2Fsave-to-tana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lisaross%2Fsave-to-tana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lisaross%2Fsave-to-tana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lisaross%2Fsave-to-tana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lisaross","download_url":"https://codeload.github.com/lisaross/save-to-tana/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lisaross%2Fsave-to-tana/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31755148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T13:27:56.013Z","status":"ssl_error","status_checked_at":"2026-04-13T13:21:23.512Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome-extension","tana"],"created_at":"2026-04-13T13:34:09.652Z","updated_at":"2026-04-13T13:34:23.505Z","avatar_url":"https://github.com/lisaross.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Save to Tana Chrome Extension\n\nA Chrome extension that saves web page content directly to your Tana workspace with just one click. Extract structured information from articles, blog posts, and documentation automatically.\n\n![Save to Tana Demo](assets/extensionicon.png)\n*Save any web page to your Tana workspace with structured fields*\n\n## 📋 What You'll Need Before Starting\n\n\u003e **⚠️ Important:** You must create a specific supertag structure in Tana before installing the extension.\n\n## 🏗️ Step 1: Create Your Tana Supertag (Required)\n\n**Before installing the extension**, you need to set up a supertag in your Tana workspace:\n\n### Create the Supertag\n1. In your Tana workspace, create a new supertag called `#save-to-tana`\n2. Add these **4 required fields** to your supertag (exact names required):\n\n![Tana Supertag Setup](assets/supertag.png)\n*Required fields for the #save-to-tana supertag*\n\n**Required Fields:**\n- **URL** (field type: URL)\n- **Author** (field type: Text)\n- **Description** (field type: Text)  \n- **Content** (field type: Text)\n\n\u003e **⚠️ Critical:** The field names must match exactly: `URL`, `Author`, `Description`, `Content`\n\n### Get Your API Schema\n1. Navigate to your `#save-to-tana` supertag in Tana\n2. Press **Cmd+K** (or Ctrl+K on Windows/Linux)\n3. Search for and select **\"Show API Schema\"**\n4. Click the **\"Copy payload\"** button\n\n![Tana API Schema](assets/api-schema.png)\n*Tana's Show API Schema feature with Copy payload button*\n\nKeep this copied - you'll need it in Step 3!\n\n## 📥 Step 2: Download \u0026 Install Extension\n\n### Download\n1. Go to the [Releases page](https://github.com/lisaross/save-to-tana/releases)\n2. Download the latest ZIP file (e.g., `save-to-tana-v1.1.0.zip`)\n3. Unzip the file to a folder on your computer\n\n### Install in Chrome\n1. Open Chrome and go to `chrome://extensions/`\n\n![Chrome Extensions Page](assets/extensions.png)\n*Chrome extensions page with Developer mode toggle*\n\n2. Enable **\"Developer mode\"** using the toggle in the top right\n3. Click **\"Load unpacked\"** and select the unzipped `dist` folder\n4. The extension icon should appear in your Chrome toolbar\n\n![Extension Installed](assets/extensionicon.png)\n*Save to Tana extension icon in Chrome toolbar*\n\n\u003e **✅ Success:** You should see the Save to Tana icon in your browser toolbar.\n\n## ⚙️ Step 3: Configure the Extension\n\n**Setup time: ~5 minutes**\n\n### Get Your Tana API Token\n1. In Tana, go to **Settings \u003e API Tokens**\n2. Create a new token for the extension\n3. Copy the token (keep it safe!)\n\n### Configure Extension Settings\n1. **Right-click** the extension icon and select **\"Options\"**\n\n![Extension Options](assets/options.png)\n*Save to Tana extension options page*\n\n2. **Paste** the JSON schema from Step 1 in the \"Paste Schema \u0026 Extract\" section\n3. **Click** \"Extract Schema\" - this will automatically fill in the field IDs\n4. **Enter** your Tana API Token from above\n5. **Enter** your Target Node ID (where you want saved content to go):\n   - Right-click any node in Tana\n   - Select \"Copy link\"  \n   - The ID is the part after `nodeid=` in the URL\n6. **Click** \"Save Options\"\n\n![Configuration Complete](assets/options.png)\n*Successfully configured extension showing all required fields*\n\n\u003e **🎉 Setup Complete!** You're now ready to save web pages to Tana.\n\n## 📱 How to Use\n\n### 🖱️ Method 1: Extension Popup (Simple)\n\n1. **Navigate** to any web page you want to save\n2. **Click** the Save to Tana extension icon in your toolbar\n\n*Save to Tana popup with content options*\n\n3. **Choose** what to include:\n   - ✅ **Include page content** - Main article/page text\n   - ✅ **Include page title** - Use page title (unchecked = uses URL as title)\n4. **Click** \"Save to Tana\"\n\n*Success message after saving content*\n\n### ⚡ Method 2: Keyboard Shortcuts (Fastest)\n\n![Keyboard Shortcuts](assets/keyboardshortcuts.png)\n*Available keyboard shortcuts for quick saving*\n\n- **Quick Save**: `Alt+Shift+T` (Windows/Linux) or `Cmd+Shift+S` (Mac)\n- **Save with Notes**: `Alt+Shift+N` (Windows/Linux) or `Cmd+Shift+N` (Mac)\n\n### 🔍 Method 3: Address Bar (Omnibox)\n\n![Omnibox Usage](assets/omnibar.png)\n*Type 'tana' in the address bar to quickly save pages*\n\n1. Click in the browser address bar\n2. Type `tana` followed by a space\n3. Enter optional notes or custom title\n4. Press Enter to save\n\n### 📋 Method 4: Right-Click Menus\n\n![Right-Click Menu](assets/rightclick.png)\n*Right-click context menu options for saving content*\n\n- **Right-click on any webpage**: Choose \"Save page to Tana\"\n- **Right-click on selected text**: Choose \"Save selection to Tana\"\n- **Add notes**: Choose \"Save with notes\" options for custom annotations\n\n### 💬 Method 5: Quick Capture Overlay\n\n![Add Notes Dialog](assets/addnotesdialog.png)\n*Quick capture overlay for adding notes before saving*\n\nWhen using \"save with notes\" options, an overlay appears where you can:\n- Preview what's being saved (title and URL)\n- Add personal notes before saving\n- Use keyboard shortcuts (`Ctrl/Cmd+Enter` to save, `Escape` to cancel)\n\n## 📄 What Gets Saved\n\nThe extension creates a new node in your target location with:\n\n![Saved Content Result](assets/afterimport-withnotes.png)\n*Example of saved content in Tana with all fields populated*\n\n- **Node title** - Page title (or URL if title unchecked)\n- **#save-to-tana** supertag applied\n- **URL field** - Link to the original page\n- **Author field** - Extracted from meta tags (when available)\n- **Description field** - Page meta description (when available)\n- **Content field** - Main page content (when \"Include page content\" is checked)\n\n## 🛠️ Troubleshooting\n\n### Common Issues\n\n#### \"Extension not fully configured\" message\n- **Check:** Have you completed all setup steps?\n- **Solution:** Go to Options and verify all fields are filled in\n- **Verify:** API token is valid and not expired\n\n#### \"Failed to save to Tana\" error\n- **Check:** Is your Target Node ID correct?\n- **Solution:** Copy a fresh node link from Tana and extract the ID\n- **Verify:** Your API token has the necessary permissions\n\n#### No content extracted from page\n- **Try:** Refreshing the page before clicking the extension\n- **Check:** Some sites block content extraction for security\n- **Alternative:** Use \"Save selection\" to manually select content\n\n#### Extension not responding\n- **Solution:** Reload the extension in `chrome://extensions/`\n- **Check:** Make sure the extension is enabled\n- **Try:** Restarting Chrome if issues persist\n\n### Getting Help\n\nIf you need assistance:\n1. Verify your Tana supertag has all 4 required fields with exact names\n2. Test with a simple website (like a news article)\n3. Check the browser console for error messages\n4. [Create an issue](https://github.com/lisaross/save-to-tana/issues) with:\n   - Description of the problem\n   - Steps you've tried\n   - Example website where the issue occurs\n\n## 🚧 Current Status\n\nThis extension works well with most websites! While we're continuously improving compatibility and adding features, here's what you can expect:\n\n**What works great:**\n- ✅ News sites, blogs, and documentation\n- ✅ Standard article and content pages\n- ✅ Metadata extraction from most sites\n- ✅ Large content handling (auto-truncated at 100,000 characters)\n- ✅ Multiple save methods and user-friendly interface\n\n**Known limitations:**\n- ⚠️ Some sites may block content extraction for security reasons\n- ⚠️ Dynamic content loaded by JavaScript may not be captured\n- ⚠️ Complex layouts may not extract content cleanly\n\nYour feedback helps us improve! Please [share your experience](https://github.com/lisaross/save-to-tana/issues).\n\n## 🔒 Privacy \u0026 Security\n\nYour data security is important:\n\n- **Local processing** - All content extraction happens in your browser\n- **Direct to Tana** - Data goes directly to your Tana workspace only\n- **No third parties** - No data is sent to any other servers\n- **API token storage** - Stored securely in Chrome's local storage\n- **Minimal permissions** - Extension only accesses the current tab\n\n\u003e **🔐 Security tip:** Only install extensions from trusted sources. Your API token is sensitive - regenerate it if you suspect it may be compromised.\n\n---\n\n## 👩‍💻 Developer Notes\n\n### Technical Stack\n- **TypeScript 5.4+** for type safety and modern development\n- **Vite** for fast, modern bundling and development\n- **Chrome Extension Manifest V3** for security and performance\n- **No external dependencies** - uses only browser and Chrome APIs\n\n### Project Structure\n```\nsave-to-tana/\n├── dist/                 # Built extension files\n├── src/                  # TypeScript source\n│   ├── background.ts     # Service worker for API calls\n│   ├── content.ts        # Content extraction script\n│   ├── options.ts        # Options page functionality  \n│   ├── popup.ts          # Popup interface\n│   ├── tanaPayloadBuilder.ts # Tana API payload construction\n│   ├── types/index.ts    # TypeScript type definitions\n│   └── utils/textUtils.ts # Text processing utilities\n└── static/               # Static assets\n    ├── images/           # Extension icons\n    ├── manifest.json     # Extension manifest\n    ├── options.html      # Options page\n    ├── popup.html        # Popup interface\n    └── style.css         # Shared styles\n```\n\n### Development Commands\n- `npm run build` - Build for production\n- `npm run dev` - Build with watch mode\n- `npm run package` - Build and copy static assets\n\n### Content Extraction Logic\nThe extension uses a priority-based approach to extract main content:\n1. `\u003carticle\u003e` elements (highest priority)\n2. `\u003cmain\u003e` elements  \n3. `.main-content` class elements\n4. `\u003cbody\u003e` element (fallback)\n\nAuthor extraction attempts multiple meta tag formats and Schema.org structured data.\n\n### Tana API Integration\nThe extension constructs payloads for the Tana Input API using target node IDs, supertag IDs, and field attribute IDs. Content is automatically sanitized and truncated at 100,000 characters to prevent API errors.\n\n---\n\n*Built by [Lisa Ross](https://github.com/lisaross) for the Tana community • Not an official Tana product*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flisaross%2Fsave-to-tana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flisaross%2Fsave-to-tana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flisaross%2Fsave-to-tana/lists"}