Git Product home page Git Product logo

letttgaco / elog Goto Github PK

View Code? Open in Web Editor NEW
1.3K 7.0 66.0 3.5 MB

Markdown 批量导出工具、开放式跨平台博客解决方案,随意组合写作平台(语雀/Notion/FlowUs/飞书/我来Wolai)和博客平台(Hexo/Vitepress/Halo/Confluence/WordPress等)

Home Page: https://elog.1874.cool

License: MIT License

JavaScript 3.36% Shell 0.23% TypeScript 96.41%
blog hexo hugo notion vitepress yuque confluence docusaurus docz flowus

elog's Introduction

Elog

开放式跨端博客解决方案,随意组合写作平台(语雀/飞书/Notion/FlowUs)和博客平台(Hexo/Vitepress/Confluence/WordPress)等

PRs Welcome GitHub stars GitHub forks GitHub contributors GitHub commit activity GitHub closed issues

前言

在遇到Elog之前,你的博客可能是:

  • 本地编辑器书写 + Hexo/Hugo/Vitepress部署
  • 语雀记录
  • Notion记录和发布
  • WordPress在线书写和发布
  • GHost在线书写和发布
  • Github记录
  • 掘金/知乎等在线平台记录

可以发现,大部分博客平台要么自己提供在线编辑器,要么就让用户本地书写再进行进行部署。 可惜目前好用的编辑器大都都不是博客平台自己提供的,而是一些第三方编辑器,代表产品:

  • Notion:出色的数据库设计,灵活度非常高
  • FlowUs:仿Notion的国内文档产品,用了下还不错
  • 飞书云文档:也是一个很出色的在线协同文档工具,主打工作/团队场景,也有个人版
  • 语雀:阿里出品,笔者觉得很不错的一款在线编辑器,涵盖日常个人、工作所需要的各种场景,够用
  • Typora:一款出色的本地编辑器,支持实时预览和流程书写,可惜新版本收费了

而博客平台一般分为两类,一种是轻量化的,只负责渲染文档不提供编辑器,代表产品:

  • Hexo
  • Vitepress
  • HuGo

一种是内容管理系统软件,相对上面这些比较重,初期涉及到数据库和手动部署,拥有自己的编辑器,代表产品:

  • WordPress
  • GHost

Elog

如果我既想用最熟悉、最舒适的编辑器,又想用主流的博客平台,怎么办呢?

Elog就是为了解决这个问题而诞生的。

Elog将这些平台揉合在一起,你可以随意组合写作平台和博客平台,目前支持:

写作平台

  • Notion
  • 语雀
  • FlowUs
  • 飞书云文档
  • 我来

博客平台

  • Hexo
  • Vitepress
  • HuGo
  • Docusaurus
  • Docz
  • Halo
  • Confluence
  • WordPress

博客平台目前支持所有类似 Hexo 的框架:通过向指定目录存放 markdown 文档来进行渲染的方式

🌅 图床功能

和很多在线平台一样,Notion和语雀也同样存在图片防盗链的问题,直接将写作平台的图片链接放到其他站点的话,会加载不出来。 为了解决这个问题,Elog支持了在生成MD文件之前,将扫描到的图片上传到图床上,并对文档中的图片链接进行替换。 当前支持的图床有:

  • 本地
  • 腾讯云COS
  • 阿里云OSS
  • Github图床
  • 七牛云
  • 又拍云

你也可以通过自定义图床插件的方式上传文档图片到任意图床

社区图床插件

✨ 特性

  • 📝 写作平台支持语雀/Notion/FlowUs/飞书云文档
  • 🚀 博客平台支持所有通过渲染本地 Markdown 文档生成静态站点的博客平台
  • 🚀 博客平台支持Halo/Confluence/WordPress站点
  • 🌅 图床平台支持存放到本地或上传到阿里云/腾讯云/Github/七牛云/又拍云
  • 📦 支持生成Front Matter Markdown
  • ⚙️ 支持自定义文档处理适配器
  • 🛡 支持自定义图床插件

更多详情见 ELog 开发计划

🔨 快速上手

Elog 使用文档

备用文档地址1:https://1874.notion.site

备用文档地址2:https://wordpress.1874.cool

📦 开箱即用

🔗 最佳实践

👬 社区生态

可访问 awesome-elog仓库 查看相关资源,如果你也有优秀的实践或工具,欢迎提交PR到 awesome-elog

🌍 交流与反馈

如果遇到问题,请 提交 issue 或在 discussions 中留言

🥫支持

  • 我有两只猫,假如觉得 Elog 让你生活更美好,可以给猫 喂罐头 🥫
  • 如果你喜欢 Elog,可以在 Github Star,更欢迎推荐给你志同道合的朋友使用。

🌹 感谢

感谢以下用户贡献了很多bugs和建议

感谢下列项目提供了灵感

🔗 友情链接

  • youdaonote-pull 有道云笔记导出工具
  • NotionNext 相比 Elog,支持更多 Notion 富文本格式。使用 NextJS + Notion API 实现的,支持多种部署方案的静态博客,无需服务器、零门槛搭建网站,为Notion和所有创作者设计

elog's People

Contributors

cyolc932 avatar jasonma0012 avatar letttgaco avatar ql-isaac avatar vannvan avatar ymriri avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

elog's Issues

Notion + Elog + github 图床,更新文章后封面图上传图片失败后变成空

你当前使用的Elog版本

0.14.0

Elog配置文件

module.exports = {
  write: {
    platform: 'notion',
    notion: {
      token: process.env.NOTION_TOKEN,
      databaseId: process.env.NOTION_DATABASE_ID,
      filter: true, // {property: 'status', select: {equals: '已发布'}}
    },
  },
  deploy: {
    platform: 'local',
    local: {
      outputDir: './source/_posts',
      filename: 'title',
      format: 'markdown',
      frontMatter: {
        enable: true,
        // include:["status","tags","cover","category","excerpt","index_img","banner_img","archive"],
        exclude:[],
        timeFormat: true,
      },
      formatExt: './format-image.js',
    }
  },
  image: {
    enable: true,
    platform: 'github',
    local: {
      outputDir: './source/images',
      prefixKey: '/image',
      pathFollowDoc: false,
    },
    github: {
      token: process.env.GITHUB_TOKEN,
      user: process.env.ELOG_GITHUB_USER,
      repo: process.env.ELOG_GITHUB_REPO,
      branch: 'cdn',
      prefixKey: 'image',
      host: 'cdn.jsdelivr.net'
    },
  }
}

发生了什么?

新文章图片可能都是新上传github,所以没问题,但是一但修改了文章,同时自定义了 format-image.js, 会导致封面图丢失

format-image.js

const { matterMarkdownAdapter } = require('@elog/cli')
const path = require("path");

/**
 * 自定义文档处理器
 * @param {DocDetail} doc doc的类型定义为 DocDetail
 * @param {any} imageClient 图床下载器
 * @return {Promise<DocDetail>} 返回处理后的文档对象
 */
const format = async (doc, imageClient) => {
  const cover = doc.properties.cover
  // 将 cover 字段中的 notion 图片下载到本地
  if (imageClient)  {
    // 只有启用图床平台image.enable=true时,imageClient才能用,否则请自行实现图片上传
    const url = await imageClient.uploadImageFromUrl(cover, doc)
    // cover链接替换为本地图片
    doc.properties.cover = url ? url.split('danni-cool/my-blog/').join('danni-cool/my-blog@cdn/'): ''
    doc.properties.index_img = doc.properties.cover
    doc.properties.banner_img = doc.properties.cover
  }
  doc.properties.date = doc.properties.publishDate || doc.properties.Created
  doc.properties.update = doc.properties['Last Updated']
  delete doc.properties['Last Updated']
  delete doc.properties.Created
  delete doc.properties.publishDate
  delete doc.properties.Name
  delete doc.properties.urlname
  doc.body = matterMarkdownAdapter(doc);
  return doc;
};


module.exports = {
  format
};

Elog错误日志

下载成功  https://images.unsplash.com/photo-1683114010575-3ead4403180e?ixlib=rb-4.0.3&q=85&fm=jpg&crop=e
          ntropy&cs=srgb
请求失败  {"message":"Invalid request.\n\n\"sha\" wasn't supplied.","documentation_url":"https://docs.gi
          thub.com/rest/repos/contents#create-or-update-file-contents"}
上传失败:00a39c743f39d5bb828f0f7bd5e20a1e.jpg 请检查图床配置

附加信息

点赞

通过阮一峰博客看到作者的项目,我在使用语雀的时候也有类似的想法,借助一个成熟的软件实现跨平台数据同步,不过目前只做了语雀的导出。语雀的token权限从一开始的普通用户到专业会员用户再到现在的超级会员才有,虽然我也是深度使用者但觉得他格局越来越小了。
所以我自己开发了一个无需token的导出工具,看作者要不要考虑一下我的思路,同时采用语雀自己的导出操作可以很好的解决#6 这个问题。

https://github.com/vannvan/yuque-tools

语雀文档的表现不一致

你当前使用的Elog版本

最新

Elog配置文件

最新

发生了什么?

我发现语雀文档里的表现和使用手册里不一致:
1、如果是文本绘图,转换之后直接消失
2、如果是画板,那么转换之后就是图片
在这里完全相反的:https://elog.1874.cool/yuque-pwd/yuque-example

Elog错误日志

No response

附加信息

No response

图床功能和hexo及windows平台的兼容性

你当前使用的Elog版本

0.13.2

Elog配置文件

module.exports = {
  write: {
    platform: 'yuque-pwd',
    yuque: {
      token: process.env.YUQUE_TOKEN,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      onlyPublic: false,
      onlyPublished: true,
    },
    'yuque-pwd': {
      username: process.env.YUQUE_USERNAME,
      password: process.env.YUQUE_PASSWORD,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      onlyPublic: false,
      onlyPublished: true,
    },
    notion: {
      token: process.env.NOTION_TOKEN,
      databaseId: process.env.NOTION_DATABASE_ID,
      filter: false, // {property: 'status', select: {equals: '已发布'}}
    },
    feishu: {
      type: 'space',
      wikiId: process.env.FEISHU_WIKI_ID,
      folderToken: process.env.FEISHU_FOLDER_TOKEN,
      appId: process.env.FEISHU_APP_ID,
      appSecret: process.env.FEISHU_APP_SECRET,
    },
    flowus: {
      tablePageId: process.env.FLOWUS_TABLE_PAGE_ID,
      filter: false, // {property: 'status',value: '已发布'}
    }
  },
  deploy: {
    platform: 'local',
    local: {
      outputDir: './source/_posts/elogs',
      filename: 'title',
      format: 'markdown',
      frontMatter: {
        enable: true,
        include: [], // 只输出include包含的属性
        exclude: [], // 不输出exclude包含的属性
      },
      catalog: true,
    },
    halo: {
      endpoint: process.env.HALO_ENDPOINT,
      token: process.env.HALO_TOKEN,
      policyName: process.env.HALO_POLICY_NAME,
      rowType: 'html',
      needUploadImage: true,
    },
    confluence: {
      user: process.env.CONFLUENCE_USER,
      password: process.env.WORDPRESS_PASSWORD,
      endpoint: process.env.WORDPRESS_ENDPOINT,
      spaceKey: process.env.CONFLUENCE_SPACE_KEY,
      rootPageId: process.env.CONFLUENCE_ROOT_PAGE_ID, // 可选
    },
    wordpress: {
      username: process.env.WORDPRESS_USERNAME,
      password: process.env.WORDPRESS_PASSWORD,
      endpoint: process.env.WORDPRESS_ENDPOINT,
    }
  },
  image: {
    enable: true,
    platform: 'local',
    local: {
      outputDir: './source/images/elogs',
      prefixKey: '/source/images/elogs',
      pathFollowDoc: true,
    },
    oss: {
      secretId: process.env.OSS_SECRET_ID,
      secretKey: process.env.OSS_SECRET_KEY,
      bucket: process.env.OSS_BUCKET,
      region: process.env.OSS_REGION,
      host: process.env.OSS_HOST,
      prefixKey: '',
    },
    cos: {
      secretId: process.env.COS_SECRET_ID,
      secretKey: process.env.COS_SECRET_KEY,
      bucket: process.env.COS_BUCKET,
      region: process.env.COS_REGION,
      host: process.env.COS_HOST,
      prefixKey: '',
    },
    qiniu: {
      secretId: process.env.QINIU_SECRET_ID,
      secretKey: process.env.QINIU_SECRET_KEY,
      bucket: process.env.QINIU_BUCKET,
      region: process.env.QINIU_REGION,
      host: process.env.QINIU_HOST,
      prefixKey: '',
    },
    upyun: {
      user: process.env.UPYUN_USER,
      password: process.env.UPYUN_PASSWORD,
      bucket: process.env.UPYUN_BUCKET,
      host: process.env.UPYUN_HOST,
      prefixKey: '',
    },
    github: {
      token: process.env.GITHUB_TOKEN,
      user: process.env.ELOG_GITHUB_USER,
      repo: process.env.ELOG_GITHUB_REPO,
      prefixKey: '',
    }
  }
}

发生了什么?

在windows下使用本地图床(其他target没有测试过)的时候,发现blog的content中图片的格式如下:
image
这会导致hexo在解析的时候使用urlencode转换图片的uri,导致图片无法正确访问
image
而将图片地址改为unix格式以后,hexo可以正常渲染

Elog错误日志

No response

附加信息

No response

飞书图片下载 api 请求过于频繁导致的错误

你当前使用的Elog版本

0.14.2-beta.0

Elog配置文件

module.exports = {
  write: {
    platform: 'feishu',
    yuque: {
      token: process.env.YUQUE_TOKEN,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      onlyPublic: false,
      onlyPublished: true,
    },
    'yuque-pwd': {
      username: process.env.YUQUE_USERNAME,
      password: process.env.YUQUE_PASSWORD,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      onlyPublic: false,
      onlyPublished: true,
    },
    notion: {
      token: process.env.NOTION_TOKEN,
      databaseId: process.env.NOTION_DATABASE_ID,
      filter: false, // {property: 'status', select: {equals: '已发布'}}
    },
    feishu: {
      type: 'space',
      wikiId: process.env.FEISHU_WIKI_ID,
      folderToken: process.env.FEISHU_FOLDER_TOKEN,
      appId: process.env.FEISHU_APP_ID,
      appSecret: process.env.FEISHU_APP_SECRET,
    },
    flowus: {
      tablePageId: process.env.FLOWUS_TABLE_PAGE_ID,
      filter: false, // {property: 'status',value: '已发布'}
    },
    wolai: {
      token: process.env.WOLAI_TOKEN,
      pageId: process.env.WOLAI_PAGE_ID,
    }
  },
  deploy: {
    platform: 'wordpress',
    local: {
      outputDir: './docs',
      filename: 'title',
      format: 'markdown',
    },
    halo: {
      endpoint: process.env.HALO_ENDPOINT,
      token: process.env.HALO_TOKEN,
      policyName: process.env.HALO_POLICY_NAME,
      rowType: 'html',
      needUploadImage: true,
    },
    confluence: {
      user: process.env.CONFLUENCE_USER,
      password: process.env.WORDPRESS_PASSWORD,
      endpoint: process.env.WORDPRESS_ENDPOINT,
      spaceKey: process.env.CONFLUENCE_SPACE_KEY,
      rootPageId: process.env.CONFLUENCE_ROOT_PAGE_ID, // 可选
    },
    wordpress: {
      username: process.env.WORDPRESS_USERNAME,
      password: process.env.WORDPRESS_PASSWORD,
      endpoint: process.env.WORDPRESS_ENDPOINT,
    }
  },
  image: {
    enable: true,
    platform: 'local',
    local: {
      outputDir: './docs/images',
      prefixKey: '/images',
      pathFollowDoc: false,
    },
    oss: {
      secretId: process.env.OSS_SECRET_ID,
      secretKey: process.env.OSS_SECRET_KEY,
      bucket: process.env.OSS_BUCKET,
      region: process.env.OSS_REGION,
      host: process.env.OSS_HOST,
      prefixKey: '',
    },
    cos: {
      secretId: process.env.COS_SECRET_ID,
      secretKey: process.env.COS_SECRET_KEY,
      bucket: process.env.COS_BUCKET,
      region: process.env.COS_REGION,
      host: process.env.COS_HOST,
      prefixKey: '',
    },
    qiniu: {
      secretId: process.env.QINIU_SECRET_ID,
      secretKey: process.env.QINIU_SECRET_KEY,
      bucket: process.env.QINIU_BUCKET,
      region: process.env.QINIU_REGION,
      host: process.env.QINIU_HOST,
      prefixKey: '',
    },
    upyun: {
      user: process.env.UPYUN_USER,
      password: process.env.UPYUN_PASSWORD,
      bucket: process.env.UPYUN_BUCKET,
      host: process.env.UPYUN_HOST,
      prefixKey: '',
    },
    github: {
      token: process.env.GITHUB_TOKEN,
      user: process.env.ELOG_GITHUB_USER,
      repo: process.env.ELOG_GITHUB_REPO,
      prefixKey: '',
    }
  }
}

发生了什么?

飞书图片下载 api 请求过于频繁之后会返回一个报错的 json,elog 将这个 json 的内容视为了一张图片,并按照保存图片的逻辑保存了 json,导致出现了问题
image
image

Elog错误日志

没有产生错误日志

附加信息

No response

【bug】飞书导出内容不完整

之前就一直催飞书的产品尽快出导出md的功能,没想到看见这个项目。但似乎有一些小问题。
我的飞书内容是:
image
导出是:
image
这里只是简单说了一个地方好些导出内容都不太完整。
image
像这个就完全没导出来
image
不知道是不是自己操作的问题

你好,当notion作为write时,导出文件至本地时,notion内的Callout模块内容,存在异常情况

你当前使用的Elog版本

0.14.0

Elog配置文件

notion: {
      token: process.env.NOTION_TOKEN,
      databaseId: process.env.NOTION_DATABASE_ID,
      filter: { property: 'status', select: { equals: 'Published' }},
      catalog: {
        enable: true,
        property: "categories"
      }
    },

发生了什么?

你好,当notion作为write时,导出文件至本地时,notion内的Callout模块内容,存在异常情况。

Elog错误日志

附加信息

notion文档内容
CleanShot 2024-05-14 at 01 52 33@2x

导出文件,生成hexo博客后的展示效果
CleanShot 2024-05-14 at 01 53 10@2x

语雀账号密码模式手写frontMatter同步异常

你当前使用的Elog版本

0.12.4

Elog配置文件

module.exports = {
  write: {
    platform: 'yuque-pwd',
    // Token 模式(需要语雀超级会员)
    yuque: {
      token: process.env.YUQUE_TOKEN,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      onlyPublic: true,
      onlyPublished: true,
    },
    // 账号密码模式
    "yuque-pwd": {
      username: process.env.YUQUE_USERNAME,
      password: process.env.YUQUE_PASSWORD,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
    }
  },
  deploy: {
    platform: 'local',
    local: {
      outputDir: './docs/',
      filename: 'title',
      format: 'markdown',
      catalog: true,
      formatExt: './elog.format.js',
      frontMatter: {
        enable: true,
        include: [], // 只输出include包含的属性
        exclude: [], // 不输出exclude包含的属性
      }
    }
  },
  image: {
    enable: true,
    platform: 'local',
    local: {
      outputDir: './docs/images',
      pathFollowDoc: true,
    }
  }
}

发生了什么?

使用语雀账号密码模式同步frontMatter出现问题,

Elog错误日志

front-matter解析失败,将返回预定义属性incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line at line 1, column 40:
                                            ... Blogging with Elog<br />classify: 关于Elog<br />description:xxx ...
预定义属性:https://elog.1874.cool/notion/raqyleng501h23p1#预定义属性

附加信息

No response

捐赠渠道

你当前使用的Elog版本

描述一下此特性

附加信息

感谢作者更新,请问有捐赠渠道吗,想请一杯奶茶。虽然还没开始使用,但真觉得是宝藏项目。

是否考虑一下发布文章撤销的功能

你当前使用的Elog版本

0.13.2

描述一下此特性

目前使用FlowUs+Hexo+Vercel进行部署,在FlowUs中我将文章状态从已发布改成进行中之后,重新sync,发现文章并没有被删除。
write部分配置如下:

  write: {
    platform: 'flowus',
    flowus: {
      tablePageId: process.env.FLOWUS_TABLE_PAGE_ID,
      filter: { property: 'status', value: '已发布' }
    }
  },

附加信息

No response

我能否使用nextjs结合这个项目呢?

你当前使用的Elog版本

0.14

描述一下此特性

我能否使用nextjs结合这个项目呢?
我想有更强的自定义界面。
仅仅只是将elog当作一个【数据库】

附加信息

No response

部署到wordpress报错DeprecationWarning: OutgoingMessage.prototype._headers is deprecated

你当前使用的Elog版本

0.14.2

Elog配置文件

module.exports = {
  write: {
    platform: 'notion',
    yuque: {
      token: process.env.YUQUE_TOKEN,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      onlyPublic: false,
      onlyPublished: true,
    },
    'yuque-pwd': {
      username: process.env.YUQUE_USERNAME,
      password: process.env.YUQUE_PASSWORD,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      onlyPublic: false,
      onlyPublished: true,
    },
    notion: {
      token: "secret_*oFzC83eOnW"
,
      databaseId: "aa5f58600b34*492"
,
      filter: false, // {property: 'status', select: {equals: 'Published'}}
    },
    feishu: {
      type: 'space',
      wikiId: process.env.FEISHU_WIKI_ID,
      folderToken: process.env.FEISHU_FOLDER_TOKEN,
      appId: process.env.FEISHU_APP_ID,
      appSecret: process.env.FEISHU_APP_SECRET,
    },
    flowus: {
      tablePageId: process.env.FLOWUS_TABLE_PAGE_ID,
      filter: false, // {property: 'status',value: '已发布'}
    },
    wolai: {
      token: process.env.WOLAI_TOKEN,
      pageId: process.env.WOLAI_PAGE_ID,
    }
  },
  deploy: {
    platform: 'wordpress',
    local: {
      outputDir: './docs',
      filename: 'title',
      format: 'markdown',
    },
    halo: {
      endpoint: process.env.HALO_ENDPOINT,
      token: process.env.HALO_TOKEN,
      policyName: process.env.HALO_POLICY_NAME,
      rowType: 'html',
      needUploadImage: true,
    },
    confluence: {
      user: process.env.CONFLUENCE_USER,
      password: process.env.WORDPRESS_PASSWORD,
      endpoint: process.env.WORDPRESS_ENDPOINT,
      spaceKey: process.env.CONFLUENCE_SPACE_KEY,
      rootPageId: process.env.CONFLUENCE_ROOT_PAGE_ID, // 可选
    },
    wordpress: {
      username: "ag*",
      password: "*",
      endpoint: "http://*/wp-json",
    }
  },
  image: {
    enable: false,
    platform: 'local',
    local: {
      outputDir: './docs/images',
      prefixKey: '/images',
      pathFollowDoc: false,
    },
    oss: {
      secretId: process.env.OSS_SECRET_ID,
      secretKey: process.env.OSS_SECRET_KEY,
      bucket: process.env.OSS_BUCKET,
      region: process.env.OSS_REGION,
      host: process.env.OSS_HOST,
      prefixKey: '',
    },
    cos: {
      secretId: process.env.COS_SECRET_ID,
      secretKey: process.env.COS_SECRET_KEY,
      bucket: process.env.COS_BUCKET,
      region: process.env.COS_REGION,
      host: process.env.COS_HOST,
      prefixKey: '',
    },
    qiniu: {
      secretId: process.env.QINIU_SECRET_ID,
      secretKey: process.env.QINIU_SECRET_KEY,
      bucket: process.env.QINIU_BUCKET,
      region: process.env.QINIU_REGION,
      host: process.env.QINIU_HOST,
      prefixKey: '',
    },
    upyun: {
      user: process.env.UPYUN_USER,
      password: process.env.UPYUN_PASSWORD,
      bucket: process.env.UPYUN_BUCKET,
      host: process.env.UPYUN_HOST,
      prefixKey: '',
    },
    github: {
      token: process.env.GITHUB_TOKEN,
      user: process.env.ELOG_GITHUB_USER,
      repo: process.env.ELOG_GITHUB_REPO,
      prefixKey: '',
    }
  }
}

发生了什么?

使用了nodejs 20.15
这个警告消息 (node:737361) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated 是 Node.js 发出的,表示 OutgoingMessage.prototype._headers 属性已经被弃用。这个属性用于访问 HTTP 响应头信息,但在较新的 Node.js 版本中已经不推荐使用,并且可能会在未来的版本中被移除。
已下载数 46
正在部署到 WordPress...
(node:782112) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated
(Use node --trace-deprecation ... to show where the warning was created)

Elog错误日志

已下载数  46
正在部署到 WordPress...
(node:782112) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated
(Use `node --trace-deprecation ...` to show where the warning was created)
部署到 WordPress 失败: Cannot read properties of undefined (reading 'rendered')

附加信息

来自gpt:更新代码以使用推荐的替代方法:

使用 OutgoingMessage.getHeaders() 来替代访问 _headers 属性。
检查和更新依赖项:

确保你的项目依赖项(如 Express 或其他 HTTP 相关库)已经更新到最新版本,这些库可能已经修复了对 _headers 属性的使用。
使用 npm outdated 检查哪些依赖项是过时的,然后运行 npm update 进行更新。

建议: 增加快速列出文章发布状态的命令

我并不想发布草稿, 但语雀又没有明确的提示哪些文章已发布或未发布, 所以需要一个方式来快速查看文章状态

也许可以通过一个命令将文章状态输出; 也许可以在语雀文章标题上加一个前缀表示文章状态;

建议:提供开箱即用的部署支持,将会吸引更多新用户尝试【已提供开箱配置,详情见 readme 开箱配置示例】

虽然通过一些配置可做到 Notion编辑->自动拉取->自动更新,但是这个配置的过程依然会耗费一些时间,以及有一定的学习门槛。这阻止了很多想先浅尝一下的用户。

可以参考NotionNext的配置方式:直接 github fork 模版仓库->连接到一个新的 Vercel,配置一下id到环境变量即可直接使用。只需点两三下按钮,非常快速且方便。

关于语雀与halo同步时封面图片链接未被替换的问题

你当前使用的Elog版本

0.14.0

Elog配置文件

发生了什么?

语雀的文档可以设置封面图片
image
image
在同步到halo平台的时候,封面图片仍然是语雀的连接
image
这导致图片不显示。

Elog错误日志

No response

附加信息

No response

[特性]求支持同步源文件检查

目前我的博客部署环境在K8s中,容器启动时会自动从git下载hexo博客源码,然后使用elog同步语雀文档,然后执行hexo生成内容并部署网站。由于语雀webhook的缺失,导致整个流程的触发是缺失的。因此有以下一个想法:
启动一个后台进程,定时的去使用类似elog check的功能,对比缓存文件检查文档是否有更新,如果有,则重新部署容器完成博客的重新部署。这样,整个环境的搭建和运行就只有K8s和语雀服务,架构上更简洁。

求评估下这个elog check的特性是否可以支持?

Support for Typecho blogging platform

你当前使用的Elog版本

v0.13.3

描述一下此特性

Hello Elog developers, I am very happy to find such an excellent project that makes it easier for everyone to write blogs. However, I found that this project currently does not support publishing articles to typecho, a popular blogging platform.

Typecho is a lightweight blogging platform similar to wordpress. It has a complete documentation and plug-in mechanism and should be well connected with the elog project.

I hope to add new features in elog to output markdown documents to the typecho blog. Thanks in advance!

附加信息

No response

期待更多的template

你当前使用的Elog版本

0.14.0

描述一下此特性

RT,期待更多模板。
本人期望的工作流是 语雀 + hexo,模板是语雀 +vitepress。
本来仿照一个已经成熟的配置:https://github.com/lidelong-0201/next-yuque-elog ,但是无奈尝试后也没有成功。

感觉配置还是稍显复杂和绕
模板丰富后可能有利于后续推广。

附加信息

此外,本人不是前端工作者,有可能是知识欠缺导致。
如果作者没有兴趣开发 语雀 + hexo 的模板,请随意关闭此issue

同步flowus报错

你当前使用的Elog版本

0.13.0

Elog配置文件

module.exports = {
    write: {
        platform: 'flowus',
        yuque: {
            token: process.env.YUQUE_TOKEN,
            login: process.env.YUQUE_LOGIN,
            repo: process.env.YUQUE_REPO,
            onlyPublic: false,
            onlyPublished: true,
        },
        'yuque-pwd': {
            username: process.env.YUQUE_USERNAME,
            password: process.env.YUQUE_PASSWORD,
            login: process.env.YUQUE_LOGIN,
            repo: process.env.YUQUE_REPO,
            onlyPublic: false,
            onlyPublished: true,
        },
        notion: {
            token: process.env.NOTION_TOKEN,
            databaseId: process.env.NOTION_DATABASE_ID,
            filter: false, // {property: 'status', select: {equals: '已发布'}}
            catalog: true,
        },
        feishu: {
            type: 'space',
            wikiId: process.env.FEISHU_WIKI_ID,
            folderToken: process.env.FEISHU_FOLDER_TOKEN,
            appId: process.env.FEISHU_APP_ID,
            appSecret: process.env.FEISHU_APP_SECRET,
        },
        flowus: {
            // tablePageId: process.env.FLOWUS_TABLE_PAGE_ID,
            // 用此id报错,用其他账号的tablePageId是可以的
            tablePageId: '43928f20-296b-4db9-b7bb-af11fbb27e85',
            filter: {property: 'status', value: '已发布'},
            catalog: true,
        }
    },
    deploy: {
        platform: 'local',
        local: {
            outputDir: './docs/mds',
            // filename: 'urlname',
            filename: 'title',
            format: 'markdown',
            catalog: true,
            frontMatter: {
                enable: true,
                exclude: ['cover'] // 文档属性排除 cover 字段
            }
        },
        halo: {
            endpoint: process.env.HALO_ENDPOINT,
            token: process.env.HALO_TOKEN,
            policyName: process.env.HALO_POLICY_NAME,
            rowType: 'html',
            needUploadImage: true,
        },
        confluence: {
            user: process.env.CONFLUENCE_USER,
            password: process.env.WORDPRESS_PASSWORD,
            endpoint: process.env.WORDPRESS_ENDPOINT,
            spaceKey: process.env.CONFLUENCE_SPACE_KEY,
            rootPageId: process.env.CONFLUENCE_ROOT_PAGE_ID, // 可选
        },
        wordpress: {
            username: process.env.WORDPRESS_USERNAME,
            password: process.env.WORDPRESS_PASSWORD,
            endpoint: process.env.WORDPRESS_ENDPOINT,
        }
    },
    image: {
        enable: true,
        platform: 'local',
        local: {
            outputDir: './docs/public/images',
            prefixKey: '/images',
            pathFollowDoc: false,
        },
        oss: {
            secretId: process.env.OSS_SECRET_ID,
            secretKey: process.env.OSS_SECRET_KEY,
            bucket: process.env.OSS_BUCKET,
            region: process.env.OSS_REGION,
            host: process.env.OSS_HOST,
            prefixKey: '',
        },
        cos: {
            secretId: process.env.COS_SECRET_ID,
            secretKey: process.env.COS_SECRET_KEY,
            bucket: process.env.COS_BUCKET,
            region: process.env.COS_REGION,
            host: process.env.COS_HOST,
            prefixKey: '',
        },
        qiniu: {
            secretId: process.env.QINIU_SECRET_ID,
            secretKey: process.env.QINIU_SECRET_KEY,
            bucket: process.env.QINIU_BUCKET,
            region: process.env.QINIU_REGION,
            host: process.env.QINIU_HOST,
            prefixKey: '',
        },
        upyun: {
            user: process.env.UPYUN_USER,
            password: process.env.UPYUN_PASSWORD,
            bucket: process.env.UPYUN_BUCKET,
            host: process.env.UPYUN_HOST,
            prefixKey: '',
        },
        github: {
            user: process.env.GITHUB_USER,
            token: process.env.GITHUB_TOKEN,
            repo: process.env.GITHUB_REPO,
            prefixKey: '',
        }
    }
}

发生了什么?

image

Elog错误日志

No response

附加信息

No response

Elog最佳实践征集

最佳实践征集,以下条件 3 选 2 即可,正常的我会手动添加到 README,你也可以手动 PR 来添加

  • 公开的配置 Elog 的 Github 仓库地址
  • 个人网站地址
  • 使用/配置 Elog的实践文章

点赞

文档写得真好,加油加油

测试 Issues

你当前使用的Elog版本

0.13.0-beta.4

Elog配置文件

module.exports = {
  write: {
    platform: 'notion',
    notion: {
      token: process.env.NOTION_TOKEN,
      databaseId: process.env.NOTION_DATABASE_ID,
      filter: { property: 'status', select: { equals: '已发布' }}
    }
  },
  deploy: {
    platform: 'local',
    local: {
      outputDir: './source/_posts',
      filename: 'title',
      format: 'markdown',
      catalog: false,
      frontMatter: {
        enable: true,
        include: ['categories', 'tags', 'title', 'date', 'updated', 'permalink', 'cover', 'description'],
      },
      formatExt: './format-image.js',
    }
  },
  image: {
    enable: true,
    platform: 'local',
    local: {
      outputDir: './source/images',
      prefixKey: '/images'
    }
  },
}

发生了什么?

测试

Elog错误日志

测试

附加信息

测试

删除文章

你当前使用的Elog版本

最新

描述一下此特性

在notion中删除文章,下一次构建时也能删除网站里的文章。

附加信息

No response

在导出Notion文章时添加了错误的转义符号

你当前使用的Elog版本

0.14.1

Elog配置文件

module.exports = {
  write: {
    platform: 'notion',
    notion: {
      token: process.env.NOTION_TOKEN,
      databaseId: process.env.NOTION_DATABASE_ID,
      filter:  {property: 'status', select: {equals: '已发布'}},
    }
  },
  deploy: {
    platform: 'local',
    local: {
      outputDir: './src/content/blog',
      filename: 'title',
      format: 'matter-markdown',
      frontMatter: {
        enable : true,
        timeFormat: true, 
        include: ['title', 'pubDatetime', 'description', 'tags'],
      },
      formatExt: 'elog.format.js'
    }
  },
  image: {
    enable: true,
    platform: 'local',
    local: {
      outputDir: './public/images',
      prefixKey: '/images',
      pathFollowDoc: false,
    }
  }
}

发生了什么?

在导出https://polydactyl-kidney-018.notion.site/SpikingJelly-An-open-source-machine-learning-infrastructure-platform-for-spike-based-intelligence-57439434875e4df29c1a330598f18976
这个页面的文章时,elog在大部分公式中错误地添加了反斜杠(如大部分公式中的[]、_前,删除了公式中的\换行或修改为\0)。

Elog错误日志

No response

附加信息

No response

语雀文档不会删除

你当前使用的Elog版本

0.14

Elog配置文件

语雀文档不会删除未使用的文件夹以及文件,会造成冗余的内容

发生了什么?

语雀文档不会删除未使用的文件夹以及文件,会造成冗余的内容

Elog错误日志

语雀文档不会删除未使用的文件夹以及文件,会造成冗余的内容

附加信息

语雀文档不会删除未使用的文件夹以及文件,会造成冗余的内容

增加友好信息提示:对飞书配置错误添加友好提示

你当前使用的Elog版本

0.14.2

描述一下此特性

.nvmd\versions\20.15.0\node_modules\@elog\cli\node_modules\@feishux\api\dist\api.js:198
result.push(...res.items);

TypeError: Cannot read properties of undefined (reading 'items')

粗心大意没给群聊设为协作者,也没给群聊添加为成员/管理员,出现了这个错误,建议加个out.err()友好提示🐱

附加信息

No response

语雀导出文档数量统计错误

你当前使用的Elog版本

0.12.4

Elog配置文件

No response

发生了什么?

image 如图所示,elog统计出来的文档数量和语雀知识库中的实际数量不一致。 我起初怀疑是yuque的设定的文档导出上限,但是在语雀找了一圈确实没有上限设置。麻烦作者看下这个问题吧 image

Elog错误日志

No response

附加信息

No response

github图床问题

你当前使用的Elog版本

0.13.1

Elog配置文件

上传失败:a4e6d6bb79f6f4f5af7e31d115f6144b.jpeg 请检查图床配置
请求失败  unable to verify the first certificate, PUT https://api.github.com/repos/xinkeji/hexo/contents/71c3ca0f6d6211c
          b427f50ae354471a0.jpeg -1 (connected: true, keepalive socket: false, socketHandledRequests: 1, socketHandledRe
          sponses: 0)
          headers: {}

发生了什么?

已经配置好github变量之后还是上传不了,怎么办呀

Elog错误日志

module.exports = {
  write: {
    platform: 'yuque-pwd',
    "yuque-pwd": {
      username: process.env.YUQUE_USERNAME,
      password: process.env.YUQUE_PWD,
      host: '',
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      linebreak: false
    }
  },
  deploy: {
    platform: "local",
    local: {
      outputDir: "./source/_posts/语雀/",
      filename: "title",
      format: "matter-markdown",
      catalog: true,
      formatExt: "",
    }
  },
  image: {
  enable: true,
  platform: 'github',
  github: {
    user: process.env.LGH_USER,
    token: process.env.GITHUB_TOKEN,
    repo: process.env.LGH_REPO,
    prefixKey: '',
    host: 'cdn.jsdelivr.net'
  
    }
  },
}

附加信息

1

Error: Client network socket disconnected before secure TLS connection was established

C:\WorkSpace\elog>elog sync -e .elog.env
环境变量 已指定读取env文件为:C:\WorkSpace\elog.elog.env
全量更新 未获取到缓存,将全量更新文档
正在获取文档列表,请稍等...

node:internal/process/promises:288
            triggerUncaughtException(err, true /* fromPromise */);
            ^

Error: Client network socket disconnected before secure TLS connection was established
    at connResetException (node:internal/errors:720:14)
    at TLSSocket.onConnectEnd (node:_tls_wrap:1655:19)
    at TLSSocket.emit (node:events:529:35)
    at endReadableNT (node:internal/streams/readable:1368:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  code: 'ECONNRESET',
  path: '/api/v2/repos/z*n/ot/toc',
  host: 'www.yuque.com',
  port: 443,
  localAddress: undefined,
  name: 'ResponseError',
  data: undefined,
  status: -1,
  headers: {},
  res: {
    status: -1,
    statusCode: -1,
    statusMessage: null,
    headers: {},
    size: 0,
    aborted: false,
    rt: 244,
    keepAliveSocket: false,
    data: undefined,
    requestUrls: [ 'https://www.yuque.com/api/v2/repos/z*n/ot/toc' ],
    timing: null,
    remoteAddress: '139.224.214.226',
    remotePort: 443,
    socketHandledRequests: 1,
    socketHandledResponses: 0
  }
}

Node.js v18.18.0

同步飞书知识库时 “执行TypeScript脚本 下载出错: Cannot read properties of undefined (reading 'elements')”

你当前使用的Elog版本

0.14.1

Elog配置文件

module.exports = {
  write: {
    platform: 'feishu',
    yuque: {
      token: process.env.YUQUE_TOKEN,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      onlyPublic: false,
      onlyPublished: true,
    },
    'yuque-pwd': {
      username: process.env.YUQUE_USERNAME,
      password: process.env.YUQUE_PASSWORD,
      login: process.env.YUQUE_LOGIN,
      repo: process.env.YUQUE_REPO,
      onlyPublic: false,
      onlyPublished: true,
    },
    notion: {
      token: process.env.NOTION_TOKEN,
      databaseId: process.env.NOTION_DATABASE_ID,
      filter: false, // {property: 'status', select: {equals: '已发布'}}
    },
    feishu: {
      type: 'wiki',
      wikiId: process.env.FEISHU_WIKI_ID,
      folderToken: process.env.FEISHU_FOLDER_TOKEN,
      appId: process.env.FEISHU_APP_ID,
      appSecret: process.env.FEISHU_APP_SECRET,
      disableParentDoc:true
    },
    flowus: {
      tablePageId: process.env.FLOWUS_TABLE_PAGE_ID,
      filter: false, // {property: 'status',value: '已发布'}
    },
    wolai: {
      token: process.env.WOLAI_TOKEN,
      pageId: process.env.WOLAI_PAGE_ID,
    }
  },
  deploy: {
    platform: 'local',
    local: {
      outputDir: './docs',
      filename: 'title',
      format: 'markdown',
    },
    halo: {
      endpoint: process.env.HALO_ENDPOINT,
      token: process.env.HALO_TOKEN,
      policyName: process.env.HALO_POLICY_NAME,
      rowType: 'html',
      needUploadImage: true,
    },
    confluence: {
      user: process.env.CONFLUENCE_USER,
      password: process.env.WORDPRESS_PASSWORD,
      endpoint: process.env.WORDPRESS_ENDPOINT,
      spaceKey: process.env.CONFLUENCE_SPACE_KEY,
      rootPageId: process.env.CONFLUENCE_ROOT_PAGE_ID, // 可选
    },
    wordpress: {
      username: process.env.WORDPRESS_USERNAME,
      password: process.env.WORDPRESS_PASSWORD,
      endpoint: process.env.WORDPRESS_ENDPOINT,
    }
  },
  image: {
    enable: true,
    platform: 'local',
    local: {
      outputDir: './docs/images',
      prefixKey: '/images',
      pathFollowDoc: true,
    },
    oss: {
      secretId: process.env.OSS_SECRET_ID,
      secretKey: process.env.OSS_SECRET_KEY,
      bucket: process.env.OSS_BUCKET,
      region: process.env.OSS_REGION,
      host: process.env.OSS_HOST,
      prefixKey: '',
    },
    cos: {
      secretId: process.env.COS_SECRET_ID,
      secretKey: process.env.COS_SECRET_KEY,
      bucket: process.env.COS_BUCKET,
      region: process.env.COS_REGION,
      host: process.env.COS_HOST,
      prefixKey: '',
    },
    qiniu: {
      secretId: process.env.QINIU_SECRET_ID,
      secretKey: process.env.QINIU_SECRET_KEY,
      bucket: process.env.QINIU_BUCKET,
      region: process.env.QINIU_REGION,
      host: process.env.QINIU_HOST,
      prefixKey: '',
    },
    upyun: {
      user: process.env.UPYUN_USER,
      password: process.env.UPYUN_PASSWORD,
      bucket: process.env.UPYUN_BUCKET,
      host: process.env.UPYUN_HOST,
      prefixKey: '',
    },
    github: {
      token: process.env.GITHUB_TOKEN,
      user: process.env.ELOG_GITHUB_USER,
      repo: process.env.ELOG_GITHUB_REPO,
      prefixKey: '',
    }
  }
}

发生了什么?

使用以下命令 执行同步时 ,报错
npx @elog/cli sync --config elog.config.js --env .elog.env --disable-cache

Elog错误日志

执行TypeScript脚本 下载出错: Cannot read properties of undefined (reading 'elements')
初始化一个TypeScript的Hello World项目 下载出错: Cannot read properties of undefined (reading 'elements')

附加信息

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.