Giter Site home page Giter Site logo

letttgaco / elog Goto Github PK

View Code? Open in Web Editor NEW
1.1K 7.0 48.0 3.31 MB

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

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

License: MIT License

JavaScript 3.45% Shell 0.22% TypeScript 96.33%
blog hexo hugo notion vitepress yuque confluence docusaurus docz flowus

elog's Introduction

Hello, I'm 1874.

a self-taught passionate Frontend developer from China.

About me

  • 💼 Frontend Engineer at Mingyuanyun in ShenZhen, China 🇨🇳

LetTTGACO's github view count stars followers

LetTTGACO's github stats Top Langs

languages and tools

Github Streaks

LetTTGACO

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

同步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版本

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

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

图床功能和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

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

你当前使用的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

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

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

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

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

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

语雀账号密码模式手写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

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

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

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

测试 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

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

Elog最佳实践征集

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

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

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

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

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

点赞

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

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

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.