
Security News
AI Agent Lands PRs in Major OSS Projects, Targets Maintainers via Cold Outreach
An AI agent is merging PRs into major OSS projects and cold-emailing maintainers to drum up more work.
markdown2notion
Advanced tools
Convert markdown files to notion database. The folder structure is also fully represented as tags in notion.
Convert markdown files to notion database. The folder structure is also fully represented as tags in notion.
Please refer to here for how to issue notion token and how to link with DB.
日本語の説明書👉JP-README.md
npm install markdown2notion
yarn add markdown2notion
javascript and typescript are supported.
import {markdownToNotion} from 'markdown2notion'
async function main(){
try{
await markdownToNotion(
'notion token',
'notion database id',
'markdown folder path',
'Column of notion displaying file names. Default is Title',
'Column of notion displaying folder name as tag. Default is Tags'
)
} catch (error) {
console.error(error);
}
}
Since the URL of the page changes every time you use markdownToNotion(), if you want to do something with the URL, please use this function to get the URL of the page.
import {searchPage} from 'markdown2notion'
async function main(){
try{
const result = await searchPage(
'notion token',
'notion database id',
'Column of notion displaying file names. Default is Title',
'Column of notion displaying folder name as tag. Default is Tags',
'search file name',
'search tags name array'
)
// If files with the same filename exist, multiple pages are returned.
console.log(result)// The object of the notion page is returned. url can be taken from result['results'][0]['url'] or something like that.
} catch (error) {
console.error(error);
}
}
├── docs
│ ├── sample1
│ │ ├── sample1_1
│ │ │ ├── sampleContent1_1.md
│ │ ├── sampleContent1.md
│ ├── sample2
│ │ ├── sampleContent2.md
├── src
│ ├── index.ts
├── .env

import {markdownToNotion} from 'markdown2notion'
import * as dotenv from 'dotenv'
async function main() {
dotenv.config()
const token = process.env.NOTION_TOKEN
const databaseId = process.env.NOTION_DATABASE_ID
try {
await markdownToNotion(token, databaseId, 'docs', 'Title', 'Tags');
} catch (error) {
console.error(error);
}
}
main()
NOTION_TOKEN=secret_xxxxxxxxxxxxxx
NOTION_DATABASE_ID=xxxxxxxxxxxxxxx
The folder name becomes a tag.

Filtering using tags makes it easier to access specific files.

import {searchPage} from 'markdown2notion'
import * as dotenv from 'dotenv'
async function main() {
dotenv.config()
const token = process.env.NOTION_TOKEN
const databaseId = process.env.NOTION_DATABASE_ID
const title = 'sampleContent1_1';
const tags = ['sample1_1'];
try {
const result = await searchPage(token, databaseId, 'Title', 'Tags', title, tags);
console.log(result['results'][0]['url']);
} catch (error) {
console.error('Error searching for page:', error);
}
}
main()
{
object: 'list',
results: [
{
object: 'page',
id: '33.....',
created_time: '2023-03-29T14:15:00.000Z',
last_edited_time: '2023-03-29T14:15:00.000Z',
created_by: [Object],
last_edited_by: [Object],
cover: null,
icon: null,
parent: [Object],
archived: false,
properties: [Object],
url: 'https://www.notion.so/sampleContent1_1-33...'
}
],
next_cursor: null,
has_more: false,
type: 'page',
page: {}
}
MIT
FAQs
Convert markdown files to notion database. The folder structure is also fully represented as tags in notion.
We found that markdown2notion demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
An AI agent is merging PRs into major OSS projects and cold-emailing maintainers to drum up more work.

Research
/Security News
Chrome extension CL Suite by @CLMasters neutralizes 2FA for Facebook and Meta Business accounts while exfiltrating Business Manager contact and analytics data.

Security News
After Matplotlib rejected an AI-written PR, the agent fired back with a blog post, igniting debate over AI contributions and maintainer burden.