{"id":13941186,"url":"https://github.com/byteyilabs/yi-note","last_synced_at":"2026-01-16T03:20:39.784Z","repository":{"id":40245439,"uuid":"258931609","full_name":"byteyilabs/yi-note","owner":"byteyilabs","description":"YiNote browser extension - online video note taking tool","archived":false,"fork":false,"pushed_at":"2024-05-17T15:25:29.000Z","size":24795,"stargazers_count":362,"open_issues_count":59,"forks_count":49,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-07-21T11:45:45.832Z","etag":null,"topics":["bookmarks","chrome-extension","elearning","evernote","firefox-addon","googledocs","javascript","mooc","note-taking","onenote","online-video","productivity","youtube"],"latest_commit_sha":null,"homepage":"https://www.yinote.co","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/byteyilabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"github":["shuowu"],"patreon":"yinote","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-04-26T03:37:38.000Z","updated_at":"2025-07-20T21:09:29.000Z","dependencies_parsed_at":"2024-05-17T16:39:03.760Z","dependency_job_id":"bb437852-0fa4-4975-aa09-77c1b8436a88","html_url":"https://github.com/byteyilabs/yi-note","commit_stats":null,"previous_names":["byteyilabs/yi-note","shuowu/yi-note"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/byteyilabs/yi-note","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byteyilabs%2Fyi-note","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byteyilabs%2Fyi-note/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byteyilabs%2Fyi-note/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byteyilabs%2Fyi-note/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/byteyilabs","download_url":"https://codeload.github.com/byteyilabs/yi-note/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/byteyilabs%2Fyi-note/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28477176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T03:13:13.607Z","status":"ssl_error","status_checked_at":"2026-01-16T03:11:47.863Z","response_time":107,"last_error":"SSL_read: 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":["bookmarks","chrome-extension","elearning","evernote","firefox-addon","googledocs","javascript","mooc","note-taking","onenote","online-video","productivity","youtube"],"created_at":"2024-08-08T02:01:13.521Z","updated_at":"2026-01-16T03:20:39.755Z","avatar_url":"https://github.com/byteyilabs.png","language":"JavaScript","readme":"**YiNote 2.0 Release Note**: We are excited to announce the release of YiNote 2.0. This release brings a host of new features, improvements, and bug fixes. Get started with [YiNote 2.0](https://yinote.co/) to explore the enhance note-taking experience.\n\n# YiNote Browser Extension\n\nYiNote, aka TurboNote Chrome Extension, is an effective tool to take and share notes while watching online videos.\n\n\u003cimg src=\"assets/hero.png\" /\u003e\n\n## Installation\n\n\u003ca href=\"https://chrome.google.com/webstore/detail/yinote/fhpgggnmdlmekfdpkdgeiccfkignhkdf\"\u003e\u003cimg src=\"assets/chrome-48.png\"\u003e\u003c/a\u003e\n\u003ca href=\"https://microsoftedge.microsoft.com/addons/detail/gieehphfgjfjmeejdohpdiajmicjnfbh\"\u003e\u003cimg src=\"assets/microsoft-edge-48.png\"\u003e\u003c/a\u003e\n\n## Table of Contents\n\n- [Introduction](#introduction)\n  - [Purpose and history](#purpose-and-history)\n  - [Features](#features)\n- [Get started](#get-started)\n  - [How to use](#how-to-use)\n  - [Development](#development)\n    - [Prerequisite](#prerequisite)\n    - [Install dependencies](#install-dependencies)\n    - [Start development](#start-development)\n- [About the project](#about-the-project)\n  - [Project components](#project-components)\n  - [Tech stack](#tech-stack)\n  - [Browser support](#browser-support)\n- [Contribute](#contribute)\n  - [As a community](#as-a-community)\n  - [As a developer](#as-a-developer)\n  - [Translate YiNote](#translate-yinote)\n- [Support YiNote in your website](#support-yinote-in-your-website)\n- [Roadmap](#roadmap)\n- [FAQs](#faqs)\n- [License](#license)\n\n## Introduction\n\n### Purpose and history\n\nYiNote, aka TurboNote chrome extension, is developed to help online learner and video editor to bookmark thoughts and ideas in a fine-grained way while working or learning with online materials. It was developed in 2016 as a side project, and luckily loved by thousands users all around the world.\n\nDuring the COVID-19 pandemic, I rewrote the extension in a more scalable and maintainable approach. Hopefully it can fill the needs from different users, and boost your learning experience to next level.\n\n### Features\n\n- Take time-stamped note while watching online video, currently supported video formats/platform:\n  - Youtube video\n  - Embedded youtube iframe video\n  - HTML5 video\n  - Local video via browser\n- Send notes to popular note platforms\n  - Google Docs\n  - MS OneNote\n  - Evernote\n- Support markdown styling in editor\n- Generate PDF with video screenshot\n- Annotate screenshot\n- Bookmark video\n- Tag bookmarks\n- Search through bookmarks and notes\n- Export and import of data\n\n### Get started\n\n#### How to use\n\nThere are serveral options to use this extension:\n\n- Install extension from web stores\n\n  Please see [Installation section](#installation) to install extension from official platform stores. If you are user before v1.0.0, please checkout [Migrations Guide](/MIGRATING.md) for more information.\n\n- Build and install extension locally\n  \n  You can also build the extension, then run it locally. Please see [Development](#development) for more information.\n\n#### Development\n\n##### Prerequisite\n\nSuggested environment:\n\n- Node \u003e= 10.0.0\n- NPM \u003e= 6.0.0\n\n##### Install dependencies\n\n```bash\nyarn install\n```\n\n##### Start development\n\nRun `yarn start:ext`.\n\nFor `content script` change, you need to reload the extension in `chrome://extensions` tab.\n\nFor `background` and `options` changes, just refresh the page should be able to load the changes.\n\n`playground` mode is also provided to easy `content script` development. This mode simulates `content script` to inject UI widget in page served from `webpack dev server`\n\nFor more information about how to develop browser extensions, please refer to [Chrome extension get started](https://developer.chrome.com/extensions/getstarted)\n\n## About the project\n\n### Project components\n\nThis extension inject [content script](https://developer.chrome.com/extensions/content_scripts) to display UI widget and interact with host page.\n\n[Background Scripts](https://developer.chrome.com/extensions/background_pages) is used for message handling and handling data migrations.\n\n[Options page](https://developer.chrome.com/extensions/options) is provided to give more webpage real estate for data management and configuring settings.\n\nYiNote store data in `browser.storage` on user's local device.\n\n### Tech stack\n\nThanks for the open source community. YiNote depends on lots of awesome open source modules. In the following part, I'll only list part of them to share base knowledge of the how this project is built.\n\n- [React](https://reactjs.org/) for UI components\n- [React Router](https://reacttraining.com/react-router/web/guides/philosophy) for routing. `MemoryRouter` is used for `content script`, `HashRouter` is used for `options` page\n- [Easy Peasy](https://easy-peasy.now.sh/) for state management\n- [react-i18next](https://react.i18next.com/) for internationalization\n- [Styled Components](https://styled-components.com/) to write `cssinjs` styled styles\n- [Material UI](https://material-ui.com/) for quickly wrapup complex UI components\n- [Webpack](https://webpack.js.org/) as bundler\n\n### Browser support\n\nYiNote leverages mozilla's [Web extension polyfill](https://github.com/mozilla/webextension-polyfill) to achieve better support for Chrome, Firefox and other Chrome-compatible browsers. For detailed support informarion, please see [Supported Browsers](https://github.com/mozilla/webextension-polyfill#supported-browsers)\n\n## Contribute\n\n### As a community\n\n- Expose YiNote to more people, share it via blog post, facebook, twitter etc.\n- Answer questions in [the issue tracker](https://www.github.com/shuowu/yi-note/issues)\n- Support financially on [Patreon](https://www.patreon.com/yinote) and [GitHub Sponsor](https://github.com/sponsors/shuowu)\n\n### As a developer\n\nPlease read the [Contribution Guide](/CONTRIBUTING.md)\n\n### Translate YiNote\n\nYiNote only supports English currently, please help translate YiNote to make it accessible to more users. To translate please follow the [English message json file](https://github.com/shuowu/yi-note/blob/master/extension/_locales/en/messages.json) and translate the content in `message` field into other languages. For detailed information, please follow this [Browser extension i18n doc](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization)\n\nAll kinds of contributions from anyone are always welcomed!\n\n## Support YiNote in your website\n\nIf you have a video website and want to make it work with YiNote, but unfortunately YiNote is not able to properly detect video on your website. There are serveral options you can try.\n\n- Add a new Player to YiNote by following this [pull request](https://github.com/shuowu/yi-note/pull/31)\n\n- Add player hook in your website.\n  \n  1. Add data attribute, `[data-yinote=\"yinote-hook-player\"]`, to your video element. So YiNote can properly locate your video element.\n  2. Add message listener to watch on video action messages from YiNote.\n  \n  ```js\n  window.addEventListener('message', event =\u003e {\n    const { data } = event;\n    if (data.from !== 'yi-note') {\n      return;\n    }\n\n    switch (data.action) {\n      case 'play':\n        // handle play video\n        return;\n      case 'pause':\n        // handle pause video\n        return;\n      case 'seek':\n        // get secondsToSeek from data.data\n        // then seek to certain time with your player\n        return;\n      case 'getCurrentTime':\n        // get current time from your player, then\n        window.postMessage({ ...data, data: $currentTime }, *);\n        return;\n      case 'getDuration':\n        // get duration from your player, then\n        window.postMessage({ ...data, data: $duration }, *);\n        return;\n    }\n  }, false);\n  ```\n\n## Roadmap\n\n- (Done) Integration with popular note / document platforms, like Evernote, onenote, google doc.\n\n- (Done) Sync notes from mooc platforms\n\n- Web article annotation\n\n- Cloud support\n\n- Fine grained note sharing\n\n- Multiple devices support (Desktop browser, mobile devices)\n\n## FAQs\n\n### How to share notes with others?\n\n- YiNote can send notes to Evernote, MS OneNote, Google Docs since v1.2.0. You can firstly send notes to one of the supported services, then generate share link from there.\n- You can also export notes as JSON file in options page, then send the exported JSON file out. Whoever get the exported file can then import it via options page.\n  \n### What should I prepare if I decide not to use YiNote extension any more?\n\nYiNote save users data in chrome local storage (per extension), which means delete the extension will also erase saved notes from your browser. YiNote provides a backup strategy in options page to export local data into a json file. Please make sure you backup your data before delete the extension. Cloud support will be provided in the future to achieve better sync and backup.\n\n### Why I bookmarked same title and thumbnail for different videos on Youtube?\n\nYoutube don't update page metas, like title and thumbnails, when video changed in page. So reload page is needed to make sure YiNote can capture proper metadata for the video. YiNote also enabled settings in options page to enable auto reload when video change. Page domain, like `www.youtube.com`, need to be added when enable this setting. YiNote only applys reload behaviour to listed domains in the settings page.\n\n## License\n\nCopyright (c) 2016 - now\n\nLicensed under the GNU GPL3.0 License. [View license](/LICENSE)\n","funding_links":["https://github.com/sponsors/shuowu","https://patreon.com/yinote","https://www.patreon.com/yinote"],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyteyilabs%2Fyi-note","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbyteyilabs%2Fyi-note","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbyteyilabs%2Fyi-note/lists"}