ArticleSync - 多平台文章同步插件

ArticleSync 是一个浏览器扩展,帮助用户轻松将文章同步发布到多个社交平台。支持将文章从本地草稿发布到各大平台,如知乎、Bilibili 等。它提供了一站式解决方案,让你在不同的社交媒体平台上同步文章变得简单高效。

基于浏览器插件模式,自动检测本地登录账号,杜绝账号泄露,环境异常等风险

基于 chrome Manifest v3 浏览器扩展标准开发,注意内核版本要求

背景

你也知道,我这又一下子多了好几个博客平台,和一大堆社交网站,如果我想让他们之间都能保持活跃的更新怎么办.(证明我还活着) 还能一键盗文章

我最常更新的就是我自己的小破站了,但是其他平台,我可能就只是偶尔更新一下,但是又不想每次都去手动发布,所以我就想,能不能写一个插件,自动检测我本地登录的账号,然后自动发布呢.

正所谓,自己动手丰衣足食.鼓捣了好几天.勉强算是能用的样子,剩下的就有空在更新了.除非你给我钱

插件还有很多不完善的地方,我也没有多平台正式在生产环境中实测,如遇报错,实属正常,那就提交issue吧,或者自己改改,改好了再提交PR吧.嘻嘻~

为了不影响我说话,截图放最后了

还有,开源不易,来个star吧,嘿嘿嘿~

本来想加一点私货进去的,自动关注我的社区平台

功能特色

  • 多平台支持:支持知乎、Bilibili等各大主流平台,支持自建开源CMS系统。
  • 状态跟踪:在插件界面中查看文章的同步状态.
  • 账号管理:可查看与插件绑定的各平台账号信息。
  • 可扩展性强:支持开发者通过适配器模式轻松扩展到更多平台。
  • 安全可靠:插件基于浏览器扩展模式,确保账号安全,避免账号泄露等风险。

Todo List

  • 独立文章编辑器
  • 图片一键同步
  • markdown与HTML互转
  • 第三方图床系统
  • 多账号管理
  • 多系统客户端版本
  • 一键ai总结
  • 视频同步
  • 标签,分类的支持
  • 更加友好的错误处理
  • 更多平台的接入

支持渠道

媒体 媒体行业 状态 网址 支持类型 更新时间
哔哩哔哩 主流自媒体 已支持 https://bilibili.com/ HTML 2024/10/13
知乎 主流自媒体 已支持 https://www.zhihu.com/ HTML 2024/10/13
博客园 博客 已支持 https://cnblogs.com/ HTML 2024/10/14
新浪头条 主流自媒体 已支持 https://weibo.com/ HTML 2024/10/14
emlog 开源CMS 已支持 https://www.emlog.net/ HTML 2024/10/14
WordPress 开源CMS 已支持 https://cn.wordpress.org/ HTML,Markdown 2024/10/14
Discuz 开源CMS 已支持 https://www.discuz.vip/ Markdown,Text 2024/10/15

安装说明

  1. 克隆仓库到本地:

    git clone https://github.com/iAJue/Articlesync.git
  2. 进入项目目录:

    cd articlesync
  3. 安装依赖:

    npm install
  4. 打包项目

    npm run build
  5. 加载插件:

  • 打开 Chrome 浏览器,进入 chrome://extensions/。
  • 启用 开发者模式。
  • 点击 加载已解压的扩展程序,选择 dist/ 文件夹。
  1. 开发

    1. 启动开发环境
    npm run watch-reload
    1. 以配置热更新,每次修改代码后,插件将自动打包,并且 Chrome 会自动重新加载插件。

如何添加一个适配器

  1. src/adapters 目录下创建一个新的适配器文件,例如 PlatformAdapter.js
  2. 继承 BaseAdapter 类,并实现以下方法:
    • getMetaData(): 获取当前页面的元数据。
    • addPost(post): 添加新的文章。
    • editPost(post, post_id): 编辑文章。
    • uploadFile(file): 上传文件。
    • 定义constructor构造函数,设置适配器的版本、类型和名称或其他初始化数据.
       constructor() {
      super();
      this.version = '1.0';
      this.type = 'Twitter';
      this.name = '推特';
      }
  3. src/adapters/adapters.js 中导入并注册新的适配器。

项目结构

├── src
│ ├── adapters # 各平台的适配器
│ │ ├── ZhiHuAdapter.js
│ │ ├── BilibiliAdapter.js
│ ├── contents # 内容脚本
│ ├── background.js # 后台脚本
│ ├── popup # 插件弹窗界面
│ │ ├── popup.js
│ │ ├── popup.html
│ ├── options # 扩展选项页面
│ │ ├── options.js
│ │ ├── options.html
│ ├── dist # 打包后的文件
│ ├── manifest.json # Chrome 插件清单文件
├── webpack.config.js # Webpack 配置文件
├── package.json # 项目配置文件
├── README.md # 项目说明文件
├── .gitignore # Git 忽略文件

贡献指南

欢迎对项目进行贡献!如果你有任何改进意见或想要添加新的平台支持,请遵循以下步骤:

  1. Fork 仓库。
  2. 创建一个新的分支。
  3. 提交你的更改。
  4. 发起一个 Pull Request。

反馈

如果你在使用过程中遇到任何问题或建议,请通过以下方式告诉我们:

  • 提交 Issue

    • BUG

      • 浏览器版本: Chrome 129.0.6668.90
      • 内核版本: 129.0.6668.90
      • 操作系统: Windows 10
      • 插件版本: 1.0.0
      • 复现步骤:
      • 错误描述:
    • 建议
      • 描述:
      • 期望效果:
    • 支持
      • 平台:
      • 网址:
      • 账号: (有最好)
  • Blog:访问 阿珏酱のBlog 留言

投喂

我很可爱,请给我钱!
I am cute, please give me money!

啥?没钱?没事,我也支持虚拟币

钱包地址:0x56949baed7b69b09a1c5539230ba6ffadd0323c3

许可证

Copyright (c) 2024-present, iAJue

本项目遵循 GPL-3.0 许可证。

截图









多平台文章同步浏览器插件 – ArticleSync的更多相关文章

  1. MetaWebLog API — 一个多平台文章同步的思路

    文章选自我的博客:https://blog.ljyngup.com/archives/578.html/ 起因 为了给博客带来流量,我在CSDN,博客园,简书上开通了账号并且把博客里的一些可以发布的文 ...

  2. Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..

    Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid Ap ...

  3. atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o

    atitit. applet 浏览器插件 控件 的环境,开发,提示总结o9o 1. 建立applet:: 1 2. Applet 码 1 3. Applet (awt)跟japplet (swing) ...

  4. chrome浏览器插件启动本地应用程序

    chrome浏览器插件启动本地应用程序 2014-04-20 00:04:30|  分类: 浏览器插件|举报|字号 订阅     下载LOFTER我的照片书  |     chrome的插件开发这里就 ...

  5. mac 下基于firebreath 开发多浏览器支持的浏览器插件

    mac 下基于firebreath 开发多浏览器支持的浏览器插件 首先要区分什么是浏览器扩展和浏览器插件;插件可以像本地程序一样做的更多 一. 关于 firebreath http://www.fir ...

  6. Rest Client(Rest接口调试工具,有保存功配置功能) chrome浏览器插件

    Rest Client(Rest接口调试工具,有保存功配置功能) chrome浏览器插件 下载地址 插件的操作很简单,下面是一些简单的实例. 1.安装 在谷歌应用商城搜索postman,如下图1-1所 ...

  7. 在NPAPI开发火狐浏览器插件在NPAPI插件

    1.插件是什么 插件是一种遵循一定规范的应用程序接口编写出来的程序.插件必须依附于一个宿主程序,为宿主程序提供增强功能.插件的种类有很多,这里主要讨论浏览器插件. IE下利用OLE和COM技术开发的浏 ...

  8. 使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

    web scraper 下载:Web-Scraper_v0.2.0.10 使用 Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬 ...

  9. 基于MFC的ActiveX控件开发教程------------浏览器插件之ActiveX开发

    浏览器插件之ActiveX开发(一) 一般的Web应用对于浏览器插件能不使用的建议尽量不使用,因为其涉及到安全问题以及影响用户安装(或自动下载注册安装)体验问题.在有特殊需求(如涉及数据安全的金融业务 ...

  10. 浏览器指纹 - HTTP cookie 浏览器指纹 欺诈检测 浏览器id hash 浏览器插件信息 canvas 字体信息

    详解浏览器cookie和浏览隐私之间的关系http://www.iefans.net/cookie-yinsi-guanxi/ 详解浏览器cookie和浏览隐私之间的关系 浏览器相关 互联网 2013 ...

随机推荐

  1. 【Vue】07 Webpack Part3 Loader

    Loader是Webpack的核心概念: 除了JS文件以外我们还有CSS,图片,包括一些ES6规范的代码 或者是TypeScript各种前端类型的文件 但是最终必须统一转换成JS文件,Webpack本 ...

  2. 七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)

    教程简介 EasySQLite是一个七天.NET 8操作SQLite入门到实战详细教程(包含选型.开发.发布.部署)! 什么是SQLite? SQLite 是一个软件库,实现了自给自足的.无服务器的. ...

  3. SpringBoot优雅开发REST API最佳实践

    写在前面 博主最近在做一个数据服务的项目,而这个数据服务的核心就是对外暴露的API,值得高兴的这是一个从0开始的项目,所以终于不用受制于"某些历史"因素去续写各种风格的Contro ...

  4. 【线段树合并/树上差分】[P4556 [Vani有约会] 雨天的尾巴 /【模板】线段树合并

    [线段树合并/树上差分]P4556 [Vani有约会] 雨天的尾巴 /[模板]线段树合并 思路 对 \(x,y,lca(u,v),fa_{lca(u,v)}\) 四个点进行树上差分,然后用线段树合并动 ...

  5. AtCoder Beginner Contest 318

    AtCoder Beginner Contest 318 A - Full Moon (atcoder.jp) 以\(M\)为首项,\(P\)为公差,看\(1 \sim N\)里包含了多少项的个数 # ...

  6. 网卡DM9000裸机驱动详解

    一.网卡 1. 概念 网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件.由于其拥有MAC地址,因此属于OSI模型的第2层.它使得用户可以通过电缆或无线相互连接. 每一个网卡都有一个被称 ...

  7. 阿里云 SLS 模糊查询日志

    查询包含test前缀的词 1. 访问 https://sls.console.aliyun.com/lognext/profile 2. 在Project列表中找到对应的sls日志Project 3. ...

  8. Coursera, Big Data 5, Graph Analytics for Big Data, Week 1/2

    Graph表示 1. adjacency matrix最简单的一种表示:行是From 列是To, 这种表示是稀疏矩阵 2. 另一种表示,如下图,很多graph数据库用这种,是的数据库操作更有效率 us ...

  9. 如何使用ChatGPT自带插件

    OpenAI的插件将ChatGPT连接到第三方应用程序.这些插件使ChatGPT能够与开发者定义的API进行交互,增强ChatGPT的能力,并使其能够执行广泛的操作.插件使ChatGPT能够做如下事情 ...

  10. String 的 intern() 方法

    问题: String s1 = "a" + "b"; //创建了几个对象? String s2 = new String("ab"); // ...