{"id":21901346,"url":"https://github.com/patw/factweave","last_synced_at":"2026-04-15T15:31:27.460Z","repository":{"id":217552446,"uuid":"743725139","full_name":"patw/FactWeave","owner":"patw","description":"Facts are all you need!  Blog without writing, blog with just facts.","archived":false,"fork":false,"pushed_at":"2024-11-29T16:38:32.000Z","size":161,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-22T06:17:02.294Z","etag":null,"topics":["embeddings","flask","llm","mongodb-atlas"],"latest_commit_sha":null,"homepage":"https://ai.dungeons.ca","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-15T21:11:09.000Z","updated_at":"2024-11-29T16:38:36.000Z","dependencies_parsed_at":"2024-01-20T02:10:18.414Z","dependency_job_id":"234898fb-237e-46a6-bd66-0a51a5a9a74b","html_url":"https://github.com/patw/FactWeave","commit_stats":null,"previous_names":["patw/factweave"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/patw/FactWeave","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patw%2FFactWeave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patw%2FFactWeave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patw%2FFactWeave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patw%2FFactWeave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patw","download_url":"https://codeload.github.com/patw/FactWeave/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patw%2FFactWeave/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31847538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["embeddings","flask","llm","mongodb-atlas"],"created_at":"2024-11-28T15:13:14.705Z","updated_at":"2026-04-15T15:31:27.439Z","avatar_url":"https://github.com/patw.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FactWeave\n\nFacts are all you need (tm) ... and maybe an LLM, a text embedder, Atlas Mongo and some python!\n\nA CMS for producing a static blog site using Hugo and AI. Stop writing long blog posts yourself and your locally hosted open source LLM to do it.\n\n* Create subjects and facts, and have the LLM convert them into blog posts.  \n* Export the articles to a static site for upload to your hosting platform.\n\n![FactWeave UI Screenshot](images/ui.png)\n![Factweave New Post](images/newpost.png)\n\nExample Site:  https://ai.dungeons.ca\n\n## FactWeave Installation\n\n```\npip install -r requirements.txt\n```\n\nRename the mode.json.sample to model.json.  This file is used to set the prompt format and ban tokens, the default is ChatML format so it should work with most recent models.  Set the llama_endpoint to point to your llama.cpp running in server mode.\n\nAlso rename the embedder.json.sample to embedder.json.  This will be the endpoint URL for your text embedder service.  I highly recommend using https://github.com/patw/InstructorVec  It's easy to operate and will work out of the box for this application.\n\nFinally rename sample.env to .env and fill in your Atlas connection string and Hugo content/posts path!\n\n### Semantic Search\n\nIf you want to enable search, write a blog post first and then add the following search index to your Atlas Search.  This won't work if the ```posts``` collections haven't been created by the app yet.\n\n```\n{\n  \"mappings\": {\n    \"dynamic\": false,\n    \"fields\": {\n      \"fact_embedding\": [\n        {\n          \"type\": \"knnVector\",\n          \"dimensions\": 768,\n          \"similarity\": \"cosine\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Setting up the Text Embedder\n\nI built this app using https://github.com/patw/InstructorVec however you could modify the source to use Mistral.ai or OpenAI embedding.  Be sure to modify the vector search indexes to use the proper number of dimensions.  \n\n### Downloading an LLM model\n\nFollow the instructions for llama.cpp or ollama for downloading and running models in server mode.\n\n## Hugo Configuration\n\n* Download and install Hugo from https://gohugo.io/ \n* Create a site using hugo new \u003csite\u003e\n* Edit your hugo.toml to have a proper theme and site name\n* Edit your content/about.md to have an about page\n* Make note of your content/posts directory so you can configure your .env file to point to it (CONTENT variable)\n* Build some automation to get hugo to regen the site and upload to your hosting platform!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatw%2Ffactweave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatw%2Ffactweave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatw%2Ffactweave/lists"}