Skip to content
Personal Bookmark System.
Branch: master
Clone or download
Latest commit 1f38741 Jun 11, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin refactor(create-index): Move updating tags to create-index tools Jun 3, 2019
test test: add tests for repository-collection Jun 3, 2019
.gitignore initial commit Jun 2, 2019
.travis.yml initial commit Jun 2, 2019
LICENSE initial commit Jun 2, 2019 Update README Jun 2, 2019
package.json 1.1.3 Jun 10, 2019
tsconfig.json initial commit Jun 2, 2019
yarn.lock fix: Does not update if tags is not changed Jun 8, 2019


personal bookmark system.


Install with npm:

npm install asocial-bookmark


  • ECMAScript 2017+


GitHub mode.

import { AsocialBookmark } from "asocial-bookmark";

(async () => {
    if (!process.env.GH_TOKEN) {
        throw new Error("Set env GH_TOKEN=xxx");
    const asocialBookmark = new AsocialBookmark({
        github: {
            owner: "azu",
            repo: "mybookmarks",
            ref: "heads/master",
            token: process.env.GH_TOKEN
    const date = new Date();
    const isoDate = new Date(date.getTime() - (date.getTimezoneOffset() * 60000)).toISOString();
    await asocialBookmark.updateBookmark({
        title: "example",
        url: "",
        content: "description for example",
        date: isoDate,
        tags: ["example"]

    const bookmark = await asocialBookmark.getBookmark({
        url: "",
        date: new Date().toUTCString()
    console.log("bookmark", bookmark);
    const tags = await asocialBookmark.getTags();
    console.log("tags", tags);


RUN following CLI in your bookmark repository.

Migrate はてなブックマーク to asocial-bookmark

$ cd your-bookmarks-repository/
$ migrate-hatenabookmark-to-asocial-bookmark --hatena <user-name>

Create index.json that includes all bookmarks.

$ cd your-bookmarks-repository/
$ asocial-bookmark-create-index

How to create your bookmark repository

WIP: It is complex workflow.

  1. Create your repository.
    • Example:{your}/mybookmarks
  2. Convert existing bookmark like "はてなブックマーク" to asocial-bookmark
  3. Setup CI/CD - Netlify is useful in this case
    • Run $ asocial-bookmark-create-index that create index.json before each deploy
    • Enable CORS for https://<your-bookmark>/index.json
    • All bookmarks: https://<your-bookmark>/index.json
    • All tags: https://<your-bookmark>/tags.json
    • Block bookmarks by month: https://<your-bookmark>/:year/:month/index.json

.netlify.toml in your bookmark repository:

# example netlify.toml
  command = "asocial-bookmark-create-index"
  functions = "functions"
  publish = "."
  #  status = 200
  for = "/index.json"
    Access-Control-Allow-Origin = "*"
  1. Post bookmark to your repository via postem

src/service.js in postem

const path = require("path");
module.exports = [
        enabled: true,
        name: "twitter",
        indexPath: path.join(__dirname, "services/twitter/index.js")
        enabled: true,
        name: "AsocialBookmark",
        indexPath: path.join(__dirname, "services/asocial-bookmark/index.js")
  1. Search Bookmark on はてなブックマーク検索PWA
    • Input https://<your-bookmark>/index.json to "hatena user name"
    • Very Very Hack But Work!
    • Do incremental search!


See Releases page.

Running tests

Install devDependencies and Run npm test:

npm test


Pull requests and stars are always welcome.

For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D



MIT © azu

You can’t perform that action at this time.